From 2c0dc6b0d7836d419d4ba9d2ea59e885c5a5301e Mon Sep 17 00:00:00 2001 From: Aimee <163234798+aimee-mcneil-melville@users.noreply.github.com> Date: Thu, 19 Dec 2024 10:49:41 +1300 Subject: [PATCH] update android studio readme --- client/packages/android/README.MD | 32 +++++++++++++++--- .../doc/omSupply_android_gradle_jdk.png | Bin 0 -> 40433 bytes 2 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 client/packages/android/doc/omSupply_android_gradle_jdk.png diff --git a/client/packages/android/README.MD b/client/packages/android/README.MD index e45288c28a..5dc9df58a6 100644 --- a/client/packages/android/README.MD +++ b/client/packages/android/README.MD @@ -19,11 +19,10 @@ This requires a couple of steps. Currently, we support only 1 Android architecture (64bit); -| rust target | android ABI | -| aarch64-linux-android | arm64-v8a | +| rust target | android ABI | +| aarch64-linux-android | arm64-v8a | | ----------------------- | ----------- | - To add the required build targets to Rust run: ```bash @@ -41,7 +40,30 @@ echo "export NDK_BIN=~/Library/Android/sdk/ndk/26.1.10909125/toolchains/llvm/pre Open a new terminal and validate that `$NDK_BIN` is set correctly: `ls $NDK_BIN` (this should give a list of files starting with aarch64 and armv7a) Note, which linker Rust should use is defined in `server/android/.cargo/config.toml`, under [target.*]. -You can now use `yarn build:server` from this directory, this builds the `libremote_server_lib.so` binaries and relocate them to `app/src/main/jniLibs`. +### Java Installation + +In your terminal, run `java --version` to check if you have it installed. As at 19/12/2024 version `17.0.7-tem` is tested and works with our setup + +- install [SDK man](https://sdkman.io/) through your terminal by running `curl -s "https://get.sdkman.io" | bash` +- Open a new terminal + +Install Java: Run `sdk install java 17.0.7-tem` + +Then set the defaults using the following commands: + +- `sdk use java 17.0.7-tem` +- `sdk default java 17.0.7-tem` + +Go to Android Studio settings -> Build -> Build Settings + +- Change Gradle JDK to 17.0.7-tem + ![omSupply Gradle JDK](./doc/omSupply_android_gradle_jdk.png) + +You may also see prompts in Android Studio to sync - keep an eye out for these and run the sync as needed + +## Running Android Studio + +You can now use `yarn build:server` from the `server/android/` directory, this builds the `libremote_server_lib.so` binaries and relocate them to `app/src/main/jniLibs`. Please see `client/packages/android/app/src/main/java/org/openmsupply/client/RemoteServer.java` for more details of how these libs are loaded. It's important to note that web app is bundled in the remote server binary, and web app needs to be built from `client` directory with `yarn build` command, so it's best to use `yarn android:build:server` from client directory as it does both (builds web app and then build android remote server). @@ -76,7 +98,7 @@ yarn android:build:debug yarn android:build:release ``` -### Know script issues +### Known script issues When building apk `properties.local` files is required (it can be empty). Also can sometime get a lock on gradle build, can run `find ~/.gradle -type f -name "*.lock" -delete` to fix it diff --git a/client/packages/android/doc/omSupply_android_gradle_jdk.png b/client/packages/android/doc/omSupply_android_gradle_jdk.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8ff3bdf7704caf35e81cd49b06e4cacb0235f8 GIT binary patch literal 40433 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