我的Android应用程序可以分为客户端UI层和API层。我想将它们部署为单独的“应用程序”,以便可以重用 API 层。
在 Eclipse 中,我将它们编写为 2 个独立的 Android 项目。在客户端 UI 项目中,我在其构建路径中声明 API 项目(项目 -> 属性 -> Java 构建路径 -> 项目)。
当通过 Eclipse 部署客户端 UI 项目时(在我实际的 G1 手机上),它也会自动部署 API 项目(打包到 APK 中)。
但是,当启动客户端 UI 应用程序时,我遇到了此错误:
Uncaught handler: thread main exiting due to uncaught exception
java.lang.VerifyError: myapp.android.testuiclient.Main
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1472)
at android.app.Instrumentation.newActivity(Instrumentation.java:1097)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2316)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
at android.app.ActivityThread.access$2100(ActivityThread.java:116)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4203)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
at dalvik.system.NativeStart.main(Native Method)
环顾四周,它seems就像我应该在 UI 客户端的清单文件中的应用程序下声明使用库一样。
问题是,我应该在 android:name 下放置什么用于使用库?开发指南说“库的名称”,但是库的名称是什么? (我的意思是,在我的 API“应用程序”中,我没有在任何地方声明任何库名称。)
我不相信<uses-library>
在这里相关。
您的选择是:
将您的“库”实现为 JAR,以便在编译时包含在其他项目中。只要您的图书馆不尝试定义资源,您就处于良好状态。请参阅我的 CWAC 项目github页面 http://github.com/commonsguy有关如何设置的示例。
将您的“库”实现为包含使用 AIDL 定义的远程服务的单独 APK。不要像目前在 Eclipse 中那样尝试混合它们的构建路径,而是遵循 AIDL 规则并让每个项目使用通用的 AIDL 定义。您还需要安排您的用户安装这两个 APK。
- 将您的“库”实现为一个单独的 APK,其中包含
ContentProvider
。不要尝试像您目前在 Eclipse 中所做的那样混合它们的构建路径,而是遵循ContentProvider
规则并让客户端通过ContentResolver
和定义的 Uri。您还需要安排您的用户安装这两个 APK。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)