【问题标题】:Android library resources in JARJAR 中的 Android 库资源
【发布时间】:2015-05-30 06:51:05
【问题描述】:

我正在尝试编写一个 Android 类库项目。起初我试图引用该项目,但得到 ClassDefNotFound 错误。所以我所做的就是从我的库项目输出中获取 JAR 文件并放入我的项目中。现在我没有找到找不到类,但我收到一个错误,它找不到资源(库有字符串、样式、动画......)。

05-30 02:27:00.255: E/AndroidRuntime(2083): java.lang.NoClassDefFoundError: com.mycompany.popupdialog.R$style
05-30 02:27:00.255: E/AndroidRuntime(2083):     at com.mycompany.popupdialog.Popupdialog.<init>(SweetAlertDialog.java:75)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at com.mycompany.popupdialog.Popupdialog.<init>(SweetAlertDialog.java:71)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at com.mycompany.androidApplication.MainActivity$2.onClick(MainActivity.java:156)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at android.view.View.performClick(View.java:4240)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at android.view.View$PerformClick.run(View.java:17721)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at android.os.Handler.handleCallback(Handler.java:730)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at android.os.Looper.loop(Looper.java:137)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at android.app.ActivityThread.main(ActivityThread.java:5103)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at java.lang.reflect.Method.invokeNative(Native Method)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at java.lang.reflect.Method.invoke(Method.java:525)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-30 02:27:00.255: E/AndroidRuntime(2083):     at dalvik.system.NativeStart.main(Native Method)

如何在 JAR 文件中拥有我需要的所有资源,而不必将它们包含在托管项目中?

在引用项目的情况下 - 我尝试做所有我在网上找到的关于清理项目、在 Order & Export 屏幕中设置项目 - 没有任何帮助。

【问题讨论】:

  • 请将你的jar添加到构建路径
  • @ravi 做到了(如上所述将其添加到 eclipse Order & Export)

标签: java android eclipse android-library


【解决方案1】:

我认为这背后的问题是,您只是将您的库 jar 放在您的 lib 文件夹中,但没有附加到 BuildPath

试试这个

右键单击您附加的 jar。

转到构建路径,

单击添加到 BuildPath。

希望对你有帮助

【讨论】:

    【解决方案2】:
    1. 我认为您的 Android Menifests File 包名不正确, 只需检查您的包名是否与清单文件包名的条目相同。

    2. 重建您的项目。并清洁它。

    3. 重新启动 IDE

    【讨论】:

      【解决方案3】:

      特别是对于 Eclipse,您需要将库添加到当前工作空间然后引用它。请参阅此参考链接:[1]


      要从单独的模块中获取您的 android 应用程序资源,您需要在 outputs/build/aar 文件夹中获取已编译的 .aar 文件。将它放到您的 libs 文件夹中,然后通过执行以下操作来引用它:[2]

      1) 将以下内容添加到 build.gradle 中的存储库块中,使其看起来像这样:

      repositories {
          mavenCentral()
          flatDir {
              dirs 'libs'
          }
      }
      

      2) 您现在在依赖项中引用它!:

      dependencies {
         compile 'com.kevinpelgrims.library:library:1.0.0@aar'
      }
      

      [1]http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

      [2]http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-android-project/

      【讨论】:

      • 我没有使用 Maven。我正在使用日食。我所有的项目都是在本地构建的。
      • 在这种情况下,您可能需要将您的库导入同一个工作区,然后添加对它的引用,请参阅:developer.android.com/tools/projects/…
      • 很高兴它对你有用,我已经更新了可见性的初始答案。
      猜你喜欢
      • 1970-01-01
      • 2013-08-14
      • 2017-11-07
      • 2015-05-17
      • 2012-01-18
      • 1970-01-01
      • 2012-06-30
      • 2023-03-24
      • 2011-06-27
      相关资源
      最近更新 更多