Android Application Guides This document mandates adherence to the Android Application Development Environment Setup Guide, as a prerequisite for system compliance. NativeViewLibrary Requirements This document mandates adherence to the Android Application Development Environment Setup Guide , as a prerequisite for system compliance. The project requirements  NativeViewLibrary Android application uses the  Android Gradle Plugin version 7.2.1 and Gradle version 7.3.3 . A custom NDK 26  is required, as described in the Android Native Development Kit (NDK) chapter.  CMake 3.22.1 is required as described in the  CMake chapter. Eclipse Temurin JDK 11 is required as described in Java Development Kit (JDK) chapter. Supported API levels: 23–28  (The application is compatible with later Android versions up to API 36 on Android 16). Supported ABIs:  arm64-v8a, x86_64, x86 The NativeViewLibrary Android application integrates the NativeView library, which is provided externally from ../libs/nativeview-lib and already imported into the project. Building and Running the Android Application To build and run the Android application, perform the following steps: 1. Substitute the CGI Studio root as described in the  windows-commands/subst article. Open a Command Prompt in the CGI Studio root directory (e.g., “...\cgistudio”) and type:  subst x: . Press  enter . The CGI root is now available under the  X: drive in Windows Explorer. 2. Configure local.properties: Open local.properties.sample file from the root of the Android application. Copy the content of the sample to the  local.properties file in the root of the Android application. Update the USERNAME in the SDK and NDK paths to match your system. Configure from where the asset should load under the Asset Configuration block. Set the ABI to the target CPU architecture under the Target ABI block. Save  local.properties and  sync project with Gradle files  (Ctrl+Shift+O). Note: If the SDK or NDK paths do not exist, Android Studio may reset  local.properties after syncing the project with Gradle files. 3. Open the Android Application: Launch Android Studio and open the project located at: X:\cgi_studio_apps\References\Android\NativeViewLibrary 4. Create an Android asset Run the following batch file: X:\bin\SceneComposer\SceneComposer_Android_OpenGLES30.bat  Choose an asset template (e.g., “3D Basic”) and save this as Test.bin If from sdcard: to the /sdcard/ directory of the target or emulator. In Android Studio, this can be done in the "Device Explorer" of the target or emulator. If from APK:  to the following folder:  X:\cgi_studio_apps\References\Android\NativeViewLibrary\sample\src\main\assets 5.  Build variant: In Android Studio, open [View | Tool Window | Build Variants]. In the Build Variants tool window, select debug or release under Active Build Variant. 6.  Run the application : Select the target device or emulator in Android Studio. Click  Run (the play button) The first time the Application starts, it will request permissions. Accept and restart the application. The asset should now be running. 7.  APK After the application is running, the current built APK can be found in the build directory. This can located by opening [Build | Analyze APK]. The usual directory would be: X:\cgi_studio_apps\References\Android\NativeViewLibrary\sample\build\intermediates\apk\ If the build was for release, the APK will be signed. Troubleshooting If encountering any issues during the setup, refer to the official documentation for Android Studio, CMake, and NDK for troubleshooting steps. Platform Tests Google Pixel C, ARM Cortex A57, Android 8.1.0, API 27 Huawei MediaPad M5, ARM Cortex A73, Android 9, EMUI 9.1.0, API28 Emulator Pixel 2, x86_64, Android 6, API 23 (Without Play/APIs) Emulator Medium Phone, x86_64, Android 9, API 28 (Without Play/APIs) Emulator Pixel 2, x86, Android 9, API 28 (Without Play/APIs) Emulator Google Pixel Tablet, x86_64, Android 14.0, API 34 Emulator Google Pixel Tablet, x86_64, Android 16.0, API 36 Emulator Google Pixel 9 Pro XL, x86_64, Android 16.0, API 36 CGI-Player Launcher Requirements This document mandates adherence to the Android Application Development Environment Setup Guide , as a prerequisite for system compliance. The project requirements  CGI-Player Launcher Android application uses the  Android Gradle Plugin version 7.2.1 and Gradle version 7.3.3 . A custom NDK 26  is required, as described in the Android Native Development Kit (NDK) chapter.  CMake 3.22.1 is required as described in the  CMake chapter. Eclipse Temurin JDK 11 is required as described in Java Development Kit (JDK) chapter. Supported API levels: 23–28  (The application is compatible with later Android versions up to API 36 on Android 16). Supported ABIs:  arm64-v8a, x86_64, x86 The CGI-Player Launcher Android application integrates the NativeView library, which is provided externally from ../libs/nativeview-lib and already imported into the project. Building and Running the Android Application To build and run the Android application, perform the following steps: 1. Substitute the CGI Studio root as described in the  windows-commands/subst article. Open a Command Prompt in the CGI Studio root directory (e.g., “...\cgistudio”) and type:  subst x: . Press  enter . The CGI root is now available under the  X: drive in Windows Explorer. 2. Open the Android Application: Launch Android Studio and open the project located at: X:\cgi_studio_apps\References\Android\AndroidCgiPlayerLauncher 3. Configure local.properties: Open local.properties.sample file from the root of the Android application. Copy the content of the sample to the  local.properties file in the root of the Android application. Update the USERNAME in the SDK and NDK paths to match your system. How the asset can be loaded is described in the Asset Configuration block. Set the ABI to the target CPU architecture under the Target ABI block. If you need Vulkan support, change angle_vulkan=off to angle_vulkan=on  in  local.properties . Save  local.properties and  sync project with Gradle files  (Ctrl+Shift+O). Note: If the SDK or NDK paths do not exist, Android Studio may reset  local.properties after syncing the project with Gradle files. 4. Create an Android asset Run the following batch file: X:\bin\SceneComposer\SceneComposer_Android_OpenGLES30.bat  Choose an asset template (e.g., “3D Basic”) and save this as Test.bin If from sdcard: to the /sdcard/ directory of the target or emulator. In Android Studio, this can be done in the "Device Explorer" of the target or emulator. If from APK:  to the following folder:  X:\cgi_studio_apps\References\Android\AndroidCgiPlayerLauncher\app\src\main\assets 5.  Build variant: In Android Studio, open [View | Tool Window | Build Variants]. In the Build Variants tool window, select debug or release under Active Build Variant. 6.  Run the application : Select the target device or emulator in Android Studio. Click  Run (the play button) The first time the Application starts, it will request permissions. Accept and restart the application. The assets are loaded from the location that is set in the Asset Location  option in the application. The desired asset can be clicked on and the asset should be running. 6.1 Launching an asset via ADB (command-line) The asset path can be found in the CGI-Player Launcher app. Replace the asset path and asset filename in the command. Use this method to start the CGI-Player Launcher and open a selected asset from cmd: adb shell am start -n at.cgistudio.player/.presentation.nativeview.NativeViewActivity -e extra_asset_path "/storage/emulated/0/3151_3DGS.bin" -e extra_asset_name "3151_3DGS.bin" -e extra_load_from_assets false -e extra_wait_for_connection false 7. APK After the application is running, the current built APK can be found in the build directory. This can located by opening [Build | Analyze APK]. The usual directory would be: X:\cgi_studio_apps\References\Android\AndroidCgiPlayerLauncher\app\build\intermediates\apk\ If the build was for release, the APK will be signed. Troubleshooting If encountering any issues during the setup, refer to the official documentation for Android Studio, CMake, and NDK for troubleshooting steps. Platform Tests Google Pixel C, ARM Cortex A57, Android 8.1.0, API 27 Huawei MediaPad M5, ARM Cortex A73, Android 9, EMUI 9.1.0, API28 Emulator Pixel 2, x86_64, Android 6, API 23 (Without Play/APIs) Emulator Medium Phone, x86_64, Android 9, API 28 (Without Play/APIs) Emulator Pixel 2, x86, Android 9, API 28 (Without Play/APIs) Emulator Google Pixel Tablet, x86_64, Android 14.0, API 34 Emulator Google Pixel Tablet, x86_64, Android 16.0, API 36 Emulator Google Pixel 9 Pro XL, x86_64, Android 16.0, API 36 CourierSampleApp System Requirements This document mandates adherence to the Android Application Development Environment  Setup Guide, as a prerequisite for system compliance. By following these steps, you should have a consistent and well-configured development environment for your Android application on Windows 10/11. Remember to restart your system after making changes related to CMake in Android Studio and after updating Environment Variables. Project Structure CourierSampleApp is using the Android Gradle Plugin Version 3.5.3 with Gradle Version 5.4.1. The Application is tested with ndk-26 that can be installed from the document in chapter  Configuration and System Requirements . The supported API range is 24-28. The supported ABIs are arm64-v8a, x86_64, x86. The CourierSampleApp Android Application is NOT using the NativeView library. The build process is different than the Android Applications that use the NativeView library. Building and Running the Android Application To be able to build and run the Android Application, the following steps must be done. 1. CGI Studio These steps are required to prepare the asset from the solution to use in the CMake and Android Studio steps. Subst [ windows-commands/subst ] the root of CGI Studio. Open a Command Prompt in the root of CGI Studio directory e.g., “...\cgistudio” and type: “subst x: .” and click enter. The CGI root is now available under the subst "x" drive in Windows Explorer. Run CGI Studio by double clicking on “X:\bin\SceneComposer\SceneComposer_Android_OpenGLES30.bat”, Open the following solution for CourierSampleApp from X:\cgi_studio_courier_apps\src\CourierSampleApp\SCSolution\Android\Solution.scs”. Save this solution as: AssetLibCff_CourierSampleApp.bin and then copy it into the /sdcard/ directory of the target/emulator. For the emulator this can be done in the "Device Explorer" of the emulator in Android Studio. AssetLibCff_Android_Target.bin and then copy it to “X:\cgi_studio_courier_apps\src\CourierSampleApp\Assets”. This one is needed to build the ".so" library required by the Android Project. 2. CMake These steps are to prepare the ".so" library required by the Android application. Make sure the steps of " Alternative CMake Approach " have been done prior to the next step. Open CMake and choose "X:\cmake\Apps\Courier\CourierSampleApp" as source code and e.g. X:\build for where to build the binaries. Click Configure. Specify "Ninja" as the generator for this project and choose "Specify toolchain file for cross-compiling". Click Next. Choose "X:\cgi_studio_devices\src\Android\ToolchainFiles\android.toolchain-ndk26-generic.cmake". Click Finish. The first "error" will ask to set the "ANDROID_ABI", choose the ABI required. This should match the target/emulator CPU Architecture. Click Configure. The next "error" will ask to set the ANDROID_PLATFORM. This should match the target/emulator Android version. Click Configure until there are no red lines anymore and then click on Generate. Open CMD and navigate to "X:\build" by typing first "x:" and clicking enter, and then "cd X:\build" and clicking enter. Type "ninja" and click enter for the build to start. After the build is done, copy "X:\build\libApplicationLib.so" to the directory matching the ABI previously selected e.g. "X:\cgi_studio_apps\References\Android\SampleApp\app\native-libs\x86_64\libApplicationLib.so". 3. Android Studio These steps are to prepare the Android Studio to build and run the Android application. Open the Android Application in Android Studio from “X:\cgi_studio_apps\References\Android\SampleApp”. Open the “local.properties.sample” file and change the “USERNAME” in the SDK and NDK path to match the system it will be used on. Copy the contents of the "local.properties.sample" to “local.properties”. Note that if the SDK or NDK paths do not exist, Android Studio will reset the “local.properties” again after trying to Sync Project with Gradle Files. Make sure the JDK is set to 11 in [File | Settings | Build, Execution, Deployment | Build Tools | Gradle] like described in chapter  Java Development Kit (JDK) . Choose the supported ['arm64-v8a', 'x86_64', 'x86'] ABI "mAbi" and set the application name "mApplicationName" in “build.gradle (Project: Module :app)”. Run the Application by selecting the target/emulator and clicking on “run app”. The first time the Application starts, it will request permissions. Click accept and restart the application. The solution should be running. Troubleshooting If encountering any issues during the setup, refer to the official documentation for Android Studio, CMake, and NDK for troubleshooting steps. If you encounter any issues linked to outdated source code, reach out to the Android developers for assistance in implementing a resolution. Check for updates regularly and keep your development environment components up to date. Platform Tests   Google Pixel C, ARM Cortex A57, Android 8.1.0, API 27 Huawei MediaPad M5, ARM Cortex A73, Android 9, EMUI 9.1.0, API28 Emulator Pixel 2, x86_64, Android 6, API 23 (Without Play/APIs) Emulator Medium Phone, x86_64, Android 9, API 28 (Without Play/APIs) Emulator Pixel 2, x86, Android 9, API 28 (Without Play/APIs) MLC System Requirements This document mandates adherence to the Android Application Development Environment  Setup Guide, as a prerequisite for system compliance. By following these steps, you should have a consistent and well-configured development environment for your Android application on Windows 10/11. Remember to restart your system after making changes related to CMake in Android Studio and after updating Environment Variables. Project Structure NativeViewLibrary is using the Android Gradle Plugin Version 3.5.3 with Gradle Version 5.4.1. The Application is tested with ndk-26 that can be installed from the document in chapter  Configuration and System Requirements . The supported API range is 24-28. The supported ABIs are arm64-v8a, x86_64, x86. The MLC Android Application is NOT using the NativeView library. The build process is different than the Android Applications that use the NativeView library. Building and Running the Android Application To be able to build and run the Android Application, the following steps must be done. 1. CGI Studio These steps are required to prepare the asset from the solution to use in the CMake and Android Studio steps. Subst [ windows-commands/subst ] the root of CGI Studio. Open a Command Prompt in the root of CGI Studio directory e.g., “...\cgistudio” and type: “subst x: .” and click enter. The CGI root is now available under the subst "x" drive in Windows Explorer. Run CGI Studio by double clicking on “X:\bin\SceneComposer\SceneComposer_Android_OpenGLES30.bat”, Open the following solution for MLC from X:\cgi_studio_matlab_connector\apps\sample\\src\SCSolution\Android\Solution.scs”. Save this solution as: AssetLibCff.bin and then copy it into the /sdcard/ directory of the target/emulator. For the emulator this can be done in the "Device Explorer" of the emulator in Android Studio. AssetLibCff_Android_Target.bin and then copy it to “X:\cgi_studio_matlab_connector\apps\sample\\src\Asset”. This one is needed to build the ".so" library required by the Android Project. 2. CMake These steps are to prepare the ".so" library required by the Android application. Make sure the steps of " Alternative CMake Approach " have been done prior to the next step. Note: Currently the ninja build can only succeed when the [cmake | CMAKE_BUILD_TYPE = Release] in CMake during configuration. Open CMake and choose "X:\cgi_studio_matlab_connector\apps\sample\Signals\src\Application" as source code and e.g. X:/build for where to build the binaries. Click Configure. Specify "Ninja" as the generator for this project and choose "Specify toolchain file for cross-compiling". Click Next. Choose "X:\cgi_studio_devices\src\Android\ToolchainFiles\android.toolchain-ndk26-generic.cmake". Click Finish. The first "error" will ask to set the "ANDROID_ABI", choose the ABI required. This should match the target/emulator CPU Architecture. Click Configure. The next "error" will ask to set the ANDROID_PLATFORM. This should match the target/emulator Android version. Click Configure until there are no red lines anymore and then click on Generate. Open CMD and navigate to "X:\build" by typing first "x:" and clicking enter, and then "cd X:\build" and clicking enter. Type "ninja" and click enter for the build to start. After the build is done, copy "X:\build\libApplicationLib.so" to the directory matching the ABI previously selected e.g. "X:\cgi_studio_apps\References\Android\SampleApp\app\native-libs\x86_64\libApplicationLib.so". 3. Android Studio These steps are to prepare the Android Studio to build and run the Android application. Open the Android Application in Android Studio from “X:\cgi_studio_apps\References\Android\SampleApp”. Open the “local.properties.sample” file and change the “USERNAME” in the SDK and NDK path to match the system it will be used on. Copy the contents of the "local.properties.sample" to “local.properties”. Note that if the SDK or NDK paths do not exist, Android Studio will reset the “local.properties” again after trying to Sync Project with Gradle Files. Make sure the JDK is set to 11 in [File | Settings | Build, Execution, Deployment | Build Tools | Gradle] like described in chapter  Java Development Kit (JDK) . Choose the supported ['arm64-v8a', 'x86_64', 'x86'] ABI "mAbi" and set the application name "mApplicationName" in “build.gradle (Project: Module :app)”. Run the Application by selecting the target/emulator and clicking on “run app”. The first time the Application starts, it will request permissions. Click accept and restart the application. The solution should be running. Troubleshooting If encountering any issues during the setup, refer to the official documentation for Android Studio, CMake, and NDK for troubleshooting steps. If you encounter any issues linked to outdated source code, reach out to the Android developers for assistance in implementing a resolution. Check for updates regularly and keep your development environment components up to date. Platform Tests   Emulator Medium Phone, x86_64, Android 9, API 28 (Without Play/APIs)