我正在开发一个Android库。问题是库本身依赖于许多其他gradle依赖,如Google Analytics和Volley。
我不知道当开发人员使用这个库(作为gradle依赖)以及其他依赖项时,这是否会导致冲突。
那么简单地添加gradle编译依赖是否安全,就像我们通常对任何android项目一样?
我不确定应该采用什么方法来开发库。
开发库时,我将在Jcenter / Maven上托管它。
我做过我的研究bur找不到任何有用的东西。我想这是一个常见的问题。
示例构建文件
apply plugin: 'android-library'
buildscript {
repositories {
maven {
url "http://maven.snplow.com/releases"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
repositories {
jcenter()
maven {
url "http://maven.snplow.com/releases"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile('com.github.nkzawa:socket.io-client:0.5.+') {
exclude group: 'org.json', module: 'json'
}
compile project(':VolleyLib')
compile 'com.google.android.gms:play-services-analytics:7.5.0'
compile files('libs/FlurryAnalytics-5.5.0.jar')
compile files('libs/sentry-1.1.4.jar')
compile 'com.snowplowanalytics:snowplow-android-tracker-classic:0.5.0'
}
android {
compileSdkVersion 22
buildToolsVersion "23.0.0 rc2"
defaultConfig {
minSdkVersion 10
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
答案 0 :(得分:1)
图书馆用户可以使用transitive = true导入您的包,然后使用gradle dependency management and conflict resolution rules来解决任何冲突。在安装文档中,他们在build.gradle中使用以下编译语句
compile ('foo-bar:2.0.1+@aar') { transitive = true }
如果第三方库存在某些奇怪的版本不兼容,您可能偶尔需要对库进行更改以支持用户。