我正在尝试构建一个SDK外接程序,以便开发人员可以使用我们的库。我首先使用这个示例(包含系统服务的jar库外接程序):
https://github.com/gibsson/BasicService
https://github.com/gibsson/BasicClient
我遵循了BasicService和BasicClient github页面的说明,通过使用AOSP (用于Android4.3)构建这两个应用程序,成功地创建了一个工作映像。
通过将以下内容添加到device.mk文件中,我构建了这两个包:
PRODUCT_PACKAGES += \
com.gibsson.basic.service.lib \
com.gibsson.basic.service.lib.xml \
BasicServiceApp \
BasicClient这样,一切都是建立在形象和工作。
End of introduction
我从构建过程中删除了BasicClient包,我正试图将这个客户端与SDK一起带到Android中,就像Android开发人员所做的那样(他们无法访问AOSP)
basic_sdk_addon是通过遵循指令并使用以下命令成功创建的:
AOSP$ make PRODUCT-basic_sdk_addon-sdk_addon我使用用户定义的repo在Android中安装了外接程序。在BasicClient项目中,我必须手动将.jar文件添加到app/libs文件夹中,然后单击"Add“,以便正确编译BasicClient。
当试图从BasicClient运行/调试AndroidStudio时,我得到以下错误(来自logcat,更详细):
I/ActivityManager( 2544): Start proc com.gibsson.basic.client for activity com.gibsson.basic.client/.BasicActivity: pid=3311 uid=10044 gids={50044, 1015, 1028}
W/dalvikvm( 3311): Class resolved by unexpected DEX: Lcom/gibsson/basic/client/BasicActivity;(0x4213e238):0x40030000 ref [Lcom/gibsson/basic/service/lib/BasicManager;] Lcom/gibsson/basic/service/lib/BasicManager;(0x4213e238):0x4001d000
W/dalvikvm( 3311): (Lcom/gibsson/basic/client/BasicActivity; had used a different Lcom/gibsson/basic/service/lib/BasicManager; during pre-verification)
D/AndroidRuntime( 3311): Shutting down VM
W/dalvikvm( 3311): threadid=1: thread exiting with uncaught exception (group=0x41891700)
E/AndroidRuntime( 3311): FATAL EXCEPTION: main
E/AndroidRuntime( 3311): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
E/AndroidRuntime( 3311): at com.gibsson.basic.client.BasicActivity.<init>(BasicActivity.java:18)
E/AndroidRuntime( 3311): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime( 3311): at java.lang.Class.newInstance(Class.java:1130)
E/AndroidRuntime( 3311): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
E/AndroidRuntime( 3311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
E/AndroidRuntime( 3311): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
E/AndroidRuntime( 3311): at android.app.ActivityThread.access$600(ActivityThread.java:141)
E/AndroidRuntime( 3311): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
E/AndroidRuntime( 3311): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 3311): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 3311): at android.app.ActivityThread.main(ActivityThread.java:5103)
E/AndroidRuntime( 3311): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3311): at java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime( 3311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
E/AndroidRuntime( 3311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 3311): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 2544): Force finishing activity com.gibsson.basic.client/.BasicActivity我了解到发现的BasicManager dex文件与它期望的不匹配。我验证了AOSP和Android之间相同版本的工具是否使用相同的JDK (1.6.0.45)和相同的编译版本(18)。
发布于 2014-07-14 16:27:58
明白了:导入BasicService项目似乎修改了Dependencies范围下拉菜单(在project中)。现在我可以选择提供的,而不是编译,并且应用程序运行得很好。
在从头创建新项目时,我只有以下选择:编译、运行时。
因此,我已经研究了这两个项目之间的差异,而build.gradle文件是唯一被更改的文件:compile被provided所取代。
dependencies {
provided files('libs/com.orthogone.canvas.service.lib.jar')
}UI中似乎有一个bug,因为Dependencies即使修改了build.gradle,也不会提供这种选择。
另一个重要注意事项: AndroidManifest.xml必须在<appliation>部分中包含<uses-library>信息:
<uses-library
android:name="com.gibsson.basic.service.lib"
android:required="true" />https://stackoverflow.com/questions/24700422
复制相似问题