diff --git a/.github/workflows/preview-apk.yml b/.github/workflows/preview-apk.yml index ccb478237..e89bf3005 100644 --- a/.github/workflows/preview-apk.yml +++ b/.github/workflows/preview-apk.yml @@ -36,7 +36,7 @@ jobs: - uses: nttld/setup-ndk@v1 id: setup-ndk with: - ndk-version: r21d + ndk-version: r23c - name: Compile core env: diff --git a/Dockerfile b/Dockerfile index 0cf193ead..0de294634 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,18 +23,20 @@ USER $USER ENV ANDROID_SDK_ROOT /home/${USER}/android-sdk RUN mkdir ${ANDROID_SDK_ROOT} WORKDIR $ANDROID_SDK_ROOT -RUN wget -q https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip && \ - unzip commandlinetools-linux-6200805_latest.zip && \ - rm commandlinetools-linux-6200805_latest.zip +RUN wget -q https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip && \ + unzip commandlinetools-linux-8512546_latest.zip && \ + rm commandlinetools-linux-8512546_latest.zip -RUN yes | ${ANDROID_SDK_ROOT}/tools/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} --licenses +RUN yes | ${ANDROID_SDK_ROOT}/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} --licenses -ENV PATH ${PATH}:${ANDROID_SDK_ROOT}/tools/bin +ENV PATH ${PATH}:${ANDROID_SDK_ROOT}/cmdline-tools/bin # Install NDK manually. Other SDK parts are installed automatically by gradle. -RUN sdkmanager --sdk_root=${ANDROID_SDK_ROOT} ndk-bundle +# +# NDK version r23c LTS aka 23.2.8568313 +RUN sdkmanager --sdk_root=${ANDROID_SDK_ROOT} 'ndk;23.2.8568313' -ENV ANDROID_NDK_ROOT ${ANDROID_SDK_ROOT}/ndk-bundle +ENV ANDROID_NDK_ROOT ${ANDROID_SDK_ROOT}/ndk/23.2.8568313 ENV PATH ${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/:${ANDROID_NDK_ROOT} RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none diff --git a/docs/f-droid.md b/docs/f-droid.md index 90144db73..58392f6f6 100644 --- a/docs/f-droid.md +++ b/docs/f-droid.md @@ -1,5 +1,9 @@ # F-Droid - Overview +- + is the Delta Chat page on F-Droid.org, + the F-Droid-app will show similar information. + - contains the description and all meta data shown for Delta Chat on F-Droid; you can also check if F-Droid recognizes a new version here (they show up at the end) diff --git a/ndk-make.sh b/ndk-make.sh index d8f63d228..e87e2a2ea 100755 --- a/ndk-make.sh +++ b/ndk-make.sh @@ -80,11 +80,21 @@ export CARGO_PROFILE_RELEASE_LTO=on RELEASE="release" RELEASEFLAG="--release" +# Work around the bug in the build of Rust standard library. +# It is built against r22b NDK toolchains and still requires -lgcc instead of -lunwind used in newer r23 NDK. +# See discussion at +TMPLIB="$(mktemp -d)" +if test -z "$(find "$ANDROID_NDK_ROOT" -name libgcc.a -print -quit)"; then + # NDK is does not contain libgcc.a, add a linker script to fake it. + echo 'INPUT(-lunwind)' >"$TMPLIB/libgcc.a" +fi + if test -z $1 || test $1 = armeabi-v7a; then echo "-- cross compiling to armv7-linux-androideabi (arm) --" export CFLAGS=-D__ANDROID_API__=16 TARGET_CC=armv7a-linux-androideabi16-clang \ - cargo +`cat rust-toolchain` build $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi + TARGET_AR=llvm-ar \ + cargo +`cat rust-toolchain` rustc $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi -- -L "$TMPLIB" cp target/armv7-linux-androideabi/$RELEASE/libdeltachat.a $jnidir/armeabi-v7a fi @@ -92,7 +102,8 @@ if test -z $1 || test $1 = arm64-v8a; then echo "-- cross compiling to aarch64-linux-android (arm64) --" export CFLAGS=-D__ANDROID_API__=21 TARGET_CC=aarch64-linux-android21-clang \ - cargo +`cat rust-toolchain` build $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi + TARGET_AR=llvm-ar \ + cargo +`cat rust-toolchain` rustc $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi -- -L "$TMPLIB" cp target/aarch64-linux-android/$RELEASE/libdeltachat.a $jnidir/arm64-v8a fi @@ -100,7 +111,8 @@ 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 + TARGET_AR=llvm-ar \ + cargo +`cat rust-toolchain` rustc $RELEASEFLAG --target i686-linux-android -p deltachat_ffi -- -L "$TMPLIB" cp target/i686-linux-android/$RELEASE/libdeltachat.a $jnidir/x86 fi @@ -108,10 +120,13 @@ 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 + TARGET_AR=llvm-ar \ + cargo +`cat rust-toolchain` rustc $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi -- -L "$TMPLIB" cp target/x86_64-linux-android/$RELEASE/libdeltachat.a $jnidir/x86_64 fi +rm -fr "$TMPLIB" + echo -- ndk-build -- cd .. diff --git a/src/org/thoughtcrime/securesms/ConnectivityActivity.java b/src/org/thoughtcrime/securesms/ConnectivityActivity.java index ac06a1dc7..81207a98f 100644 --- a/src/org/thoughtcrime/securesms/ConnectivityActivity.java +++ b/src/org/thoughtcrime/securesms/ConnectivityActivity.java @@ -43,11 +43,4 @@ public class ConnectivityActivity extends WebViewActivity implements DcEventCent public void handleEvent(@NonNull DcEvent event) { refresh(); } - - @Override - public void onBackPressed() { - // If we did not override this function, the back button in the connectivity view would sometimes - // not work, probably because webView.canGoBack() in WebViewActivity.onBackPressed() wrongly returns true - finish(); - } } diff --git a/src/org/thoughtcrime/securesms/LocalHelpActivity.java b/src/org/thoughtcrime/securesms/LocalHelpActivity.java index 6e01f5fea..982e7f736 100644 --- a/src/org/thoughtcrime/securesms/LocalHelpActivity.java +++ b/src/org/thoughtcrime/securesms/LocalHelpActivity.java @@ -69,6 +69,15 @@ public class LocalHelpActivity extends WebViewActivity return false; } + @Override + public void onBackPressed() { + if (webView.canGoBack()) { + webView.goBack(); + } else { + super.onBackPressed(); + } + } + private boolean assetExists(String fileName) { // test using AssetManager.open(); // AssetManager.list() is unreliable eg. on my Android 7 Moto G diff --git a/src/org/thoughtcrime/securesms/WebViewActivity.java b/src/org/thoughtcrime/securesms/WebViewActivity.java index a86c92d87..272b681ea 100644 --- a/src/org/thoughtcrime/securesms/WebViewActivity.java +++ b/src/org/thoughtcrime/securesms/WebViewActivity.java @@ -262,14 +262,8 @@ public class WebViewActivity extends PassphraseRequiredActionBarActivity return false; } - @Override - public void onBackPressed() { - if (webView.canGoBack()) { - webView.goBack(); - } else { - super.onBackPressed(); - } - } + // onBackPressed() can be overwritten by derived classes as needed. + // the default behavior (close the activity) is just fine eg. for Webxdc, Connectivity, HTML-mails public static void openUrlInBrowser(Context context, String url) { try {