- `mobile/Makefile` -> Added `apk-fdroid` build target, used by
`fdroid/build-app.sh`. F-Droid requires an unsigned APK without Google
Play services.
- `mobile/android/qt6/build.gradle` -> Added F-Droid gradle build
flavor, used during `apk-fdroid` target. Separates F-Droid builds from
Play Store builds and no signing configuration since it's supposed to be
unsigned.
- `mobile/scripts/buildApp.sh` -> Updated to copy F-Droid APK instead
of usual locations from Jenkins build.
- `mobile/scripts/buildOpenSSL.sh` -> Moved from iOS dir, shared
between iOS and F-Droid builds. Reusing the OpenSSL build logic that was
previously iOS-only but is now needed for F-Droid's from-source
requirement.
- `mobile/scripts/Common.mk` -> Updated path to `buildOpenSSL.sh`
which is no longer inside iOS dir.
- `mobile/scripts/openssl-patch.diff` -> Moved from iOS dir, applied
by `buildOpenSSL.sh`, so that the patch is co-located with the script
that uses it.
- `ci/Jenkinsfile.fdroid` -> Had to make a new pipeline script because
integrating this into `ci/Jenkinsfile.android` was causing issues with
the generated `AppImage` and steps had to be fully sequential, so I
figured it's good to separate them out.
- `fdroid/entrypoint-fdroid.sh` -> Docker entrypoint, used by
`fdroid/Dockerfile`. Sets up the container user/permissions before the
F-Droid build starts.
- `fdroid/Dockerfile` -> A minimalistic Docker image for the F-Droid
Jenkins build environment, used by `ci/Jenkinsfile.fdroid`. I didn't add
to existing Qt Android `Dockerfile` because this one only needs a
minimal environment with Docker-in-Docker to run the `fdroidserver` VM.
- `fdroid/build-app.sh` -> Called by `fdroiddata` metadata build step.
Sets up Qt and Android NDK environment, detects `JAVA_HOME`, configures
`Go`/`Nim` env vars, and runs the `make` targets for the F-Droid APK.
- `fdroid/build-openssl.sh` -> F-Droid requires OpenSSL to be built
from source rather than using prebuilt binaries.
- `fdroid/build-qt-android.sh` -> F-Droid requires Qt to be built from
source; this handles the Android cross-compilation.
- `fdroid/build-qt-host.sh` -> Qt's cross-compilation requires host
tools (`moc`, `rcc`, etc.) to be built first.
- `fdroid/cleanup-binaries.sh` -> Removes binaries flagged by `fdroid`
scanner, called by `fdroiddata` metadata `prebuild` step. F-Droid's
scanner rejects repos containing prebuilt binaries in test/vendor
directories.
- `fdroid/cleanup-fdroiddata.sh` -> Removes stale `fdroiddata` clones,
called by `ci/Jenkinsfile.fdroid`. Prevents disk space issues from
accumulating `fdroiddata` clones across builds.
- `fdroid/fdroid-container-build.sh` -> Runs `fdroid build` inside
Docker container, called by `scripts/fdroid-local-build.sh`. Isolates
the build in a container to match F-Droid's official build environment.
- `scripts/fdroid-local-build.sh` -> A handy script to build F-Droid
locally, also called by `ci/Jenkinsfile.fdroid`. Manages the full
lifecycle of cloning `fdroiddata`, launching the `fdroidserver`, and
extracting the output APK.
- `fdroid/generate-keystore.sh` -> Generates a single-use keystore for
signing the F-Droid APK. Sourced by `buildApp.sh` to export signing
credentials into the build environment.
fixes: https://github.com/status-im/status-app/issues/19741
fixes :
```
0m=[94mqrc:/app/AppLayouts/Profile/views/EnsView.qml:4
[0m [33mtext[0m=[94m"module \"QtQml.StateMachine\" is not installed"[0m
```
and
```
E FATAL EXCEPTION: qtMainLoopThread
Process: app.status.mobile.debug, PID: 18150
java.lang.UnsatisfiedLinkError: dlopen failed: library "libStatus
Debug_arm64-v8a.so" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1097)
at java.lang.Runtime.loadLibrary0(Runtime.java:1019)
at java.lang.System.loadLibrary(System.java:1765)
at
org.qtproject.qt.android.QtLoader.loadLibraryHelper(QtLoader.java:486)
at
org.qtproject.qt.android.QtLoader.lambda$loadMainLibrary$0$org-qtproject-qt-android-QtLoader(QtLoader.java:535)
at
org.qtproject.qt.android.QtLoader$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
at org.qtproject.qt.android.QtThread.lambda$run$0(QtThread.java:57)
at
org.qtproject.qt.android.QtThread$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at org.qtproject.qt.android.QtThread$1.run(QtThread.java:25)
at java.lang.Thread.run(Thread.java:1563)
```
- re applies this commit :
https://github.com/status-im/status-app/commit/9381d0d06c2bee8e902be3bcf49e9680fe055b0d
- I also adjust the qml lint job to catch this kind of import failure in
CI :
```
[2026-02-03T07:06:17.215Z] Running: QML Lint (Mobile)
[2026-02-03T07:06:17.215Z] qmllint: /opt/qt/6.9.2/gcc_64/bin/qmllint
[2026-02-03T07:06:17.215Z] Qt modules:
/opt/qt/6.9.2/android_arm64_v8a/qml
[2026-02-03T07:06:17.215Z]
[2026-02-03T07:06:17.215Z] Checking 1200 files...
[2026-02-03T07:06:33.882Z]
[2026-02-03T07:06:33.882Z] ERRORS:
[2026-02-03T07:06:33.882Z]
/home/jenkins/workspace/status-app-android/13/ui/app/AppLayouts/Profile/views/EnsView.qml:4:1:
Failed to import QtQml.StateMachine. Are your import paths set up
properly?
```
Currently the approach fails with:
Error: Homebrew requires formulae to be in a tap, rejecting:
cmake.rb (/tmp/cmake.rb)
Signed-off-by: Jakub Sokołowski <jakub@status.im>
Changes in ordering of PATHs have broken too many things in the past.
This way we also enforce existance of specific version folders which
will fail early instead of continuing and failing in obscure manner.
Signed-off-by: Jakub Sokołowski <jakub@status.im>
* refactor(e2e_appium): locators and app lifecycle management
- wallet locators
- app lifecycle management
- toast message handling (visibility checks and logging).
- saved addresses page
* refactor(e2e_appium): migrate to cloud reporting and enhance test assertions
- Replaced instances of LambdaTest reporting with Cloud reporting
- Assertion messages for clarity
- Updated test methods for toast handling
* chore(e2e_mobile): appium config for BrowserStack and Jenkins
* ci(e2e_mobile): add Jenkinsfile for mobile e2e tests
* ci(e2e_mobile): address review feeback
* ci(e2e_mobile): add E2E testing stage and update BrowserStack credentials
- Introduced a new E2E stage in the Android Jenkinsfile for PR builds.
- Updated BrowserStack credentials id
* ci(e2e_mobile): test result publishing
- Set PLATFORM environment variable for E2E Android tests.
- include package URL in the environment.
- build name to reflect PR number.
* ci(e2e_mobile): fix BrowserStack project name
* ci(e2e_mobile): update build type detection and improve stage names
- Renamed stages for clarity
- Refactored build type detection to use upstream job details.
* ci(e2e_mobile): Apply suggestions from code review for CHANGE_ID
Apply suggestions from code review for CHANGE_ID
Co-Authored-By: Jakub <jakub@status.im>
- points to `fix-ios-signing-with-fastlane` branch of
`status-jenkins-lib` which provides development certs for PR builds and
distribution certs for release builds.
- adds nix flake to provide ruby dependencies for `fastlane`
- adds config for new build identifier for PRs: `app.status.mobile.pr`
- swaps testflight script with fastlane action
- adds job to build iOS in release
- updates status-go to use nim-sds from
https://github.com/logos-messaging/nim-sds/pull/41
To fix windows build issues due to very long paths by
nimbus-build-system
- points status-go to bring in
https://github.com/status-im/status-go/pull/7185
- updates mac,windows host install scripts to include nim
- updates linux dockerfile to install nim
- updates linux docker image tag to use newer image
Adapts the docs and different mentions of the repo from status-desktop to status-app
Also adapts the docs to talk about the Status App and not just Status Dekstop. Adds links to the Mobile build too.
* chore: enforce USE_SYSTEM_NIM=1 when building statusgo-shared-library
* chore: revert previous commit
* chore: add sds folders into STATUSGO_MAKE_PARAMS
* chore: adjust LIBSDS_LIBDIR in Makefile
* chore: add NIM_SDS_SOURCE_DIR in Jenkinsfiles
* ci: ios build NIM_SDS_SOURCE_DIR
* chore: more explicit nim-sds folder set in mobile Makefile
* chore: make sure sds cache is cleaned before pkg-macos in Makefile
This is needed to avoid compilation errors such as:
ld: building for 'macOS', but linking in object file
(/Users/ivan/.cache/nim/libsds_d/@m..@svendor@snimbus-build-system@svendor@sNim@slib@ssystem@sexceptions.nim.c.o)
built for 'iOS-simulator'
* chore: from previous commit properly make use of tab in Makefile
* chore: adjust lib path cp in mobile Makefile
* chore: mobile/Makefile hard code cp command libsds
* chore: for some unkown reason android and ios need different cp command
* chore: tackling previous Igor's comments
* chore: export NIM_SDS_SOURCE_DIR env var from Makefile
* chore: fix default NIM_SDS_SOURCE_DIR and set it ok to STATUSGO_MAKE_PARAMS
* chore: add NIM_SDS_SOURCE_DIR def in Jenkinsfile.tests-nim
* chore: update status-go
* fix; copy nimsds library on windows
* chore: update status-go to latest develop
---------
Co-authored-by: Ivan Folgueira Bande <ivansete@status.im>
Otherwise we just get non-descript stuff like:
jq: parse error: Invalid numeric literal at line 1, column 7
Signed-off-by: Jakub Sokołowski <jakub@status.im>
- update status-jenkins-lib to v1.9.30 which provides iOS provisioning
profile and appstore certs.
- builds signed iOS app and pushes to testflight.
- updates testflight metadata with PR link and commit sha it was built
from
- adds `scripts/testflight-changelog.mjs` script used by CI to update PR
metadata.
- set `ITSAppUsesNonExemptEncryption` to `false`
- simplify the process or deploying the translations by treating the QM
files just like any other resource, and compile/bundle them with the
binary
- remove manual copying of the QM files in Makefile and other scripts
- greatly simplify the LanguageService discovery, as the QM files are
now in a uniform prefix (`:/i18n`) on any platform
- because of the uniform prefix/location, the retranslation now happens
automatically by `QQmlApplicationEngine`, by just setting/getting the
`Qt.uiLanguage` property
Fixes#18914
- and run it as part of the standard `make compile-translations`
subtarget, in order to keep the base Lokalise TS file in sync with the
other TS files
- script ported from Python to go so that we don't have to introduce
another hard build time dependency
- include the re-generated TS files as well
Fixes#18934
- add a `<comment>` to help with Lokalise AI setting up the context
- update the base TS files, reflecting recent master changes
- fixup a wrong `qsTranslate` call; was meant to be a regular `qsTr()`
with a plural form
- create dedicated Makefile targets: `update-translations` and
`compile-translations` that extract/update/merge and compile the TS
files respectively
- these targets can then later be invoked externally by CI automation
- provide a small manual Python script that transforms the empty
`qml_base_en.ts` into a pre-filled `qml_base_lokalise_en.ts` for the
purpose of AI enabled translations on Lokalise
- add a sample Czech translation to test the changes (to be finished
later separately)
- update the i18n README
Fixes#18820
Fixes this bug where App's version shows "-nwaku-experimental" even when
`USE_NWAKU` is not set to `true`
Fixes the name of the built binary to contain "experimental"
modify version script to force fetch tags and then describe.
To fix Qt WebEngine errors like :
[0912/162517.794426:FATAL:v8_initializer.cc(625)] Error loading V8 startup snapshot file
and
Render process exited with code 1002 (abnormal exit)
This fixes an error on NixOS when trying to Connect a dApp via Status Connector
which should open the Status Wallet Connector chrome plugin page but fails with:
```
/nix/store/1q9lw4r2mbap8rsr8cja46nap6wvrw2p-bash-interactive-5.2p37/bin/bash: symbol lookup error:
/nix/store/1q9lw4r2mbap8rsr8cja46nap6wvrw2p-bash-interactive-5.2p37/bin/bash: undefined symbol: rl_trim_arg_from_keyseq
```
Resolves:
https://github.com/status-im/status-desktop/issues/18451
Signed-off-by: Jakub Sokołowski <jakub@status.im>
- `QT6` setup runs the newer ubuntu `22.04` linux image
- `QT6` setup also uses a newer `linuxdeployqt` from here https://github.com/probonopd/linuxdeployqt/releases/tag/continuous
- `E2E` tests were updated to work with QT `6.9.0`.
- introduce a `DummyCompatImports.qml` to fix runtime issues on `linux`.
- introduced `STATUSQ_SANITY_CHECKER_EXCLUDE_FILES ` to exclude `qml` files from sanity checker.
- unused `cpp` jobs have been deleted
related issue : https://github.com/status-im/status-desktop/issues/17639