对此有几个现有问题,但似乎没有一个解决方案对我有用。
我想给我的应用贴上白标签。第一步是转到项目的属性并将项目标记为库项目。
然后,创建一个新的 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 > Properties > Android > Library > 并将我的 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 中的 /src 文件夹完全是空的?我没有向 WhitelabelTest 添加新的源代码。我纯粹是在尝试将我的库项目导入到一个新的 Android 应用程序项目中,这样我就可以共享代码并只更新 /res 中的一些可绘制对象。