android studio生成具有依赖关系的aar
我有一个引用另一个jar文件(B.jar)的库项目(a),但在生成aar文件后,jar文件(B.jar)没有绑定到输出aar文件中,当使用这个aar文件时,我得到了一个android studio生成具有依赖关系的aar,android,gradle,android-studio,Android,Gradle,Android Studio,我有一个引用另一个jar文件(B.jar)的库项目(a),但在生成aar文件后,jar文件(B.jar)没有绑定到输出aar文件中,当使用这个aar文件时,我得到了一个NoClassDefFoundError 有没有办法让gradle捆绑输出aar文件中的所有依赖类? 这是我的身材。格雷德尔: apply plugin: 'com.android.library' repositories { mavenCentral() } android { buildTypes {
NoClassDefFoundError
有没有办法让gradle捆绑输出aar文件中的所有依赖类?
这是我的身材。格雷德尔:
apply plugin: 'com.android.library'
repositories {
mavenCentral()
}
android {
buildTypes {
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile project(':common')
compile fileTree(dir: 'libs', include: ['*.jar'])
}
你试图做的是不可能的——至少在你上面描述的方式中是不可能的 有没有一种方法可以让gradle捆绑应用程序中的所有依赖类 输出aar文件 是的,有一种方法可以做到这一点,我以前遇到过这个问题。但这将是一个很长的故事,请容忍我 背景 当您在build.gradle中指定一个依赖项时,您告诉gradle从Maven存储库下载一个工件(AAR/JAR)。所以Gradle需要两件事:
build.gradle
repositories {
jcenter()
google()
}
dependencies {
compile 'com.example:mylibrary:1.0.1'
}
并指定对项目级build.gradle
repositories {
jcenter()
google()
}
dependencies {
compile 'com.example:mylibrary:1.0.1'
}
Gradle/Maven如何知道mylibrary
需要其他依赖项?从你的依赖
POM示例
让我们以Square的OkHttp为例,您可以在mvnrepository.com中找到此工件
OkHttp有一个POM文件。您可以单击该链接来显示完整的XML,我只向您展示了有趣的部分,即依赖项块
<project>
<modelVersion>4.0.0</modelVersion>
<parent>...</parent>
<artifactId>okhttp</artifactId>
<name>OkHttp</name>
<dependencies>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>...</build>
</project>
如果您不想手动执行第2步和第3步,您可以猜到,“有一个gradle插件用于此!”。插件是,归功于:wupdigital使这些过程更容易
现在,您可以使用gradle命令发布库:
gradle yourlibrary:assembleRelease yourlibrary:publishMavenReleaseAarPublicationToMavenRepository
如何共享您的库项目
下次你的队友要你的图书馆时,你可以给他们两样东西:
Cheers库是在调试模式还是发布模式下构建的?在后面,您运行ProGuard,这可以解释为什么在使用该库时会出现
NoClassDefFoundError
。@user2713030调试和发布都是一样的,只是没有打包依赖项jar类。我想没有办法,但您可能比我知道得更多……是否可以添加本地依赖项(我的libs文件夹中的一个文件)用我的。啊?我的意思是,没有将文件上传到Maven或其他存储库。。。