我的
Android应用程序可以分为客户端UI层和API层.我想将它们部署为单独的“应用程序”,以便可以重用API层.
在Eclipse中,我将它们编写为2个独立的Android项目.在客户端UI项目中,我在其构建路径中声明API项目(项目 – > Properies – > Java构建路径 – >项目).
通过Eclipse(在我的实际G1手机上)部署客户端UI项目时,它会自动部署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)
环顾四周,似乎我应该在UI客户端的清单文件中声明应用程序下的uses-library.
问题是,我应该在android:name下使用库?开发指南说“图书馆的名称”,但图书馆的名称是什么? (我的意思是,在我的API“应用程序”中,我没有在任何地方声明任何库名.)
解决方法
我不相信< uses-library>在这里是相关的.
你的选择是:
>将您的“库”实现为JAR,以便在编译时包含在其他项目中.只要您的图书馆没有尝试定义资源,您的状态就会很好.有关如何进行设置的示例,请参阅我的github page上的CWAC项目.>将您的“库”实现为包含使用AIDL定义的远程服务的单独APK.不要像在Eclipse中那样尝试混合它们的构建路径,而是遵循AIDL规则并让每个项目使用一个共同的AIDL定义.您还需要安排用户安装两个APK.>将您的“库”实现为包含ContentProvider的单独APK.不要像在Eclipse中那样尝试混合他们的构建路径,而是遵循ContentProvider规则并让客户端通过ContentResolver和定义的Uri访问提供者.您还需要安排用户安装两个APK.