diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 95500f3cd..67333d534 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,6 @@ jobs: - uses: actions/checkout@v2 with: submodules: recursive - - run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV - run: cp jni/deltachat-core-rust/rust-toolchain . - uses: actions-rs/toolchain@v1 - uses: Swatinem/rust-cache@v1 @@ -49,37 +48,20 @@ jobs: ./scripts/install-toolchains.sh && ./ndk-make.sh - name: Build APK - run: ./gradlew --no-daemon assembleGplayRelease + run: | + mkdir -p ~/.gradle + echo -n ${{ secrets.SIGNING_KEY }} | base64 -d >> ~/app.keystore + echo "DC_RELEASE_STORE_FILE=$HOME/app.keystore" >> ~/.gradle/gradle.properties + echo "DC_RELEASE_STORE_PASSWORD=${{ secrets.KEY_STORE_PASSWORD }}" >> ~/.gradle/gradle.properties + echo "DC_RELEASE_KEY_ALIAS=${{ secrets.ALIAS }}" >> ~/.gradle/gradle.properties + echo "DC_RELEASE_KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}" >> ~/.gradle/gradle.properties + ./gradlew --no-daemon assembleGplayRelease - - name: Sign APK - uses: r0adkll/sign-android-release@v1 - # ID used to access action output - id: sign_app + - name: Release + uses: softprops/action-gh-release@v1 with: - releaseDirectory: build/outputs/apk/gplay/release - signingKeyBase64: ${{ secrets.SIGNING_KEY }} - alias: ${{ secrets.ALIAS }} - keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} - keyPassword: ${{ secrets.KEY_PASSWORD }} - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: ${{ env.RELEASE_VERSION }} - draft: false - prerelease: false - - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ${{steps.sign_app.outputs.signedReleaseFile}} - asset_name: ${{ env.RELEASE_VERSION }}.apk - asset_content_type: application/zip + token: "${{ secrets.GITHUB_TOKEN }}" + body: "Auto-generated release" + prerelease: ${{ contains(github.event.ref, '-beta') }} + fail_on_unmatched_files: true + files: build/outputs/apk/gplay/release/*.apk diff --git a/build.gradle b/build.gradle index 11d3ecb35..cdb61b563 100644 --- a/build.gradle +++ b/build.gradle @@ -102,7 +102,7 @@ android { defaultConfig { versionCode 621 - versionName "1.26.2" + versionName "1.26.3-beta" applicationId "com.b44t.messenger" multiDexEnabled true @@ -118,10 +118,6 @@ android { buildConfigField "boolean", "DEV_BUILD", "false" buildConfigField "String", "MAP_ACCESS_TOKEN", '"pk.eyJ1IjoiZGVsdGFjaGF0IiwiYSI6ImNqc3c1aWczMzBjejY0M28wZmU0a3cwMzMifQ.ZPTH9dFJaav06RAu4rTYHw"' - ndk { - abiFilters "armeabi-v7a", "arm64-v8a" //, "x86", "x86_64" - } - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" buildConfigField("String", "TEST_ADDR", buildConfigProperty("TEST_ADDR")) @@ -146,12 +142,6 @@ android { signingConfigs { signingConfigs { - debug { - // add `DC_DEBUG_STORE_FILE=/path/to/debug.keystore` to `~/.gradle/gradle.properties` - if(project.hasProperty("DC_DEBUG_STORE_FILE" )) { - storeFile file(DC_DEBUG_STORE_FILE ) - } - } release { // can be defined at `~/.gradle/gradle.properties` or at "Build/Generate signed APK" if(project.hasProperty("DC_RELEASE_STORE_FILE")) { @@ -166,10 +156,6 @@ android { } buildTypes { - debug { - minifyEnabled false - applicationIdSuffix ".beta" - } release { applicationIdSuffix ".lite" // minification and proguard disabled for now. @@ -189,20 +175,33 @@ android { } productFlavors { - fat { - dimension "none" - } gplay { dimension "none" applicationId "chat.delta" } } + splits { + abi { + enable true + reset() + include "armeabi-v7a", "arm64-v8a", "x86", "x86_64" + universalApk true + } + } + + project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9] + android.applicationVariants.all { variant -> - variant.outputs.all { - outputFileName = outputFileName + variant.outputs.all { output -> + output.outputFileName = output.outputFileName .replace("deltalab-android", "deltalab") + .replace("-gplay", "") + .replace("-release", "") .replace(".apk", "-${variant.versionName}.apk") + output.versionCodeOverride = + project.ext.versionCodes.get(output.getFilter( + com.android.build.OutputFile.ABI), 0) * 10000000 + android.defaultConfig.versionCode } } diff --git a/jni/Application.mk b/jni/Application.mk index 074ad3572..a9694f97d 100644 --- a/jni/Application.mk +++ b/jni/Application.mk @@ -1,3 +1,3 @@ APP_PLATFORM := android-16 -APP_ABI := armeabi-v7a arm64-v8a # x86 x86_64 +APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 APP_STL := c++_static diff --git a/ndk-make.sh b/ndk-make.sh index 9e47a63e9..44b7e78a0 100755 --- a/ndk-make.sh +++ b/ndk-make.sh @@ -93,21 +93,21 @@ if test -z $1 || test $1 = arm64-v8a; then cp target/aarch64-linux-android/$RELEASE/libdeltachat.a $jnidir/arm64-v8a fi -# if test -z $1 || test $1 = x86; then -# echo "-- cross compiling to i686-linux-android (x86) --" -# export CFLAGS=-D__ANDROID_API__=16 -# TARGET_CC=i686-linux-android16-clang \ -# cargo +`cat rust-toolchain` build $RELEASEFLAG --target i686-linux-android -p deltachat_ffi -# cp target/i686-linux-android/$RELEASE/libdeltachat.a $jnidir/x86 -# fi +if test -z $1 || test $1 = x86; then + echo "-- cross compiling to i686-linux-android (x86) --" + export CFLAGS=-D__ANDROID_API__=16 + TARGET_CC=i686-linux-android16-clang \ + cargo +`cat rust-toolchain` build $RELEASEFLAG --target i686-linux-android -p deltachat_ffi + cp target/i686-linux-android/$RELEASE/libdeltachat.a $jnidir/x86 +fi -# if test -z $1 || test $1 = x86_64; then -# echo "-- cross compiling to x86_64-linux-android (x86_64) --" -# export CFLAGS=-D__ANDROID_API__=21 -# TARGET_CC=x86_64-linux-android21-clang \ -# cargo +`cat rust-toolchain` build $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi -# cp target/x86_64-linux-android/$RELEASE/libdeltachat.a $jnidir/x86_64 -# fi +if test -z $1 || test $1 = x86_64; then + echo "-- cross compiling to x86_64-linux-android (x86_64) --" + export CFLAGS=-D__ANDROID_API__=21 + TARGET_CC=x86_64-linux-android21-clang \ + cargo +`cat rust-toolchain` build $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi + cp target/x86_64-linux-android/$RELEASE/libdeltachat.a $jnidir/x86_64 +fi echo -- ndk-build -- @@ -123,11 +123,12 @@ if test $1; then else # We are compiling for all architectures: TMP=$(mktemp) - sed "s/APP_ABI.*/APP_ABI := armeabi-v7a arm64-v8a/g" Application.mk >"$TMP" + sed "s/APP_ABI.*/APP_ABI := armeabi-v7a arm64-v8a x86 x86_64/g" Application.mk >"$TMP" mv "$TMP" Application.mk fi cd .. +rm -fr libs/ ndk-build cd jni