diff --git a/.github/workflows/auto-build.yml b/.github/workflows/auto-build.yml index ff1104b..b55639a 100644 --- a/.github/workflows/auto-build.yml +++ b/.github/workflows/auto-build.yml @@ -136,3 +136,58 @@ jobs: prerelease: ${{ github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/tags/v') }} generate_release_notes: true files: release-artifacts/**/* + + build-android: + name: android-debug + runs-on: ubuntu-latest + defaults: + run: + working-directory: opennow-stable + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + cache-dependency-path: "**/package-lock.json" + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + + - name: Install dependencies + run: npm ci --prefer-offline --no-audit --progress=false + + - name: Build web assets + run: npm run build + + - name: Sync Capacitor Android project + run: npx cap sync android + + - name: Install Android SDK platform 36 + run: | + yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager "platforms;android-36" "build-tools;35.0.0" || \ + yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platforms;android-36" "build-tools;35.0.0" + + - name: Create local.properties + run: echo "sdk.dir=$ANDROID_HOME" > android/local.properties + + - name: Make gradlew executable + run: chmod +x android/gradlew + + - name: Build debug APK + run: ./gradlew assembleDebug --no-daemon + working-directory: opennow-stable/android + + - name: Upload debug APK + uses: actions/upload-artifact@v4 + with: + name: opennow-android-debug + path: opennow-stable/android/app/build/outputs/apk/debug/*.apk + if-no-files-found: error diff --git a/opennow-stable/android/app/build.gradle b/opennow-stable/android/app/build.gradle index 68c06a0..a79f363 100644 --- a/opennow-stable/android/app/build.gradle +++ b/opennow-stable/android/app/build.gradle @@ -1,7 +1,3 @@ -def keystorePropertiesFile = file("D:\\Projects\\gfnclient\\keystore.properties") -def keystoreProperties = new Properties() -keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) - apply plugin: 'com.android.application' apply plugin: 'kotlin-android' @@ -19,19 +15,31 @@ android { ignoreAssetsPattern = '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' } } - signingConfigs { - release { - storeFile file(keystoreProperties['RELEASE_STORE_FILE']) - storePassword keystoreProperties['RELEASE_STORE_PASSWORD'] - keyAlias keystoreProperties['RELEASE_KEY_ALIAS'] - keyPassword keystoreProperties['RELEASE_KEY_PASSWORD'] + def keystorePropertiesFile = rootProject.file("keystore.properties") + if (keystorePropertiesFile.exists()) { + def keystoreProperties = new Properties() + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) + signingConfigs { + release { + storeFile file(keystoreProperties['RELEASE_STORE_FILE']) + storePassword keystoreProperties['RELEASE_STORE_PASSWORD'] + keyAlias keystoreProperties['RELEASE_KEY_ALIAS'] + keyPassword keystoreProperties['RELEASE_KEY_PASSWORD'] + } } - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.release + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + } else { + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } } } }