Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:向Android库添加库依赖项的最佳方法_Android_Maven_Gradle - Fatal编程技术网

Android:向Android库添加库依赖项的最佳方法

Android:向Android库添加库依赖项的最佳方法,android,maven,gradle,Android,Maven,Gradle,我正在开发一个Android库。问题是这个库本身依赖于许多其他gradle依赖项,比如Google Analytics和Volley 我不知道当开发人员将来使用这个库(作为gradle依赖项)和其他依赖项时,这是否会导致冲突 那么,简单地添加gradle编译依赖项是否安全,就像我们通常为任何android项目所做的那样 我不确定开发图书馆应该采取什么方法 开发该库时,我将在Jcenter/Maven上托管它 我已经做了研究,但找不到任何有用的东西。我想这是一个普遍的问题 示例生成文件 apply

我正在开发一个Android库。问题是这个库本身依赖于许多其他gradle依赖项,比如Google Analytics和Volley

我不知道当开发人员将来使用这个库(作为gradle依赖项)和其他依赖项时,这是否会导致冲突

那么,简单地添加gradle编译依赖项是否安全,就像我们通常为任何android项目所做的那样

我不确定开发图书馆应该采取什么方法

开发该库时,我将在Jcenter/Maven上托管它

我已经做了研究,但找不到任何有用的东西。我想这是一个普遍的问题

示例生成文件

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'
        }
    }
}

库用户可以使用transitive=true导入您的包,然后使用来解决任何冲突。在安装文档中,让他们在build.gradle中使用以下编译语句

    compile ('foo-bar:2.0.1+@aar') { transitive = true }

如果第三方库存在某些奇怪的版本不兼容,您可能偶尔需要更改库以支持用户

将依赖项添加到库项目中。发布示例
build.gradle
configuration。