irrlicht/examples/01.HelloWorld_Android/readme.txt

96 lines
4.3 KiB
Plaintext

------------
REQUIREMENTS
------------
To use Android you need to have installed:
- Android SDK (from http://developer.android.com)
- Android NDK (from http://developer.android.com)
- ant (a build tool commonly used for Java)
- A Java jdk (for example openjdk-6-jdk)
- GNU Make 3.81 or later
- A recent version of awk
- On Windows you need to have Cygwin (at least version 1.7) installed
----------------------------
BUILDING Irrlicht & your App
----------------------------
1. Assign your Android SDK path to an ANDROID_HOME environment variable.
2. Add $ANDROID_HOME/tools and $ANDROID_HOME/platform-tools and the Android NDK main folder to your PATH environment variable.
3. Go to: source/Irrlicht/Android and call "ndk-build" or "ndk-build NDEBUG=1"
4. Go to: examples/01.HelloWorld_Android and call "ndk-build" or "ndk-build NDEBUG=1"
5. Call "ant debug" to create package
6. Connect device to PC (with USB debugging mode ON) or turn on emulator.
7. Call "adb -d install bin/HelloWorldMobile-debug.apk" (if you use emulator please add "-e" parameter instead of "-d") to install package on your device/emulator.
Troubleshooting:
Error: Unable to resolve project target 'android-10'
Solution: Run "android sdk" in sdk/tools and install API 10.
Alternatively you can probably (not yet tested) set another APP_PLATFORM
in the Application.mk's for the project and for Irrlicht. In this case you
should likely also change the android:minSdkVersion in the AndroidManifest.xml
-----
FILES
-----
AndroidManifest.xml:
Every Android application needs one of those to describe the needs of the application.
Must have exactly this name.
See http://developer.android.com/guide/topics/manifest/manifest-intro.html
build.xml:
Ant build file to create the final package.
You might want to create a new one as described in the Android documentation:
http://developer.android.com/tools/projects/projects-cmdline.html
That will then also update project.properties.
project.properties
Contains the build target (and maybe other project properties). Must exist.
jni:
A folder by this name must exist below the folder where you have build.xml.
Usually it contains the native (c/c++) source files, but in our case we put
the source-files one level higher (with LOCAL_PATH in Android.mk).
jni/Android.mk:
The Makefile for the project.
Source-files in the project are added to LOCAL_SRC_FILES
In the Irrlicht example it also copies the assets, but you can
also already create your project assets in the right place.
jni/Application.mk:
Optional file which for example restricts which modules are installed and
where you can set specific target architectures.
More info about this can be found in the ndk docs.
res:
A folder with resources which districuted with your application and can be accessed via ID's.
Unfortunately no direct NDK access to resources at the time of writing this. So you either have
to access them with java-code and copy to c++ somehow or you have to use hacks to read the format
directly (which is done by some apps, but not future-safe and google recommends not doing that).
Please check the official "App Resources" android developer documention, as this is rather complex.
We use it only for the application icons in this example.
assets:
Files in here are distributed with your app. It's acting like a read-only file system.
assets/media/Shaders:
Shader code needed by the OGLES2 driver to simulate a fixed function pipeline.
In the example this code is automatically copied within the Android.mk makefile.
The path where the shaders are searched is set in the IRR_OGLES2_SHADER_PATH define in IrrCompileConfig.h
The names are hardcoded so they have to be identical to those found in media/Shaders.
You can rewrite the shaders, but ensure to add some working shaders files by those names.
The OGLES1 driver doesn't need those files.
obj:
All object and library files mentioned in the Android.mk are put in here before linking.
libs:
Contains the binaries of your application after compilation. The application itself is a lib(probably because native code can't run directly but only as lib).
src:
The src folder is needed when you have Java sources and should only contain .java and .aidl files.
Although the examples doesn't use Java the makefile creates this folder as the ant build.xml in the android sdk needs it.