Before going in to compilation details check what you need to know about the Android projects in general.
This is a lot easier than it used to be.
I find it easiest to do final builds from the command line.
If you get errors like “Your build is currently configured to use incompatible Java 21.0.4 and Gradle 7.3.3. Cannot sync the project.” you'll need to update things.
* Click the “Upgrade to Gradle 8.9 and re-sync” option
But then you'll probably see:
A build operation failed.
Could not create task ':app:processDebugResources'.
To fix, edit your build.gradle file and change the part that says:
id 'com.android.application' version '7.2.1' apply false id 'com.android.library' version '7.2.1' apply false
to:
id 'com.android.application' version '8.8.0' apply false id 'com.android.library' version '8.0.2' apply false
(or whatever the latest versions are, I had to google to find them(
After clicking “try again” I got a new error of “Minimum supported Gradle version is 8.10.2. Current version is 8.9.” and clicked “Change Gradle version in Gradle wrapper to 8.10.2 and re-import project”
Then I got “Namespace not specified.” errors.
* Edit build.gradle and change targetSdk to 35. It will ask if you know what you're doing, tell it you do. (lie, in my case)
At this point, it started to compile but got errors like this:
C/C++: Cannot find source file: C/C++: ../../../../../../shared/util/boost/libs/signals/src/connection.cpp
If you get this, it means your AndroidGradle\app\src\main\cpp\CMakeLists.txt file is asking that boost .cpps be compiled - you need to remove all that, the updated version of boost we used has NO CPP files, just headers.
(so cut out: ${SHARED}/util/boost/libs/signals/src/connection.cpp ${SHARED}/util/boost/libs/signals/src/named_slot_map.cpp ${SHARED}/util/boost/libs/signals/src/signal_base.cpp ${SHARED}/util/boost/libs/signals/src/slot.cpp ${SHARED}/util/boost/libs/signals/src/trackable.cpp )
If you get “Namespace not specified. Specify a namespace in the module's build file”
Well, yeah, I guess they changed that. Double click your build.gradle file and it might have an “Open the “Project Structure dialog”” button pop up. I set the SDK and NDK versions to the highest numbers. I left min-sdk low, as we need that to run on older devices.
Ok, that didn't fix the namespace error, to fix that, I had to add “namespace 'com.rtsoft.RTAndroidApp'” in the “android {” area, I just put it under the NDK version. I know, this is all confusing and weird, you could look at RTBareBones's build.gradle file if need be. For me it now build and played on the Android device fine.
To fix this you'll need to know where your java install is and set JAVA_HOME to it.
Easiest thing is to use Android Studio’s bundled JDK, it’s usually located in a directory similar to: C:\Apps\androidstudio\jbr
(Your path might be different; check your Android Studio settings under File > Project Structure > SDK Location or File > Settings > Build, Execution, Deployment > Build Tools > Gradle.)
Open a Command Prompt and run:
set JAVA_HOME=C:\Apps\androidstudio\jbr
Then you can run the batch files in the same session and it should work.
Or, to set it permenently:
Right-click on This PC (or My Computer) and select Properties. Click on Advanced system settings. In the System Properties window, click on the Advanced tab, then click Environment Variables…. Under System variables, click New… (or find JAVA_HOME if it already exists and click Edit…). Set the Variable name to JAVA_HOME and the Variable value to your JDK path (e.g., C:\Apps\androidstudio\jbr). Click OK to save the changes. Optionally, add %JAVA_HOME%\bin to your PATH variable if it isn’t already there. Verify the Setup:
Open a new Command Prompt (to ensure the new environment variables are loaded).
echo %JAVA_HOME%
(this is under construction and github may not reflect these latest changes yet)