2013-07-19 55 views
6

我试图从Intellij Idea 12切换到Android Studio 0.2.1 目前我的android项目是使用maven-android-plugin安装的。我使用actionbarsherlock作为apklib依赖项。Android Studio Pre Dexing失败

当我尝试建立与Android Studio中的项目失败德兴前阶段与

Error:Android Pre Dex: [xpp3-1.1.4c.jar] trouble processing "javax/xml/namespace/QName.class": 
Error:Android Pre Dex: [xpp3-1.1.4c.jar] Ill-advised or mistaken usage of a core class (java.* or javax.*) 
Error:Android Pre Dex: [xpp3-1.1.4c.jar] when not building a core library. 
Error:Android Pre Dex: [xpp3-1.1.4c.jar] This is often due to inadvertently including a core library file 
Error:Android Pre Dex: [xpp3-1.1.4c.jar] in your application's project, when using an IDE (such as 
Error:Android Pre Dex: [xpp3-1.1.4c.jar] Eclipse). If you are sure you're not intentionally defining a 
Error:Android Pre Dex: [xpp3-1.1.4c.jar] core class, then this is the most likely explanation of what's 
Error:Android Pre Dex: [xpp3-1.1.4c.jar] going on. 

但是到XPP3唯一的依赖是从actionbarsherlock,如果你考虑项目结构你看,它有“提供”的范围。所以在我看来,这不应该是预先排好的或者包含在apk中。

你有没有做过类似的观察?或者你有没有得到一个android-maven项目与actionbarsherlock依赖在android studio中构建?关于如何得到这个工作与Android工作室任何提示赞赏:)

问候 弗兰克

+0

如何将支持库依赖项添加到您的项目中? – maclir

+0

使用Maven:' com.google.android 支持-V4 ' – Frank

+0

你不想使用Android工作室的gradle与构建系统? – maclir

回答

0

我有同样的问题。

复制到ABS项目:

Project 
├── build.gradle 
├── Module 
│   ├── build.gradle 
│   ├── libs 
│   └── src 
├── libraries 
│   └── ABS 
│    ├── build.gradle 
│    ├── libraries 
│    ├── libs 
│    └── src 
└── settings.gradle 

项目/ settings.gradle:

include ':Module', ':libraries:ABS' 

项目/库/ ABS /的build.gradle:

这种结构到底为我工作
buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 
apply plugin: 'android-library' 

dependencies { 
    compile "com.android.support:support-v4:13.0.0" 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 9 
     targetSdkVersion 17 
    } 
} 

项目/模块/ build.gradle:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 
apply plugin: 'android' 

dependencies { 
    compile "com.android.support:support-v4:13.0.0" 
    compile project(':libraries:ABS') 
} 
... 
11

我发现了这个问题。它与android studio或actionbar sherlock无关,但与另一个apklib依赖关系不正确地声明具有依赖于xpp3和xmlParserApis的作用域“compile”,它应该被“提供”。

想法12没有这个问题,但android studio/idea 13预览似乎更严格。

只要将范围更改为项目结构中的“提供”即可解决问题。

+0

+1。通过将依赖项的pom.xml更改为“提供”来解决问题。排除功能不起作用。 – mingfai

+0

如果我无法更改依赖项的pom,有什么可以做的吗? – Janusz

+0

我的一些库包含在本地jar文件中。而xpp​​3 jar已经包含为“提供”。在玩过之后,似乎需要手动删除并再次导入为“提供”才能使其工作。 – Robert

-1

只需从xpp3 jar中删除QName.class即可。

+0

你为什么低估我的回答?这是最令人激动的事情,因为xpp3.jar在这方面完全被破坏了。或者去bug的xpp家伙... – anselm