私はプロジェクトlibsディレクトリからロードされたcordova.jarに依存するライブラリプロジェクトを持っています。aarからjar-libraryを除外する
私はmavenネクサスにaarとしてデプロイするこのライブラリプロジェクトです。
アプリケーションプロジェクトでは、ライブラリプロジェクトaar(コンパイル...)に依存しています。しかし、アプリケーションプロジェクトはcordova.jarと同じ依存関係にあります。
のでapplicatonプロジェクトをビルドするとき、私はこのエラーを取得:
:transformClassesWithDexForDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/AuthenticationToken;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
これを解決するために、私は自分のアプリケーションプロジェクトにライブラリAARをロードするときcordova.jarを除外しようとした:
dependencies {
compile ('com.my.library:hybridstory:1.0'){
exclude (group: 'org.apache.cordova')
}
}
しかし、これは動作しません。私は何か間違っているのですか?
私の2番目の質問です:AARとしてライブラリプロジェクトをアップロードするのではなく、アプリケーションにライブラリをロードする際にcordova.jarを除くとき
それは/libs/cordova.jarを除外することは可能ですか?私はこのGradleのでこれを達成できる方法:私はXaver Kapellerによって示唆されているように、 "提供" のGradle範囲しようとした
apply plugin: 'com.android.library'
apply plugin: 'maven'
archivesBaseName = 'hybridstory'
group = 'com....'
version = '16.3.0-SNAPSHOT'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName version
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
provided files('libs/cordova-5.1.1.jar')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com....'
}
task createJavadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
title = archivesBaseName + " " + version
options.overview = "src/main/doc-files/overview.html"
doLast {
copy {
from "src/main/doc-files"
into "$buildDir/docs/javadoc"
}
}
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: 'https://maven..../content/repositories/om-releases/')
snapshotRepository(url: 'https://maven..../content/repositories/om-snapshots/')
}
}
}
task androidJavadocsJar(type: Jar, dependsOn: createJavadoc) {
classifier = 'javadoc'
from createJavadoc.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
### UPDATE ###(感謝を!)。しかし、cordova.jarはまだアールにパッケージ化されています。提供されたスコープは単に機能しないのでしょうか、何か不足していますか?
'compile'設定を使うのではなく、' provided'を使います。これは、ライブラリがあなたのaarにパッケージ化されないことを意味します! –
完璧に聞こえますが、動作しません。私はコンパイルファイル( 'libs/cordova-5.1.1.jar')を提供されたファイル( 'libs/cordova-5.1.1.jar')に変更しましたが、cordova-5.1.1.jarはまだaarにパッケージ化されています。 – rickul
それはできません。完全なbuild.gradleを投稿してみてください。 –