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 {