有几个现有的问题,但没有一个解决方案似乎对我有用。
我想白色标记我的应用。第一步是转到项目的属性并将项目标记为库项目。
然后,创建一个新的Android应用项目,打开属性,并将您的图书馆项目添加到Android标签的图书馆部分。
当我尝试编译时,我收到错误:
Unable to execute dex: Multiple dex files define Lcom/facebook/android/R$drawable;
我的应用使用Facebook库(不是jar形式)。附带的屏幕截图显示了我的工作区的外观。 com_facebook_android和另一个名为wheel的库不在我的顶级项目(库项目)libs文件夹中,但它们作为库添加到属性中。我想我曾试图将它们移到那里并遇到一大堆问题。该应用程序在没有它们的情况下正常运行,所以我离开了它。我不确定这是不是问题。
有人能指出我正确的方向吗?尽管存在有关stackoverflow的问题,但我还是无法弄清楚如何使其工作。
更新:
我几乎解决了这个问题。我开始以不同的方式将我的图书馆项目添加到WhitelabelTest。
我原本去过WhitelabelTest>属性> Android>图书馆>并将我的图书馆计划添加到列表中。我删除了这个。
相反,我进入了我的Library Project的bin文件夹,复制了jar文件(我们称之为LibraryProject.jar)并将其粘贴到WhitelabelTest的/ libs文件夹中。然后我右键单击LibraryProject.jar>构建路径>添加到构建路径。
这允许我编译WhitelabelTest项目并将其安装到我的模拟器上。
然而,当应用程序启动时,我收到了以下崩溃:
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate application com.example.whitelabeltest.WhitelabelTest: java.lang.ClassNotFoundException: com.example.whitelabeltest.WhitelabelTest in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.example.whitelabeltest-1.apk]
at android.app.LoadedApk.makeApplication(LoadedApk.java:466)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3260)
at android.app.ActivityThread.access$2200(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:969)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.example.whitelabeltest.WhitelabelTest in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.example.whitelabeltest-1.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at android.app.Instrumentation.newApplication(Instrumentation.java:942)
at android.app.LoadedApk.makeApplication(LoadedApk.java:461)
... 11 more
也许这是因为WhitelabelTest中的my / src文件夹是完全空的?我没有向WhitelabelTest添加任何新的源代码。我纯粹是试图将我的图书馆计划导入一个新的Android应用程序项目,这样我就可以共享代码并只更新/ res中的一些drawable。
答案 0 :(得分:0)
这意味着您的整套罐子都有多余的类。最终,Android的包装意味着将所有内容编译成最终产品。当你刚刚开始编写现成的组件时,可能会发生罐A和B也包含来自项目C的类。你尝试了几个“几个”的东西?
你需要查看你的lib目录和依赖项目。可能会打开您认为可能是问题根源的jar文件。
您可以从其他地方获取罐子,使它们不冲突,从源头获取它们并构建它们或编辑它们并删除重复文件。在任何情况下,您可能正在修改更改分发许可证的文件。
您最好的希望是在项目配置中以某种方式隐含地包含相同的jar。