首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用jack的Android构建错误

启用jack的Android构建错误
EN

Stack Overflow用户
提问于 2016-09-12 21:33:57
回答 3查看 2.9K关注 0票数 1

因此,我最近将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:

代码语言:javascript
复制
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构建过程的问题。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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的依赖项部分:

代码语言:javascript
复制
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依赖项中看到组排除。因此,如果其他人有此问题,只需注意来自某些依赖项导入的复制外部库。

票数 0
EN

Stack Overflow用户

发布于 2016-09-13 17:36:18

我们正在研究这个问题,我认为这是由于Android Gradle插件对Jack和javac的不同行为所致。作为解决办法,您可以在jackOptions中尝试此方法。

代码语言:javascript
复制
additionalParameters = [ "jack.import.type.policy" : "keep-first" ]

但是请注意,使用该选项,Jack将保留它遇到的类的第一个定义。

您可以在这里跟踪我们的进度:https://code.google.com/p/android/issues/detail?id=222273

票数 1
EN

Stack Overflow用户

发布于 2017-03-13 06:14:03

我遇到了同样的问题,然后我在这两个罐子里找到了一个相同的包,但它们不是同一个版本。所以修改给他们有一个相同的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39459135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档