프로젝트 libs 디렉토리에서로드 된 cordova.jar에 대한 종속성이있는 라이브러리 프로젝트가 있습니다.aar에서 jar-library 제외
나는이 라이브러리 프로젝트를 메이븐 넥서스에 배포합니다.
응용 프로그램 프로젝트에서 나는 도서관 프로젝트 aar (compile ...)에 의존합니다. 그러나 응용 프로그램 프로젝트는 cordova.jar와 동일한 종속성을 갖습니다. APPLICATION 응용 프로젝트를 빌드 할 때
그래서, 나는이 오류 얻을 : 내 응용 프로그램 프로젝트의 라이브러리 AAR을로드 할 때
: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)
는이 문제를 해결하기를, 나는 cordova.jar을 제외하려고 :
dependencies {
compile ('com.my.library:hybridstory:1.0'){
exclude (group: 'org.apache.cordova')
}
}
하지만 작동하지 않습니다. 내가 뭔가 잘못하고 있는거야?
내 두 번째 질문은 : 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가 있습니다. 항아리가 포장되어 있습니다. 제공된 범위가 단순히 작동하지 않거나 무언가를 놓치고 있습니까?
'compile' 설정을 사용하는 대신'given'을 사용하십시오. 이것은 라이브러리가 귀하의 aar에 패키지되지 않는다는 것을 의미합니다! –
완벽하게 들리지만 작동하지 않습니다. 제공된 파일 ('libs/cordova-5.1.1.jar')로 컴파일 파일 ('libs/cordova-5.1.1.jar')을 변경했으나 cordova-5.1.1.jar은 여전히 aar에 패키지되었습니다. – rickul
그건 불가능합니다. 전체 build.gradle을 게시하여 살펴 보시기 바랍니다. –