【发布时间】:2017-08-04 15:39:21
【问题描述】:
我正在创建一个基于以下组件的具有依赖关系的 Android 库。
- 我的图书馆代码
- 布局和资源文件
- 将依赖项分级为第三方。
首先我想为我的库创建 .jar 文件,但后来我发现 laulyoit 和资源文件不是用 jar 编译的。然后我决定创建 AAR 文件。请建议这是正确的举动还是有其他选择?
现在主要问题是我被 gradle 依赖所困扰。我们正在创建一个付费图书馆,它使用一些第三方,如谷歌,只能通过 Gradle 获得。现在由于我正在创建一个 AAR 文件,因此没有 Manifest.xml 和 Gradle 文件,我如何将第三方与我自己的代码集成。并且我们有严格的指示,我们不能告诉图书馆的用户包括第三方来包括。简而言之,我们不能让用户知道我们的图书馆正在使用什么样的第三方。 那么有什么方法可以创建一个 AAR 文件,该文件还预先编译了 gradle 依赖项,而不会向用户透露我们正在使用哪些服务?
更新 1
这是我的图书馆 build.gradle
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
dexOptions {
preDexLibraries = false
javaMaxHeapSize "4g" // 2g should be also OK
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:+'
compile 'com.google.android.gms:play-services-vision:10.2.1'
testCompile 'junit:junit:4.12'
}
在我将我的 .aar 文件移动到本地 maven 并创建然后使用我的应用程序项目中的输出文件之后。这是相同的 gradle。
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.jarvis.myapplication"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile('com.company:mylibrary:1.0@aar')
{
transitive = true
}
compile 'com.android.support:appcompat-v7:25.3.0'
testCompile 'junit:junit:4.12'
}
【问题讨论】:
-
@KishanCS 感谢您的建议。我会检查你分享的链接是否能解决我的问题。谢谢
-
本教程可能会对您有所帮助。 youtube.com/watch?v=RYiZZprUNJw请看一下。