setup
- install […]
android update sdk –no-ui
on linux with emacs
- install sdk + use it to install runtimes etc: http://developer.android.com/sdk/installing.html
- useful but a bit out of date: http://riddell.us/AndroidWithEmacsOnUbuntu.html
- (install everything to ~/opt and set up paths)
setting up the hardware:
- enable debugging on device
- set permissions on usb device by creating /etc/udev/rules.d/51-android.rules (0bb4 is htc vendor):
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
test it works with:
adb devices
creating a project (from http://developer.android.com/guide/tutorials/hello-world.html ):
android create project \ --package com.android.helloandroid \ --activity HelloAndroid \ --target 2 \ --path <path-to-your-project>/HelloAndroid
Use “android list targets” to get the target number
Load a file into emacs, M-X android-ant-install, and the package should appear in your apps list
Sidestepping java with the NDK: http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
Building ndk sources by putting the ndk directory on your path and running
ndk-build
Compiler flags are in Android.mk, debug options are set by the java project, add:
android:debuggable="true"
To the application properties in the manifest.
Writing to the sdcard from the ndk - you can just use fopen(“/sdcard/newfile.txt”) but you need to remember to add:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
To the manefest.
Debugging on emulator - in order to find the symbols first run:
set solib-search-path /path/to/your/project/obj/local/armeabi
Or, alternatively use addr2line to convert a crash address to the source location:
adb logcat (... lots of stuff including stack trace ...) addr2line -e libfoo.so deadbeef