diff --git a/.containerversion b/.containerversion index f04c001f3f..64bb6b746d 100644 --- a/.containerversion +++ b/.containerversion @@ -1 +1 @@ -29 +30 diff --git a/.gitignore b/.gitignore index 395c11ae0f..b3169c5196 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ .DS_Store .idea +.cxx/ ### Vim ### diff --git a/frontends/android/BitBoxApp/app/build.gradle b/frontends/android/BitBoxApp/app/build.gradle index 7a293c6ae1..e33ed753b5 100644 --- a/frontends/android/BitBoxApp/app/build.gradle +++ b/frontends/android/BitBoxApp/app/build.gradle @@ -10,6 +10,11 @@ android { versionCode 59 versionName "android-4.47.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + externalNativeBuild { + cmake { + cppFlags '-std=c++11' + } + } } buildTypes { release { @@ -23,6 +28,12 @@ android { } } namespace 'ch.shiftcrypto.bitboxapp' + externalNativeBuild { + cmake { + path file('src/main/cpp/CMakeLists.txt') + version '3.31.6' + } + } } dependencies { diff --git a/frontends/android/BitBoxApp/app/src/main/cpp/CMakeLists.txt b/frontends/android/BitBoxApp/app/src/main/cpp/CMakeLists.txt new file mode 100644 index 0000000000..b3d3a5365b --- /dev/null +++ b/frontends/android/BitBoxApp/app/src/main/cpp/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.16) + +project(signal_handler) + +add_library( # Specifies the name of the library. + signal_handler + + # Sets the library as a shared library. + SHARED + + # Provides a relative path to your source file(s). + signal_handler.c +) + +find_library( + log-lib + log +) + +target_link_libraries( + signal_handler + ${log-lib} +) diff --git a/frontends/android/BitBoxApp/app/src/main/cpp/signal_handler.c b/frontends/android/BitBoxApp/app/src/main/cpp/signal_handler.c new file mode 100644 index 0000000000..9314057672 --- /dev/null +++ b/frontends/android/BitBoxApp/app/src/main/cpp/signal_handler.c @@ -0,0 +1,28 @@ +// signal_handler.c +#include +#include +#include + +#define LOG_TAG "SignalHandler" +#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__) + +void sigsys_handler(int signum, siginfo_t *info, void *context) { + LOGI("SIGSYS signal received and ignored."); +} + +void setup_sigsys_handler() { + struct sigaction sa; + sa.sa_flags = SA_SIGINFO; + sa.sa_sigaction = sigsys_handler; + sigemptyset(&sa.sa_mask); + if (sigaction(SIGSYS, &sa, NULL) == -1) { + LOGI("Failed to set up SIGSYS handler"); + } else { + LOGI("SIGSYS handler set up successfully"); + } + +} + +JNIEXPORT void JNICALL Java_ch_shiftcrypto_bitboxapp_MainActivity_initsignalhandler(JNIEnv *env, jobject thisObj) { + setup_sigsys_handler(); +} diff --git a/frontends/android/BitBoxApp/app/src/main/java/ch/shiftcrypto/bitboxapp/MainActivity.java b/frontends/android/BitBoxApp/app/src/main/java/ch/shiftcrypto/bitboxapp/MainActivity.java index 946c4bcaf5..9972d0d189 100644 --- a/frontends/android/BitBoxApp/app/src/main/java/ch/shiftcrypto/bitboxapp/MainActivity.java +++ b/frontends/android/BitBoxApp/app/src/main/java/ch/shiftcrypto/bitboxapp/MainActivity.java @@ -60,6 +60,10 @@ import mobileserver.Mobileserver; public class MainActivity extends AppCompatActivity { + static { + System.loadLibrary("signal_handler"); + } + public native void initsignalhandler(); private final int PERMISSIONS_REQUEST_CAMERA_QRCODE = 0; private static final String ACTION_USB_PERMISSION = "ch.shiftcrypto.bitboxapp.USB_PERMISSION"; // The WebView is configured with this as the base URL. The purpose is so that requests made @@ -123,13 +127,12 @@ public void onReceive(Context context, Intent intent) { @Override public void onReceive(Context context, Intent intent) { Mobileserver.usingMobileDataChanged(); - } + } }; - @Override - public void onConfigurationChanged(Configuration newConfig){ + public void onConfigurationChanged(Configuration newConfig) { int currentNightMode = newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK; switch (currentNightMode) { case Configuration.UI_MODE_NIGHT_NO: @@ -172,6 +175,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Util.log("lifecycle: onCreate"); + initsignalhandler(); + getSupportActionBar().hide(); // hide title bar with app name. onConfigurationChanged(getResources().getConfiguration()); setContentView(R.layout.activity_main); diff --git a/go.mod b/go.mod index be2ada2fdd..0d30f7114c 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/BitBoxSwiss/bitbox-wallet-app -go 1.22 +go 1.23 require ( github.com/BitBoxSwiss/bitbox02-api-go v0.0.0-20250212204931-2b90fadfc774 diff --git a/scripts/docker_install.sh b/scripts/docker_install.sh index 14e1553a40..989b7f23eb 100755 --- a/scripts/docker_install.sh +++ b/scripts/docker_install.sh @@ -82,7 +82,7 @@ aqt install-qt linux desktop 6.8.2 -m qtpositioning qtserialport qtwebchannel qt npm install -g npm@10 npm install -g locize-cli -curl https://dl.google.com/go/go1.22.5.linux-amd64.tar.gz | tar -xz -C /usr/local +curl https://dl.google.com/go/go1.23.7.linux-amd64.tar.gz | tar -xz -C /usr/local # fuse is needed to run the linuxdeployqt appimage. apt-get install -y --no-install-recommends fuse @@ -101,4 +101,4 @@ gem install --no-document fpm # Needed for Android. apt-get install -y --no-install-recommends openjdk-17-jdk # Keep versions in sync with build.gradle and frontends/android/Makefile. -/opt/android-sdk/cmdline-tools/tools/bin/sdkmanager "ndk;21.2.6472646" "platforms;android-34" "build-tools;34.0.0" "platform-tools" +/opt/android-sdk/cmdline-tools/tools/bin/sdkmanager "ndk;21.2.6472646" "platforms;android-34" "build-tools;34.0.0" "platform-tools" "cmake;3.31.6"