Refine the build system
This commit is contained in:
1320
build/envsetup.sh
Normal file
1320
build/envsetup.sh
Normal file
File diff suppressed because it is too large
Load Diff
16
readme.txt
16
readme.txt
@@ -30,7 +30,7 @@ How to compile demo application
|
|||||||
Launch commands
|
Launch commands
|
||||||
rm project/jni/application/src
|
rm project/jni/application/src
|
||||||
ln -s ballfield project/jni/application/src
|
ln -s ballfield project/jni/application/src
|
||||||
./ChangeAppSettings.sh -a
|
./changeAppSettings.sh -a
|
||||||
android update project -p project -t android-15
|
android update project -p project -t android-15
|
||||||
Then edit file build.sh if needed to add NDK dir to your PATH, then launch it.
|
Then edit file build.sh if needed to add NDK dir to your PATH, then launch it.
|
||||||
It will compile a bunch of libs under project/libs/armeabi,
|
It will compile a bunch of libs under project/libs/armeabi,
|
||||||
@@ -59,6 +59,10 @@ to compile it remove project/jni/application/src symlink and make new one pointi
|
|||||||
Note that GL ES is NOT pure OpenGL - there are no glBegin() and glEnd() call and other widely used functions,
|
Note that GL ES is NOT pure OpenGL - there are no glBegin() and glEnd() call and other widely used functions,
|
||||||
and generally it will take a lot of effort to port OpenGL application to GL ES.
|
and generally it will take a lot of effort to port OpenGL application to GL ES.
|
||||||
|
|
||||||
|
How to compile a specific SDL based application
|
||||||
|
===============================================
|
||||||
|
. build/envsetup.sh
|
||||||
|
build
|
||||||
|
|
||||||
How to compile your own application
|
How to compile your own application
|
||||||
===================================
|
===================================
|
||||||
@@ -235,7 +239,7 @@ and that may be not desired for older phones with very little storage.
|
|||||||
The script app2sd.sh will re-package your .apk file in such a way that
|
The script app2sd.sh will re-package your .apk file in such a way that
|
||||||
the shared libraries will not be extracted by Android OS but by application itself,
|
the shared libraries will not be extracted by Android OS but by application itself,
|
||||||
and it will remove them from internal storage right after starting up,
|
and it will remove them from internal storage right after starting up,
|
||||||
so you still need that space free, but only temporarily.
|
so you still need that space free, but only temporarily.
|
||||||
However your application will start up slower.
|
However your application will start up slower.
|
||||||
|
|
||||||
SDL supports AdMob advertisements, you need to set your publisher ID inside AndroidAppSettings.cfg,
|
SDL supports AdMob advertisements, you need to set your publisher ID inside AndroidAppSettings.cfg,
|
||||||
@@ -261,7 +265,7 @@ Android application sleep/resume support
|
|||||||
Application may be put to background at any time, for example if user gets phone call onto the device.
|
Application may be put to background at any time, for example if user gets phone call onto the device.
|
||||||
The application will lose OpenGL context then, and has to re-create it when put to foreground.
|
The application will lose OpenGL context then, and has to re-create it when put to foreground.
|
||||||
|
|
||||||
The SDL provides function
|
The SDL provides function
|
||||||
SDL_ANDROID_SetApplicationPutToBackgroundCallback( callback_t appPutToBackground, callback_t appRestored );
|
SDL_ANDROID_SetApplicationPutToBackgroundCallback( callback_t appPutToBackground, callback_t appRestored );
|
||||||
where callback_t is function pointer of type "void (*) void".
|
where callback_t is function pointer of type "void (*) void".
|
||||||
The default callbacks will call another Android-specific functions:
|
The default callbacks will call another Android-specific functions:
|
||||||
@@ -276,14 +280,14 @@ If you're using pure SDL 1.2 API (with or without HW acceleration) you don't nee
|
|||||||
the SDL itself will re-create GL textures and fill them with pixel data from existing SDL HW surfaces,
|
the SDL itself will re-create GL textures and fill them with pixel data from existing SDL HW surfaces,
|
||||||
so you may leave the callbacks to defaults.
|
so you may leave the callbacks to defaults.
|
||||||
|
|
||||||
If you're using SDL 1.3 API and using SDL_Texture, then the textures pixeldata is lost - you will need
|
If you're using SDL 1.3 API and using SDL_Texture, then the textures pixeldata is lost - you will need
|
||||||
to call SDL_UpdateTexture() to refill texture pixeldata from appRestored() callback for all your textures.
|
to call SDL_UpdateTexture() to refill texture pixeldata from appRestored() callback for all your textures.
|
||||||
If you're using compatibility API with SDL_Surfaces you don't have to worry about that.
|
If you're using compatibility API with SDL_Surfaces you don't have to worry about that.
|
||||||
|
|
||||||
If you're using SDL with OpenGL with either SDL 1.2 or SDL 1.3, the situation is even more grim -
|
If you're using SDL with OpenGL with either SDL 1.2 or SDL 1.3, the situation is even more grim -
|
||||||
not only all your GL textures are lost, but all GL matrices, blend modes, etc. has to be re-created.
|
not only all your GL textures are lost, but all GL matrices, blend modes, etc. has to be re-created.
|
||||||
|
|
||||||
OS may decide there's too little free RAM left on device, and kill background applications
|
OS may decide there's too little free RAM left on device, and kill background applications
|
||||||
without notice, so it vill be good to create temporary savegame etc. from appPutToBackground() callback.
|
without notice, so it vill be good to create temporary savegame etc. from appPutToBackground() callback.
|
||||||
|
|
||||||
Also it's a good practice to pause any application audio, especially if the user gets phone call,
|
Also it's a good practice to pause any application audio, especially if the user gets phone call,
|
||||||
@@ -390,7 +394,7 @@ If the error string is like this:
|
|||||||
|
|
||||||
I/dalvikvm(18105): Unable to dlopen(/data/data/net.olofson.kobodl/lib/libapplication.so): Cannot load library: link_image[1995]: failed to link libapplication.so
|
I/dalvikvm(18105): Unable to dlopen(/data/data/net.olofson.kobodl/lib/libapplication.so): Cannot load library: link_image[1995]: failed to link libapplication.so
|
||||||
|
|
||||||
that means your application contains undefined symbols, absent in the system libraries,
|
that means your application contains undefined symbols, absent in the system libraries,
|
||||||
you may check for all missing symbols by running script checkMissing.sh .
|
you may check for all missing symbols by running script checkMissing.sh .
|
||||||
That typically happens because of linking to the dynamic libstdc++ which is not included into the .apk file -
|
That typically happens because of linking to the dynamic libstdc++ which is not included into the .apk file -
|
||||||
specify "-lgnustl_static" in the linker flags to fix that.
|
specify "-lgnustl_static" in the linker flags to fix that.
|
||||||
|
|||||||
Reference in New Issue
Block a user