我被android库的东西卡住了。

我有

  • 一个专门用于图书馆的项目(我们开个玩笑)。
  • 一个带有应用程序的项目(我们称之为testPhilippe)
  • 从lib生成的jar(我们称其为jokerly.jar)

  • 这个开玩笑的库是使用视图,xml,图片和生成的文件(例如R.java)的图形库。

    我设法启动了我的应用程序,而在properties / android / library中导入了Jokerly lib(项目)没有任何问题。一切正常-这是图片:

    !

    另一方面,当我尝试在Java构建路径中导入jokerly.jar(并从与上面相同的位置删除jokerly lib项目)时,无论复选框和菜单项的状态如何,我都会遇到classNotFound异常。 jokerly.jar在properties / javabuildpath / order和export中的位置。
    我也尝试过手动将其放在libs文件夹中,但是问题是相同的。


    java.lang.RuntimeException: Unable to instantiate application com.example.testphilippe.Jokerly: java.lang.ClassNotFoundException: Didn't find class "com.example.testphilippe.Jokerly" on path: DexPathList[[zip file "/data/app/com.example.testphilippe-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.testphilippe-2, /vendor/lib, /system/lib]]
    at android.app.LoadedApk.makeApplication(LoadedApk.java:509)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4417)
    at android.app.ActivityThread.access$1300(ActivityThread.java:141)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5103)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.testphilippe.Jokerly" on path: DexPathList[[zip file "/data/app/com.example.testphilippe-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.testphilippe-2, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
    at android.app.Instrumentation.newApplication(Instrumentation.java:975)
    at android.app.LoadedApk.makeApplication(LoadedApk.java:504)
    09-11 11:13:37.350: E/AndroidRuntime(22080):    ... 11 more
    

    我尝试了一些(根据@Vj_Droid的建议):
    我从项目外部在Java构建路径(而不是lib文件夹)中添加了jokerly.jar。如果未选中该复选框,我将遇到相同的错误。如果我检查它,则出现以下错误。如果我在libs文件夹中手动添加jokerly.jar,然后将其从libs文件夹添加到javabuild paht中,即使未选中该框,我也有相同的错误(如下)。
    [2013-09-11 11:59:42 - TestPhilippe] Error generating final archive: Found duplicate file for APK: AndroidManifest.xml
    Origin 1: /Users/markelys/Dropbox/Tech/Projets/Android/Workspace/TestPhilippe/bin/resources.ap_
    Origin 2: /Users/markelys/Dropbox/Tech/Projets/Android/Workspace/jokerly.jar
    

    这是我为导出Jar文件所做的事情:

    如有需要,请随时询问更多信息!

    我已经坚持了好几天...任何帮助将不胜感激!

    最佳答案

    根据在@TactMayers的链接中找到的Android Doc(谢谢!),目前不可能:

    但是,库项目与标准Android应用程序项目的不同之处在于,您无法将其直接编译为自己的.apk并在Android设备上运行。 同样,您不能将库项目导出到独立的JAR文件中,就像对真正的库一样。 而是必须通过在从属应用程序中引用该库并构建该应用程序来间接编译该库。

    关键似乎是资源和清单,以及所有要注意的纯Java代码。通常是视图,xml等。似乎有计划添加这种支持,但是现在绝对不存在。

    因此,如果有人对此有更多信息,并且有有关ADK团队为此目的提供更新的信息,那就太好了!

    谢谢大家的帮助!

    09-10 06:20
    查看更多