如何将系统权限文件/系统库添加到Android

时间:2010-07-02 10:29:39

标签: android

我试图关注Diane Hackborn的request

  

对于允许应用程序为root的权限,可以   添加框架的权限   < ...取代。但是,仍然必须如此   某种共享库(即使是   它是应用程序的存根   请求以及包裹   经理不应该允许   申请获得此权限,除非   他们还要求共享库。

所以我使用了sdk的TicTacToe示例:

  1. 将com.example.android.tictactoe.library导出到/data/app/TTTLib.jar
  2. 使用以下行添加/system/etc/permissions/com.example.android.tictactoe.library.xml:

    <?xml version="1.0" encoding="utf-8"?> <permissions> <library name="com.example.android.tictactoe.library" file="/data/app/TTTLib.jar" /> </permissions>

  3. 编译com.example.android.tictactoe.MainActivity,方法是添加一个指向库的类文件夹,但不将库本身添加到.apk

  4. 它编译,安装,开始运行,但是当一个库类被调用崩溃时出现错误信息:

    W/dalvikvm(  464): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    E/AndroidRuntime(  464): FATAL EXCEPTION: main
    E/AndroidRuntime(  464): java.lang.NoClassDefFoundError: com.example.android.tictactoe.library.GameActivity
    E/AndroidRuntime(  464):    at com.example.android.tictactoe.MainActivity.startGame(MainActivity.java:51)
    E/A
    

    我想念什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

在AndroidManifest.xml中,您必须输入库依赖项,例如

<uses-library android:name="com.example.android.tictactoe.library"/>

此外,我认为您必须在将jar内容上传到设备之前对其进行DEX,类似于将scala库上传到设备。 见http://lampwww.epfl.ch/~michelou/android/emulator-android-sdk.htmlhttp://lampwww.epfl.ch/~michelou/android/android-examples-in-scala/android-sdk.zip 用于将jar dexes到dexed jar的脚本:) 希望它确实有意义。

检查android-sdk.zip中的bin / createdexlibs

基本上它应该像

~/android-sdks/platform-tools/dx --dex --output=TTTLib.jar TTLLib_input.jar