Heads Up: Adding a library to Android
http://groups.google.com/group/android-platform/browse_thread/thread/618971d3f7608f4c/2e15c8be7abca1e4
development/samples/PlatformLibrary ですが、
adb install $MYDROID/out/target/product/dream/data/app/PlatformLibraryClient.apk
しても、INSTALL_FAILED_MISSING_SHARED_LIBRARY って出てインストールできません。
out/target/product/dream/system/framework/com.example.android.platform_library.jar を他のjarファイルと同様に /system/framework に置いてみても、やはり同じエラー。
そもそもこのエラー誰がどうやって出してるのかと探ってみれば
frameworks/base/services/java/com/android/server/PackageManagerService.java line 1639
/etc/permissions.xml に書いてあるjarしか許可しないようになってるわけでした。
frameworks/base/data/etc/permissions.xml に
<library name="com.example.android.platform_library"
file="/data/app/com.example.android.platform_library.jar"/>
とか追加して/system/etcに置いて、jarを/data/app/com.example.android.platform_library.jar に置いて再起動すればインストールできました。
out/target/product/dream/obj/SHARED_LIBRARIES/libplatform_library_jni_intermediates/LINKED/libplatform_library_jni.so は、/system/lib に置きます。
/init.rc で LD_LIBRARY_PATH 指定してますが、/を書き換えるにはfastbootで焼かないといけないような気がするので、/system/libに置かざるを得ないかなと。
/systemいじるには
mount -o rw,remount /dev/block/mtdblock3 /system
で。
直接adb pushできないところへは、busybox使ってcpするとかします。