多くのアプリケーションで使用されるアンドロイドのライブラリを開発しています。 ライブラリは他のライブラリに依存しています。 たとえば、Dagger 1.2を使用しているため、私のライブラリを含むアプリケーションでDagger 2.0が使用されると、競合のためにプロジェクトが構築されません。 どうすればいいですか?誰かが私のアンドロイドライブラリを使用しているときにライブラリの競合を避ける方法
私は、このワークスペースのGradle
buildscript {
repositories {
jcenter()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'net.vrallev.gradle:jarjar-gradle:1.1.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
でこれがアプリのGradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.xxx.yyy.sdklauncherapp"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile project(':library')
compile 'com.google.dagger:dagger:2.2'
}
であり、これは私が「私のライブラリのGradle
apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
apply plugin: 'net.vrallev.jarjar'
jarjar {
jarJarFile 'jarjar-1.4.jar'
rules = [
'rule com.squareup.dagger.** [email protected]'
]
srcExcludes = ['META-INF/**']
outputName 'build_repackaged.jar'
outputDir 'libs'
ignoreJarJarResult false
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
jarjar 'com.squareup.dagger:dagger:1.2.2'
}
今、私たちはこの時点で同じ問題を抱えています。私たちはいくつかのjarjarツール、GradleのFatJarを試してきましたが、解決策では実現しません。今、私たちは、jarjarスクリプトを使用している[espresso solution](https://android.googlesource.com/platform/frameworks/testing/+/android-support-test/espresso/core/build.gradle)ライブラリを試していますコンパイル時には、まだ適切な解決策がありません。 – beni
他の方法は、インポート時に依存性がなく、okhttpライブラリを使用するPicassoライブラリです。 Mavenリポジトリにアップロードされると、オプションとして依存関係が変更されます。しかし、我々は何も成功していません – beni
ありがとう@ベニ、私たちはいくつかの進歩を達成した場合、私はあなたに知らせます。あなたも同じことをやってくれることを願っています;) – Picci