Java JAR中的Android库资源

Java JAR中的Android库资源,java,android,eclipse,android-library,Java,Android,Eclipse,Android Library,我正在尝试编写一个Android类库项目。起初我试图引用该项目,但发现ClassDefNotFound错误。所以我所做的就是从我的库项目输出中获取JAR文件,并将其放入我的项目中。现在我没有得到找不到的类,但是我得到一个错误,它找不到资源(库中有字符串、样式、动画…) 05-30 02:27:00.255:E/AndroidRuntime(2083):java.lang.NoClassDefFoundError:com.mycompany.popupdialog.R$style 05-30 02

我正在尝试编写一个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):在com.mycompany.popupdialog.popupdialog.(SweetAlertDialog.java:75)
05-30 02:27:00.255:E/AndroidRuntime(2083):在com.mycompany.popupdialog.popupdialog.(SweetAlertDialog.java:71)
05-30 02:27:00.255:E/AndroidRuntime(2083):在com.mycompany.androidApplication.MainActivity$2.onClick(MainActivity.java:156)
05-30 02:27:00.255:E/AndroidRuntime(2083):在android.view.view.performClick(view.java:4240)上
05-30 02:27:00.255:E/AndroidRuntime(2083):在android.view.view$PerformClick.run(view.java:17721)
05-30 02:27:00.255:E/AndroidRuntime(2083):在android.os.Handler.handleCallback(Handler.java:730)上
05-30 02:27:00.255:E/AndroidRuntime(2083):在android.os.Handler.dispatchMessage(Handler.java:92)上
05-30 02:27:00.255:E/AndroidRuntime(2083):在android.os.Looper.loop(Looper.java:137)
05-30 02:27:00.255:E/AndroidRuntime(2083):位于android.app.ActivityThread.main(ActivityThread.java:5103)
05-30 02:27:00.255:E/AndroidRuntime(2083):位于java.lang.reflect.Method.Invokenactive(本机方法)
05-30 02:27:00.255:E/AndroidRuntime(2083):位于java.lang.reflect.Method.invoke(Method.java:525)
05-30 02:27:00.255:E/AndroidRuntime(2083):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
05-30 02:27:00.255:E/AndroidRuntime(2083):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-30 02:27:00.255:E/AndroidRuntime(2083):在dalvik.system.NativeStart.main(本机方法)
我怎样才能在JAR文件中拥有所需的所有资源,而不必将它们包含在宿主项目中


在引用一个项目的情况下,我试着做我在网上找到的关于清理项目、设置项目顺序和导出屏幕的所有事情,但没有任何帮助。

我认为这背后的问题是,你只是把你的库jar放在你的
lib
文件夹中,而不是附加到
BuildPath

试试这个

右键单击您已附加的jar

转到BuildPath

单击addtobuildpath


希望这对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]

[2]

  • 我认为你的Android Menifests文件包名称不正确, 只需检查您的包名是否与menifest文件包名条目相同

  • 重建您的项目。然后清洗它

  • 重新启动IDE


  • 请添加要构建的jarpath@ravi我没有使用maven(如上所述,我将它添加到EclipseOrder&Export中)。我正在使用eclipse。我所有的项目都是本地构建的。在这种情况下,您可能需要将库导入同一个工作区,然后添加对它的引用,请参见:很高兴它对您有效,我已更新了可见性的初始答案。
    dependencies {
       compile 'com.kevinpelgrims.library:library:1.0.0@aar'
    }