1

Так что я недавно переключил свой JDK по умолчанию для Android Studio на Java 8, поэтому я мог использовать выражения лямбда. Я должен был позволить Джеку позволить строить граду, но теперь, когда я пытаюсь перестроить свое приложение, я получаю около 3 разных ошибок, которые, похоже, происходят от Джека. Кажется, я не могу найти корень любой из этих проблем и хотел бы остаться с J8. Любое понимание или помощь в этом очень ценится. Вот ошибки я получаю во время сборки:Ошибки сборки Android Studio с включенным гнездом

1)

Error:Library reading phase: Type javax.inject.Named from file 'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-2.4.0-b10-e2682135301b663484690f1d3a4a523bcea2a732.jar' has already been imported from file 'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-1-4a242883e90a864db3b80da68e11a844f842d2df.jar', type 'javax.inject.Named' (see property 'jack.import.type.policy' for type collision policy)

2)

Error:com.android.jack.JackAbortException: Library reading phase: Type javax.inject.Named from file 'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-2.4.0-b10-e2682135301b663484690f1d3a4a523bcea2a732.jar' has already been imported from file 'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-1-4a242883e90a864db3b80da68e11a844f842d2df.jar', type 'javax.inject.Named' (see property 'jack.import.type.policy' for type collision policy)

3)

Error:com.android.jack.backend.jayce.TypeImportConflictException: Type javax.inject.Named from file 'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-2.4.0-b10-e2682135301b663484690f1d3a4a523bcea2a732.jar' has already been imported from file 'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-1-4a242883e90a864db3b80da68e11a844f842d2df.jar', type 'javax.inject.Named' (see property 'jack.import.type.policy' for type collision policy)

4)

:app:compileDebugJavaWithJack FAILED Error:Execution failed for task ':app:compileDebugJavaWithJack'. java.io.IOException: com.android.jack.api.v01.CompilationException: Library reading phase: Type javax.inject.Named from file 'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-2.4.0-b10-e2682135301b663484690f1d3a4a523bcea2a732.jar' has already been imported from file 'C:\Users\nicholas\AndroidStudioProjects\BaseIntegrations\app\build\intermediates\jill\debug\packaged\javax.inject-1-4a242883e90a864db3b80da68e11a844f842d2df.jar', type 'javax.inject.Named' (see property 'jack.import.type.policy' for type collision 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. Заранее спасибо.

+1

Вы пытались сделать недействительным кеш и перезапустить Android Studio? – Jaythaking

+0

@ cricket_007 Я хотел бы решить эти проблемы, прежде чем полагаться на библиотеки backport, потому что кажется, что Google продвигается к Java8 для всех будущих выпусков. –

+0

@Jaythaking Я попытался сделать недействительным кеш и перезапустить, но все же те же проблемы, я добавил еще одну ошибку, которую я пропустил раньше. Спасибо за быстрые ответы, но все же ошибки журнала. –

ответ

0

Я в конечном итоге решить эту проблему сборки. Одна из моих зависимостей заключалась в добавлении второй библиотеки javax.inject, которая бросала эти ошибки сборки, говоря, что javax.inject jar уже был импортирован из предыдущего.

У меня был javax.inject-1 и javax.inject-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. Поэтому, если у кого-то еще есть эта проблема, просто следите за дублированием внешних библиотек, поступающих из некоторого импорта зависимостей.

1

Мы изучаем это, я думаю, что это связано с различным поведением плагина Android Gradle для Jack и javac. В качестве обходного пути, вы можете попробовать это в jackOptions

additionalParameters = [ "jack.import.type.policy" : "keep-first" ] 

Но следует помнить, что с этой опцией, Джек будет держать первое определение класса он сталкивается.

Вы можете отслеживать наш прогресс здесь: https://code.google.com/p/android/issues/detail?id=222273

+0

Berstrom Спасибо за ответ, я буду отслеживать прогресс. Должна ли эта линия дополнительных устройств идти в jackOptions {}?Я разместил его там и теперь получаю ошибку построения градиента: Ошибка: (16, 0) Не удалось установить неизвестные свойства 'дополнительные параметры' для JackOptions_Decorated {isEnabled = true, isJackInProcess = null} типа com.android.build .gradle.internal.dsl.JackOptions. Open File Кроме того, следует ли комментировать объект отслеживания ошибок в коде Google? –

+1

Я сделал еще несколько исследований Джека и посмотрел, что правильный формат для тега дополнительных параметров выглядит так: дополнительные параметры («jack.import.type.policy»: «keep-first»). Это дает мне ошибки построения градиента, говорящие: «Не удалось найти метод дополнительных параметров() для аргументов [{arguments}] ..... и я пробовал другие аргументы, показанные при просмотре свойств справки jack.jar в CL, но ни один из аргументы, похоже, берутся. Теперь он распознает этот метод, где, как и раньше, он видел неизвестное свойство. –

+0

Я вижу, что вы решили свою проблему, но если у нас есть ошибка с параметрами Джека, какая версия плагина Android Gradle вы используете? –

0

Я столкнулся с той же проблемой. Тогда я нашел один и тот же пакет в этих двух банках, но это не одна и та же версия. Так что изменить их на одну версию.

Смежные вопросы