author | Sam Lantinga <slouken@libsdl.org> |
Wed, 03 Oct 2012 19:02:46 -0700 | |
changeset 6549 | db16b819e1d1 |
parent 6387 | 58f0fb54bf88 |
child 6631 | 47ab7ba21530 |
permissions | -rw-r--r-- |
4727 | 1 |
================================================================================ |
4726 | 2 |
Simple DirectMedia Layer for Android |
4727 | 3 |
================================================================================ |
4725 | 4 |
|
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
5 |
Requirements: |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
6 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
7 |
Android SDK |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
8 |
http://developer.android.com/sdk/index.html |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
9 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
10 |
Android NDK r4 or later |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
11 |
http://developer.android.com/sdk/ndk/index.html |
4725 | 12 |
|
4967
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
13 |
|
4727 | 14 |
================================================================================ |
15 |
How the port works |
|
16 |
================================================================================ |
|
17 |
||
18 |
- Android applications are Java-based, optionally with parts written in C |
|
19 |
- As SDL apps are C-based, we use a small Java shim that uses JNI to talk to |
|
20 |
the SDL library |
|
21 |
- This means that your application C code must be placed inside an android |
|
22 |
Java project, along with some C support code that communicates with Java |
|
23 |
- This eventually produces a standard Android .apk package |
|
24 |
||
4967
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
25 |
The Android Java code implements an "activity" and can be found in: |
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
26 |
android-project/src/org/libsdl/app/SDLActivity.java |
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
27 |
|
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
28 |
The Java code loads your game code, the SDL shared library, and |
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
29 |
dispatches to native functions implemented in the SDL library: |
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
30 |
src/SDL_android.cpp |
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
31 |
|
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
32 |
Your project must include some glue code that starts your main() routine: |
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
33 |
src/main/android/SDL_android_main.cpp |
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
34 |
|
4727 | 35 |
|
36 |
================================================================================ |
|
37 |
Building an app |
|
38 |
================================================================================ |
|
39 |
||
4725 | 40 |
Instructions: |
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
41 |
1. Copy the android-project directory wherever you want to keep your projects and rename it to the name of your project. |
6273
2fa7e0540f95
Fixed bug 1405 - README.android misses build instruction: copy SDL_config_android.h -> SDL_config.h
Sam Lantinga <slouken@libsdl.org>
parents:
4976
diff
changeset
|
42 |
2. Move this SDL directory into the <project>/jni directory and then copy |
2fa7e0540f95
Fixed bug 1405 - README.android misses build instruction: copy SDL_config_android.h -> SDL_config.h
Sam Lantinga <slouken@libsdl.org>
parents:
4976
diff
changeset
|
43 |
SDL_config_android.h to SDL_config.h inside the include folder |
4964
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
44 |
3. Place your application source files in the <project>/jni/src directory |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
45 |
4. Edit <project>/jni/src/Android.mk to include your source files |
4727 | 46 |
5. Run 'ndk-build' (a script provided by the NDK). This compiles the C source |
4964
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
47 |
|
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
48 |
If you want to use the Eclipse IDE, skip to the Eclipse section below. |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
49 |
|
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
50 |
6. Edit <project>/local.properties to point to the Android SDK directory |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
51 |
7. Run 'ant debug' in android/project. This compiles the .java and eventually |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
52 |
creates a .apk with the native code embedded |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
53 |
8. 'ant install' will push the apk to the device or emulator (if connected) |
4725 | 54 |
|
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
55 |
Here's an explanation of the files in the Android project, so you can customize them: |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
56 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
57 |
android-project/ |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
58 |
AndroidManifest.xml - package manifest, do not modify |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
59 |
build.properties - empty |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
60 |
build.xml - build description file, used by ant |
6387
58f0fb54bf88
Bumped up Android SDK version in README.android.
Ryan C. Gordon <icculus@icculus.org>
parents:
6354
diff
changeset
|
61 |
default.properties - holds the ABI for the application, currently android-5 which corresponds to the Android 2.0 system image |
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
62 |
local.properties - holds the SDK path, you should change this to the path to your SDK |
4967
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
63 |
jni/ - directory holding native code |
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
64 |
jni/Android.mk - Android makefile that includes all subdirectories |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
65 |
jni/SDL/ - directory holding the SDL library files |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
66 |
jni/SDL/Android.mk - Android makefile for creating the SDL shared library |
4967
f74a3f94c408
Added some more information on how the port works
Sam Lantinga <slouken@libsdl.org>
parents:
4965
diff
changeset
|
67 |
jni/src/ - directory holding your C/C++ source |
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
68 |
jni/src/Android.mk - Android makefile that you should customize to include your source code and any library references |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
69 |
res/ - directory holding resources for your application |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
70 |
res/drawable-* - directories holding icons for different phone hardware |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
71 |
res/layout/main.xml - place holder for the main screen layout, overridden by the SDL video output |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
72 |
res/values/strings.xml - strings used in your application, including the application name shown on the phone. |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
73 |
src/org/libsdl/app/SDLActivity.java - the Java class handling the initialization and binding to SDL. Be very careful changing this, as the SDL library relies on this implementation. |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
74 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
75 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
76 |
================================================================================ |
6330
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
77 |
Pause / Resume behaviour |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
78 |
================================================================================ |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
79 |
|
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
80 |
If SDL is compiled with SDL_ANDROID_BLOCK_ON_PAUSE defined, the event loop will |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
81 |
block itself when the app is paused (ie, when the user returns to the main |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
82 |
Android dashboard). Blocking is better in terms of battery use, and it allows your |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
83 |
app to spring back to life instantaneously after resume (versus polling for |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
84 |
a resume message). |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
85 |
Upon resume, SDL will attempt to restore the GL context automatically. |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
86 |
In modern devices (Android 3.0 and up) this will most likely succeed and your |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
87 |
app can continue to operate as it was. |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
88 |
However, there's a chance (on older hardware, or on systems under heavy load), |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
89 |
where the GL context can not be restored. In that case you have to listen for |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
90 |
a specific message, (which is not yet implemented!) and restore your textures |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
91 |
manually or quit the app (which is actually the kind of behaviour you'll see |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
92 |
under iOS, if the OS can not restore your GL context it will just kill your app) |
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
93 |
|
0fa55ca2efdd
Fixes #1422, restores GL context automatically under Android
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6273
diff
changeset
|
94 |
================================================================================ |
6354
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
95 |
Threads and the JAVA VM |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
96 |
================================================================================ |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
97 |
|
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
98 |
For a quick tour on how Linux native threads interoperate with the JAVA VM, take |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
99 |
a look here: http://developer.android.com/guide/practices/jni.html |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
100 |
If you want to use threads in your SDL app, it's strongly recommended that you |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
101 |
do so by creating them using SDL functions. This way, the required attach/detach |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
102 |
handling is managed by SDL automagically. If you have threads created by other |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
103 |
means and they make calls to SDL functions, make sure that you call |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
104 |
Android_JNI_SetupThread before doing anything else otherwise SDL will attach |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
105 |
your thread automatically anyway (when you make an SDL call), but it'll never |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
106 |
detach it. |
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
107 |
|
17840f487124
Fixes #1422, removes global JNI Env, uses per thread copies, adds thread auto detaching.
Gabriel Jacobo <gabomdq@gmail.com>
parents:
6330
diff
changeset
|
108 |
================================================================================ |
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
109 |
Additional documentation |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
110 |
================================================================================ |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
111 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
112 |
The documentation in the NDK docs directory is very helpful in understanding the build process and how to work with native code on the Android platform. |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
113 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
114 |
The best place to start is with docs/OVERVIEW.TXT |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
115 |
|
4725 | 116 |
|
4964
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
117 |
================================================================================ |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
118 |
Using Eclipse |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
119 |
================================================================================ |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
120 |
|
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
121 |
First make sure that you've installed Eclipse and the Android extensions as described here: |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
122 |
http://developer.android.com/sdk/eclipse-adt.html |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
123 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
124 |
Once you've copied the SDL android project and customized it, you can create an Eclipse project from it: |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
125 |
* File -> New -> Other |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
126 |
* Select the Android -> Android Project wizard and click Next |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
127 |
* Enter the name you'd like your project to have |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
128 |
* Select "Create project from existing source" and browse for your project directory |
6387
58f0fb54bf88
Bumped up Android SDK version in README.android.
Ryan C. Gordon <icculus@icculus.org>
parents:
6354
diff
changeset
|
129 |
* Make sure the Build Target is set to Android 2.0 |
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
130 |
* Click Finish |
4964
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
131 |
|
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
132 |
|
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
133 |
================================================================================ |
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
134 |
Loading files and resources |
4964
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
135 |
================================================================================ |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
136 |
|
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
137 |
NEED CONTENT |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
138 |
|
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
139 |
|
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
140 |
================================================================================ |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
141 |
Troubleshooting |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
142 |
================================================================================ |
6c645018741e
Build the SDL library as a shared object on Android, so it will work correctly with SDL_image and SDL_ttf.
Sam Lantinga <slouken@libsdl.org>
parents:
4954
diff
changeset
|
143 |
|
4965
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
144 |
You can create and run an emulator from the Eclipse IDE: |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
145 |
* Window -> Android SDK and AVD Manager |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
146 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
147 |
You can see if adb can see any devices with the following command: |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
148 |
adb devices |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
149 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
150 |
You can see the output of log messages on the default device with: |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
151 |
adb logcat |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
152 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
153 |
You can push files to the device with: |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
154 |
adb push local_file remote_path_and_file |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
155 |
|
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
156 |
You can push files to the SD Card at /sdcard, for example: |
91d0085b7560
Added the Android project and lots of info to README.android
Sam Lantinga <slouken@libsdl.org>
parents:
4964
diff
changeset
|
157 |
adb push moose.dat /sdcard/moose.dat |
4727 | 158 |
|
4976
3811132c584f
Added information about starting a command shell on the device
Sam Lantinga <slouken@libsdl.org>
parents:
4975
diff
changeset
|
159 |
You can see the files on the SD card with a shell command: |
3811132c584f
Added information about starting a command shell on the device
Sam Lantinga <slouken@libsdl.org>
parents:
4975
diff
changeset
|
160 |
adb shell ls /sdcard/ |
3811132c584f
Added information about starting a command shell on the device
Sam Lantinga <slouken@libsdl.org>
parents:
4975
diff
changeset
|
161 |
|
3811132c584f
Added information about starting a command shell on the device
Sam Lantinga <slouken@libsdl.org>
parents:
4975
diff
changeset
|
162 |
You can start a command shell on the default device with: |
3811132c584f
Added information about starting a command shell on the device
Sam Lantinga <slouken@libsdl.org>
parents:
4975
diff
changeset
|
163 |
adb shell |
3811132c584f
Added information about starting a command shell on the device
Sam Lantinga <slouken@libsdl.org>
parents:
4975
diff
changeset
|
164 |
|
4975
6fbc7044f343
Added information about doing a clean build
Sam Lantinga <slouken@libsdl.org>
parents:
4974
diff
changeset
|
165 |
You can do a clean build with the following commands: |
6fbc7044f343
Added information about doing a clean build
Sam Lantinga <slouken@libsdl.org>
parents:
4974
diff
changeset
|
166 |
ndk-build clean |
6fbc7044f343
Added information about doing a clean build
Sam Lantinga <slouken@libsdl.org>
parents:
4974
diff
changeset
|
167 |
ndk-build |
6fbc7044f343
Added information about doing a clean build
Sam Lantinga <slouken@libsdl.org>
parents:
4974
diff
changeset
|
168 |
|
4973
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
169 |
You can see the complete command line that ndk-build is using by passing V=1 on the command line: |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
170 |
ndk-build V=1 |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
171 |
|
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
172 |
If your application crashes in native code, you can use addr2line to convert the addresses in the stack trace to lines in your code. |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
173 |
|
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
174 |
For example, if your crash looks like this: |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
175 |
I/DEBUG ( 31): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 400085d0 |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
176 |
I/DEBUG ( 31): r0 00000000 r1 00001000 r2 00000003 r3 400085d4 |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
177 |
I/DEBUG ( 31): r4 400085d0 r5 40008000 r6 afd41504 r7 436c6a7c |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
178 |
I/DEBUG ( 31): r8 436c6b30 r9 435c6fb0 10 435c6f9c fp 4168d82c |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
179 |
I/DEBUG ( 31): ip 8346aff0 sp 436c6a60 lr afd1c8ff pc afd1c902 cpsr 60000030 |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
180 |
I/DEBUG ( 31): #00 pc 0001c902 /system/lib/libc.so |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
181 |
I/DEBUG ( 31): #01 pc 0001ccf6 /system/lib/libc.so |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
182 |
I/DEBUG ( 31): #02 pc 000014bc /data/data/org.libsdl.app/lib/libmain.so |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
183 |
I/DEBUG ( 31): #03 pc 00001506 /data/data/org.libsdl.app/lib/libmain.so |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
184 |
|
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
185 |
You can see that there's a crash in the C library being called from the main code. I run addr2line with the debug version of my code: |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
186 |
arm-eabi-addr2line -C -f -e obj/local/armeabi/libmain.so |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
187 |
and then paste in the number after "pc" in the call stack, from the line that I care about: |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
188 |
000014bc |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
189 |
|
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
190 |
I get output from addr2line showing that it's in the quit function, in testspriteminimal.c, on line 23. |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
191 |
|
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
192 |
You can add logging to your code to help show what's happening: |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
193 |
|
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
194 |
#include <android/log.h> |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
195 |
|
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
196 |
__android_log_print(ANDROID_LOG_INFO, "foo", "Something happened! x = %d", x); |
067b6ec8b751
Added information about decoding native stack traces
Sam Lantinga <slouken@libsdl.org>
parents:
4967
diff
changeset
|
197 |
|
4974
1cd0a891b69a
Added info for building your code without optimizations on
Sam Lantinga <slouken@libsdl.org>
parents:
4973
diff
changeset
|
198 |
If you need to build without optimization turned on, you can create a file called "Application.mk" in the jni directory, with the following line in it: |
1cd0a891b69a
Added info for building your code without optimizations on
Sam Lantinga <slouken@libsdl.org>
parents:
4973
diff
changeset
|
199 |
APP_OPTIM := debug |
1cd0a891b69a
Added info for building your code without optimizations on
Sam Lantinga <slouken@libsdl.org>
parents:
4973
diff
changeset
|
200 |
|
4727 | 201 |
|
202 |
================================================================================ |
|
203 |
Known issues |
|
204 |
================================================================================ |
|
205 |
||
206 |
- SDL audio (although it's mostly written, just not working properly yet) |
|
207 |
- TODO. I'm sure there's a bunch more stuff I haven't thought of |