/////////////////////////////////////////////////////////////// // ANDROID PROGRESS ; trying to make scol running on Android // // --------------------------------------------------------- // // // // author : brainsandwich // // history : // // - 26/03/2015 12:36 : creation // // - 26/03/2015 14:24 : nux->win // // - 30/03/2015 16:54 : looking at android_app_glue.h and // // Ogre SampleBrowser example. // // - 02/04/2015 11:52 : modified CMakeLists.txt, added // // AndroidMacros.cmake and templates for android project // // generation // // - 07/04/2015 10:08 : succesfully compiled and ran the // // scol VM on Android target (emulator). // // - 13/04/2015 15:52 : succesfully ran a scol application // // within a scol VM on android. + CMake is easier to use // // and configure. // // // // --------------------------------------------------------- // /////////////////////////////////////////////////////////////// * Reduced the cmake config to minimum : --------------------------------------- - Changed CMakeList.txt to make it not link most of the plugins. - Added -Wno-write-strings to CMAKE_EXE_LINKER_FLAGS in the android toolchain (suppress warnings for conversion from const strings to char*, ie char* var = "blableh";) - The -Wno-write-strings is a CMAKE_CXX_FLAG, not a CMAKE_EXE_LINKER_FLAGS - Added -std=c++11 in CMAKE_CXX_FLAG too. * Tried building scol with linux "OS_specific" src & includes : ---------------------------------------------------------------- - Cleaned some src & headers in the vm. Changed Windows-specific to boost when possible ; ifdef'd "WIN32" when not (then relying on POSIX function known by Android NDK). - Failed to link : It compiles the project but fails to link, there are too many errors. Aborting this method for the moment * Tried building scol with reduced windows "OS_specific" src & includes : ------------------------------------------------------------------------- - Reduced src to compile only myloop.cpp - Looking for a way to reproduce the Ogre SampleBrowser way to catch window handle with "native app glue" (struct android_app) * The looks promising : -------------------------------------------- - Owing to OgreSampleBrowser src, it seems that Android Native Kit provides a way to run application without the need of Java. Instead of "int main(int argc, char** argv)", Android uses a "android_main(android_app* state)" as entry point for new threads. - info : http://mobilepearls.com/labs/native-android-api/ * Before digging into android headers, trying to produce clean android project : -------------------------------------------------------------------------------- - Native android project follow a specific hierarchy. In order to get a working application, producing a correct android ndk project from Scol seems to be a good idea. - According to the "sandbox project" (dev/android/jnitests/testcmake), the main CMakeLists.txt has been modified and templates + AndroiMacros.cmake have been added. - Scol compiles but linking libscol.so systematically fails. Error due to Boost inclues not found. * Using only Android *.mk files to configure and build the project works : -------------------------------------------------------------------------- - The AndroidJNI.cmake creates a Android.mk linking all the sources of the VM and the static libraries. It produces a dynamic library used by the java "NativeActivity" (default activity). - The entry point used is "android_main", declared in myloop.cpp. - At the time of run, * CMake project is now user friendly : -------------------------------------- ///////////////////////////////////////////////////////////////