因此,我最近将Android默认的JDK转换为Java 8,以便可以使用Lambda表达式。我必须让杰克让梯度建立,但现在,当我试图重建我的应用程序,我得到了大约三个不同的错误,似乎是来自杰克。我似乎找不到这些问题的根源,我想继续使用J8。任何对此的洞察力或帮助都是非常感谢的。以下是我在构建过程中遇到的错误:
1) 错误:库读取阶段:'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-2.4.0-b10-e2682135301b663484690f1d3a4a523bcea2a732.jar‘文件中的javax.inject.Named类型已经从文件'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-1-4a242883e90a864db3b80da68e11a844f842d2df.jar',类型'javax.inject.Named’中导入(关于类型冲突策略,请参见属性'jack.import.type.policy‘) 2) 库读取阶段:'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-2.4.0-b10-e2682135301b663484690f1d3a4a523bcea2a732.jar‘文件中的javax.inject.Named类型已经从文件'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-1-4a242883e90a864db3b80da68e11a844f842d2df.jar',导入键入“javax.inject.Named”(有关类型冲突策略,请参见属性“jack.import.type.policy”) 3) 来自'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-2.4.0-b10-e2682135301b663484690f1d3a4a523bcea2a732.jar‘的’C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-2.4.0-b10-e2682135301b663484690f1d3a4a523bcea2a732.jar‘类型javax.inject.Named已经从'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-1-4a242883e90a864db3b80da68e11a844f842d2df.jar',文件中导入键入“javax.inject.Named”(有关类型冲突策略,请参见属性“jack.import.type.policy”) 4) ::app:编译程序compileDebugJavaWithJack失败错误:任务执行失败“:app:compileDebugJavaWithJack”。com.android.jack.api.v01.CompilationException:库读取阶段:'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-2.4.0-b10-e2682135301b663484690f1d3a4a523bcea2a732.jar‘文件中的javax.inject.Named类型已经从'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-1-4a242883e90a864db3b80da68e11a844f842d2df.jar',文件中导入键入“javax.inject.Named”(有关类型冲突策略,请参见属性“jack.import.type.policy”)
下面是应用程序级别的build.gradle:
android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.nicholas.baseintegrations"
minSdkVersion 16
targetSdkVersion 24
versionCode 1
versionName "1.0"
jackOptions {
enabled true
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
useLibrary 'org.apache.http.legacy'
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile project(path: ':backend', configuration: 'android-endpoints')
compile "com.getbase:basecrm-java:1.4.3"
compile 'com.android.support:recyclerview-v7:24.2.0'
compile 'com.android.support:palette-v7:24.2.0'
compile 'com.android.support:cardview-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.21'
compile group: 'org.glassfish.jersey.media', name: 'project', version: '2.23.2', ext: 'pom'
}所有的帮助都是非常感谢的,因为我知道这是一个新的东西,但似乎找不到关于Jack/J8构建过程的问题。提前谢谢。
发布于 2016-09-14 15:59:06
我最终解决了这个构建问题。我的一个依赖项是添加第二个javax.inject库,它会抛出这些构建错误,说明javax.inject jar已经从前一个导入了。
所以我有javax.Injec-1和javax.Injec-2.4.0-b10。最后,我将javax.inject模块从我的依赖项中排除在外,它解决了构建中的问题,现在正在运行jsut。
下面是我的应用程序build.gradle的依赖项部分:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile project(path: ':backend', configuration: 'android-endpoints')
compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.21'
compile (group: 'org.glassfish.jersey.media', name: 'project', version: '2.23.2', ext: 'pom')
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile ('com.getbase:basecrm-java:1.4.3') {
exclude (group: 'javax.inject', module: 'javax.inject')
}
compile 'com.android.support:recyclerview-v7:24.2.1'
compile 'com.android.support:palette-v7:24.2.1'
compile 'com.android.support:cardview-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
}您可以在basecrm依赖项中看到组排除。因此,如果其他人有此问题,只需注意来自某些依赖项导入的复制外部库。
发布于 2016-09-13 17:36:18
我们正在研究这个问题,我认为这是由于Android Gradle插件对Jack和javac的不同行为所致。作为解决办法,您可以在jackOptions中尝试此方法。
additionalParameters = [ "jack.import.type.policy" : "keep-first" ]但是请注意,使用该选项,Jack将保留它遇到的类的第一个定义。
您可以在这里跟踪我们的进度:https://code.google.com/p/android/issues/detail?id=222273
发布于 2017-03-13 06:14:03
我遇到了同样的问题,然后我在这两个罐子里找到了一个相同的包,但它们不是同一个版本。所以修改给他们有一个相同的版本。
https://stackoverflow.com/questions/39459135
复制相似问题