From e9f1a4aa993560c7248612af4907e3afb48c2dd0 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 23:55:19 +0000 Subject: [PATCH 1/3] Add CI workflows for building and running the example app Co-Authored-By: rlamb@launchdarkly.com --- .github/workflows/build.yml | 32 ++++++++++++++++ .github/workflows/run.yml | 76 +++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/run.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..4862042 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,32 @@ +name: Build + +on: + push: + branches: [main] + paths-ignore: + - '**.md' + pull_request: + branches: [main] + paths-ignore: + - '**.md' + +jobs: + build: + runs-on: ubuntu-22.04 + steps: + # https://github.com/actions/checkout/releases/tag/v4.2.2 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + # https://github.com/actions/setup-java/releases/tag/v4.7.1 + - name: Setup Java + uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 + with: + distribution: temurin + java-version: 17 + cache: 'gradle' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew assembleDebug diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml new file mode 100644 index 0000000..82a5816 --- /dev/null +++ b/.github/workflows/run.yml @@ -0,0 +1,76 @@ +name: Run + +on: + push: + branches: [main] + paths-ignore: + - '**.md' + pull_request: + branches: [main] + paths-ignore: + - '**.md' + +jobs: + run: + runs-on: ubuntu-22.04 + permissions: + id-token: write + contents: read + steps: + # https://github.com/actions/checkout/releases/tag/v4.2.2 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + # https://github.com/launchdarkly/gh-actions/releases/tag/release-secrets-v1.2.0 + - uses: launchdarkly/gh-actions/actions/release-secrets@bbbbbda684f500766264e7fe327668094ba83d1c # release-secrets-v1.2.0 + name: 'Get mobile key and flag key' + with: + aws_assume_role: ${{ vars.AWS_ROLE_ARN }} + ssm_parameter_pairs: '/sdk/common/hello-apps/mobile-key = LAUNCHDARKLY_MOBILE_KEY, + /sdk/common/hello-apps/boolean-flag-key = LAUNCHDARKLY_FLAG_KEY' + + - name: Configure SDK mobile key + run: | + sed -i "s/mobile-key-from-launch-darkly-website/$LAUNCHDARKLY_MOBILE_KEY/" app/src/main/java/com/launchdarkly/hello_android/MainApplication.java + + - name: Configure feature flag key + run: | + sed -i "s/my-boolean-flag/$LAUNCHDARKLY_FLAG_KEY/" app/src/main/java/com/launchdarkly/hello_android/MainActivity.java + + # https://github.com/actions/setup-java/releases/tag/v4.7.1 + - name: Setup Java + uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 + with: + distribution: temurin + java-version: 17 + cache: 'gradle' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build debug APK + run: ./gradlew assembleDebug + + - name: Enable KVM group perms (for performance) + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + + # https://github.com/jlumbroso/free-disk-space/releases/tag/v1.3.1 + - name: Free disk space + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + with: + android: false + large-packages: false + + # https://github.com/reactivecircus/android-emulator-runner/releases/tag/v2.34.0 + - name: Run on emulator + uses: reactivecircus/android-emulator-runner@324029e2f414c084d8b15ba075288885e74aef9c # v2.34.0 + with: + api-level: 29 + arch: x86_64 + script: | + adb install app/build/outputs/apk/debug/app-debug.apk + adb shell am start -n com.launchdarkly.hello_android/.MainActivity + sleep 15 + adb exec-out uiautomator dump /dev/tty | grep -oi 'Feature flag.*is true' From 7061800e84429e1e3133b687a092652b553dd540 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 23:57:33 +0000 Subject: [PATCH 2/3] Fix: downgrade Java from 17 to 11 for Gradle 6.7 compatibility Co-Authored-By: rlamb@launchdarkly.com --- .github/workflows/build.yml | 2 +- .github/workflows/run.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4862042..57bd914 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 with: distribution: temurin - java-version: 17 + java-version: 11 cache: 'gradle' - name: Grant execute permission for gradlew diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml index 82a5816..7762427 100644 --- a/.github/workflows/run.yml +++ b/.github/workflows/run.yml @@ -41,7 +41,7 @@ jobs: uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 with: distribution: temurin - java-version: 17 + java-version: 11 cache: 'gradle' - name: Grant execute permission for gradlew From d4f9a9371b2252aff58ac705595e01de1c7214c4 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 4 Mar 2026 00:04:36 +0000 Subject: [PATCH 3/3] Fix run workflow: targeted sed replacement and increased sleep time Co-Authored-By: rlamb@launchdarkly.com --- .github/workflows/run.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml index 7762427..fb4ce39 100644 --- a/.github/workflows/run.yml +++ b/.github/workflows/run.yml @@ -34,7 +34,7 @@ jobs: - name: Configure feature flag key run: | - sed -i "s/my-boolean-flag/$LAUNCHDARKLY_FLAG_KEY/" app/src/main/java/com/launchdarkly/hello_android/MainActivity.java + sed -i '0,/my-boolean-flag/{s/my-boolean-flag/'"$LAUNCHDARKLY_FLAG_KEY"'/}' app/src/main/java/com/launchdarkly/hello_android/MainActivity.java # https://github.com/actions/setup-java/releases/tag/v4.7.1 - name: Setup Java @@ -72,5 +72,7 @@ jobs: script: | adb install app/build/outputs/apk/debug/app-debug.apk adb shell am start -n com.launchdarkly.hello_android/.MainActivity - sleep 15 - adb exec-out uiautomator dump /dev/tty | grep -oi 'Feature flag.*is true' + sleep 30 + adb exec-out uiautomator dump /dev/tty > /tmp/uidump.xml + cat /tmp/uidump.xml + grep -oi 'Feature flag.*is true' /tmp/uidump.xml