exi*_*z31 20 xml android intellij-idea maven android-studio
我对Android Studio IDE感到很疯狂.
我愿意从Central添加Maven库simple-xml(v2.7.1)
该项目汇编得很好
Gradle在其中具有lib依赖build.gradle:
dependencies {
compile 'com.android.support:appcompat-v7:18.0.0'
compile 'org.simpleframework:simple-xml:2.7.1'
}
Run Code Online (Sandbox Code Playgroud)在Android Studio的simple-xml lib的模块设置中检查导出:
屏幕截图:https://s6.postimg.cc/xxgj56zkx/Module_Settings.png
当我运行我的应用程序时,我找不到类...
java.lang.NoClassDefFoundError:org.simpleframework.xml.core.Persister
我迷路了,听起来Gradle没有在apk中包装lib和依赖因为某些原因...
EDIT1:我的Android Studio版本是0.2.13(最新版),Gradle 0.5.+
EDIT2:我使用的完整build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 18
}
}
dependencies {
compile 'com.android.support:appcompat-v7:18.0.0'
compile 'org.simpleframework:simple-xml:2.7.1'
}
Run Code Online (Sandbox Code Playgroud)
Grz*_*Żur 55
你应该这样添加simple-xml库:
compile('org.simpleframework:simple-xml:2.7.1') {
exclude group: 'stax', module: 'stax-api'
exclude group: 'xpp3', module: 'xpp3'
}
Run Code Online (Sandbox Code Playgroud)
图书馆stax-api和xpp3与Android的类冲突.这些罐子里的类似乎包含在Android中.
原始dex消息是:
处理"javax/xml/stream/events/StartElement.class"时遇到问题:
在不构建核心库时,不明智或错误地使用核心类(java.*或javax.*).
这通常是由于在使用IDE(例如Eclipse)时无意中在应用程序的项目中包含了核心库文件.如果你确定你不是故意定义一个核心类,那么这就是最可能的解释.
但是,您实际上可能正在尝试在核心命名空间中定义一个类,例如,您可能已从非Android虚拟机项目中获取该类.这肯定是行不通的.它至少会危害您的应用与该平台的未来版本的兼容性.它的合法性通常也是有问题的.
如果您真的打算构建一个核心库 - 它只适合作为创建完整虚拟机分发的一部分,而不是编译应用程序 - 那么使用"--core-library"选项来抑制此错误消息.
如果你继续使用"--core-library"但实际上正在构建一个应用程序,那么预先警告你的应用程序仍然无法构建或运行,在某些时候.请为愤怒的客户做好准备,例如,一旦升级操作系统,您的应用程序就会停止运行.你应该为这个问题负责.
如果您合法地使用恰好位于核心软件包中的某些代码,那么最简单的安全替代方法是重新打包该代码.也就是说,将有问题的类移动到您自己的包命名空间中.这意味着它们永远不会与核心系统类冲突.JarJar是一个可以帮助您完成这项工作的工具.如果你发现你不能做到这一点,那就表明你所走的道路最终会导致痛苦,痛苦,悲伤和悲伤.
小智 5
我使用maven与Android得到了同样的错误.我纠正了依赖,一切运作良好.这是我对simple-xml库的依赖:
<dependency>
<groupId>org.simpleframework</groupId>
<artifactId>simple-xml</artifactId>
<version>2.7.1</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>xpp3</artifactId>
<groupId>xpp3</groupId>
</exclusion>
<exclusion>
<artifactId>stax-api</artifactId>
<groupId>stax</groupId>
</exclusion>
<exclusion>
<artifactId>stax</artifactId>
<groupId>stax</groupId>
</exclusion>
<exclusion>
<artifactId>spring-web</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我发现了问题。
正如我所料,这是 graddle 插件 0.5.+。
带有 gradle 插件 0.6.+ (Gradle 1.8) 的 Android Studio 0.3.0 现在修复了该问题。
但是,我通过以下方式使应用程序能够与 Android Studio 0.2.13 和 gradle 插件 0.5 一起使用:
由于gradle插件拒绝从mavencentral部署库,我将库和依赖项下载到项目的lib目录中。我设置项目以将该库用作项目 lib 目录中的本地库。
解决方法的说明:
在模块设置中删除我的项目中对 simple-xml (mavencentral) 的所有引用
将 simple-xml-2.7.1.jar、stax-1.2.0.jar、stax-api-1.0.1.jar 和 xpp3-1.1.3.3.jar 复制到我的项目中的 lib 目录
在我的项目中选择 lib simple-xml-2.7.1.jar 并使用“添加为库”上下文菜单导入该库
像这样更改 build.gradle:
依赖项{
compile 'com.android.support:appcompat-v7:18.0.0'
compile files('simple-xml-2.7.1.jar')
Run Code Online (Sandbox Code Playgroud)
}
注意:不要包含依赖项,否则它们会与 Grzegorz 提到的 Android 系统产生冲突
| 归档时间: |
|
| 查看次数: |
11044 次 |
| 最近记录: |