2009-01-10

Android Dev Phone 1 その10

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するとかします。