2014-04-13 105 views
5

您好我有一个Android库项目,它生成一个AAR。Android库AAR依赖于另一个库

所有这些都是好的,但是当我在另一个项目中使用AAR我得到这个错误:

java.lang.NoClassDefFoundError: com.squareup.picasso.Picasso 

的AAR利用毕加索的,是有可能的AAR的依赖生成一个当货物出口?

+0

你是如何在其他项目中使用的AAR(例如,presentationfoo)? – CommonsWare

+0

像这样: '{库 flatDir { 迪尔斯 '库'} mavenCentral() }' ,然后包括他们使用这应该是平常的groupId格式 – redDragonzz

+0

是预期的行为,我想:https://开头groups.google.com/forum/#!topic/adt-dev/0ZAP8AVUZVw!我想我必须下载Picasso jar,然后gradle会自动包含它,否则它不会。请试试看并发布一个答案 – redDragonzz

回答

6

How can one go about setting up a local maven repo.

警告:以下食谱工作,但可能会使用改进的,因为我从一个Maven专家是。我去年敲定了这个方法,与我的CWAC图书馆一起使用。

步骤#1:将classpath 'com.github.dcendents:android-maven-plugin:1.0'添加到您的buildscriptdependencies块中您的库项目的build.gradle文件中。还要添加versiongroup声明以提供有关您的AAR的信息。

步骤#2:使用gradle install编译AAR并将其安装在默认的本地Maven存储库中。步骤#3:通常,您应该将mavenLocal()添加到应用程序项目的dependencies块中,以便通过其工件ID获取AAR。这可能会再次起作用,尽管它已经被破坏了一段时间。相反,使用maven { url "${System.env.HOME}/.m2/repository" }作为短期解决方法。

因此,举例来说,你的库项目build.gradle文件可能包含:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.9.+' 
     classpath 'com.github.dcendents:android-maven-plugin:1.0' 
    } 
} 

apply plugin: 'android-library' 
apply plugin: 'android-maven' 

version '0.4.0' 
group 'some.likely.group.name.goes.here' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.squareup.picasso:picasso:2.2.0' 
    compile fileTree(dir: 'libs', include: '*.jar') 
} 

android { 
    // as normal 
} 

你会使用gradle install到JAR发布到本地Maven回购。然后,您的应用程序项目将有以下的东西在其build.gradle

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

apply plugin: 'android' 

repositories { 
    mavenCentral() 
    maven { url "${System.env.HOME}/.m2/repository" } // mavenLocal() 
} 

dependencies { 
    compile 'some.likely.group.name.goes.here:name-of-library:0.4.0' 
} 

android { 
    // as normal 
} 

,你替换:

  • some.likely.group.name.goes.here在XYZ格式的东西

  • 0.4.0使用版本号

  • name-of-library将是目录名称包含了Android库项目

+0

对于像我这样仍然使用这种方法的人来说,需要注意的一点是:自从更新后的gradle版本更新后,请在这里参考新的GitHub:https://github.com/dcendents/android-maven-gradle-plugin并确保gradle至少2.4,通过使用说明在这里更改'gradle-wrapper.properties':http:// tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0 – anddev84

+0

请问如何使用'gradle install'?我在Windows上安装了gradle for java并尝试了'gradle install',我得到了这个错误'任务'安装'没有在根项目'bin'中找到。' –

+0

@WilliamKinaan:这个答案是2.5岁。我建议找到一个更新的解决方案。 – CommonsWare

相关问题