【发布时间】:2015-05-17 19:47:32
【问题描述】:
我正在编写一个安卓 SDK。我正在使用 gradle 和 android studio。
传奇:
- X.jar - 第三方 jar 文件。
- Y.jar - 我最终的 android SDK jar 文件,依赖于 X.jar。
- someApp - 一个使用/依赖于 Y.jar 的 Android 应用。
问题:
someApp 无法识别 X.jar 中的类
我已经(几乎一天)搜索了生成带有 X.jar 类的 Y.jar 的方法(而不仅仅是在其中包含 X.jar 文件),但不幸的是我失败了。我发现的许多解决方案都不够清楚或不适合我的情况。
非常感谢您的帮助和指导。
这是我的相关代码sn-p(基于此answer):
我的 SDK 项目的 build.gradle 代码 - 创建 Y.jar:
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
minSdkVersion 18
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/../libs'
}
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('libs/X.jar')
}
task clearJar(type: Delete) {
delete 'build/outputs/Y.jar'
}
task makeJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('build/outputs/')
include('classes.jar')
rename ('classes.jar', 'Y.jar')
}
makeJar.dependsOn(clearJar, build)
运行 'gradlew makeJar' 在 build/outputs 目录中生成 Y.jar。
【问题讨论】:
-
作为切线,您不需要单独创建
clearJar任务。 Gradle 将自动创建任务cleanMakeJar,这将删除makeJar任务的输出。此外,让makeJar依赖于clearJar效率非常低,因为它将否定 Gradle 仅在输入或输出发生更改时才执行任务的尝试(请参阅gradle.org/docs/current/userguide/…) -
你为什么使用
'src/../libs'而不是仅仅使用libs? -
@Jolta 你说的一切都是正确的。但仍然没有回答我的问题:(
-
好吧,我没有那个答案,所以我尽我所能......
标签: android jar android-studio sdk gradle