我正在创建一个基于以下组件的依赖项的Android库.
首先,我想到为我的库创建.jar文件,但后来我发现laulyoit和资源文件不是用jar编译的.然后我决定创建AAR文件.请建议这个是正确的移动还是有其他选择?
现在我遇到了gradle依赖的主要问题.我们正在创建一个付费图书馆,使用Google等仅通过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'
}
Run Code Online (Sandbox Code Playgroud)
在我将.aar文件移动到本地maven之后,然后使用我的应用程序Project中的输出文件创建.这是同样的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'
}
Run Code Online (Sandbox Code Playgroud)
如果您创建一个.aar项目有是一个清单文件,它会被用在编译的应用程序清单合并.一切正常.您可以在.aar项目中使用任何gradle依赖项,甚至是proguard模糊处理和签名.
要在主应用程序中编译.aar库,请将它放在dependencies
build.grade文件中:
dependencies {
compile(name:'your_lib_name', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)
您必须将.aar文件复制到文件libs
夹中的app
文件夹.
但有一件事是清楚的:如果有人使用你的.aar文件,他或她可以随时查看android studio中的合并清单文件,你无法隐藏你的依赖关系.至少,据我所知.Android受开源库(甚至通过maven)的强烈驱动,在大多数情况下,您甚至必须包含已使用外部库的许可证,用户可以将其看作应用程序中的菜单项或链接.否则您在某些情况下违反许可证甚至可能违反使用条款.你可能不会隐藏它们.
归档时间: |
|
查看次数: |
849 次 |
最近记录: |