#android #android-studio #firebase #build.gradle #firebase-storage
#Android #android-studio #firebase #build.gradle #firebase-хранилище
Вопрос:
Весь день у меня проблема с разрешением обновления некоторых зависимостей в моем новом проекте.
Это моя сборка.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.3"
defaultConfig {
applicationId "com...."
minSdkVersion 19
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.google.firebase:firebase-database:9.6.1'
compile 'com.google.firebase:firebase-storage:9.6.1'
compile 'com.firebaseui:firebase-ui:0.4.3'
compile 'com.firebase:firebase-client-android:2.3.1'
compile 'com.google.android.gms:play-services:9.6.1'
}
apply plugin: 'com.google.gms.google-services'
и ошибка:
Ошибка:
"Execution failed for task: ':app:transformClassesWithDexForDebug'
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/home/bin/java" finished with non zero-exit value 2
Проблема проявлялась, когда я пытался загрузить изображение в хранилище Firebase. Произошла ошибка с подключением к Интернету и т.д. Я решил обновить библиотеки. После этого возникает ошибка с jdk 1.8.
Может ли кто-нибудь помочь мне решить эту проблему?
С уважением
Комментарии:
1. Вам нужен набор инструментов jack, если вы хотите функции java8. Также вам нужно скомпилировать ‘com.google.android.gms: play-services: 9.6.1’ вместо использования конкретных, которые вам нужны developers.google.com/android/guides/setup . Проверьте выборочную компиляцию API в ваш исполняемый файл
2. В следующий раз скопируйте и вставьте ошибку вместо того, чтобы делать снимок экрана. Он едва читаем, если не открыть изображение на новой вкладке.
3. @th3pat3l Спасибо за информацию. Я задал свой вопрос о вашем предложении. Спасибо.
Ответ №1:
В принципе, вы также хотели бы проверить и разрешить конфликты версий в зависимостях вашего приложения. Также проверьте, включен ли multidex в вашем приложении.
У меня была аналогичная проблема. В моем приложении я использую библиотеку повторных попыток guava, которая загружала библиотеку Google guava версии 21. Для версии 21 Guava требуется JDK 1.8 без поддержки обратного переноса, и это вызвало эту ошибку в моем случае.
Я смог решить эту проблему, включив библиотеку повторных попыток guava, чтобы она использовала версию 19.0 библиотеки guava:
compile ("com.github.rholder:guava-retrying:2.0.0") {
exclude group: 'com.google.guava', module: 'guava'
}
compile 'com.google.guava:guava:19.0'
Комментарии:
1. у меня не работает. я получаю ошибку: не удалось выполнить задачу ‘: app: transformClassesWithMultidexlistForFlavorQuaDebug’. > исключение java.io.io: не удается записать [/Users/m…uild/intermediates/multi-dex/flavorQua/debug/componentClasses.jar ] (Не удается прочитать [/Users/miguelsilva/.gradle/caches/modules-2/files-2.1/com.google.guava/guava-jdk5/17.0/463f8378feba44df7ba7cd9272d01837dad62b36/guava-jdk5-17.0.jar(;;;;;;**.class) ] (Дублирующая запись zip [guava-jdk5-17.0.jar:com/google/common/annotations/Beta.class ]))
2. Некоторые библиотеки добавляют те же зависимости (я думаю, что в вашем случае Guava). Вам нужно найти конфликтующие библиотеки, запустив задачу gradle зависимостей и исключив повторяющиеся зависимости. Проверьте наличие библиотек, подобных Dagger 2, и исключите из них Guava.
Ответ №2:
Я считаю, что вам нужно включить Multidex для вашего приложения.
добавьте библиотеку Multidex в свой dependencies
, затем включите Multidex в defaultConfig
.
Пример:
android {
compileSdkVersion 24
buildToolsVersion "24.0.3"
defaultConfig {
applicationId "com...."
minSdkVersion 19
targetSdkVersion 24
versionCode 1
versionName "1.0"
// Enabling multidex support.
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.google.firebase:firebase-database:9.6.1'
compile 'com.google.firebase:firebase-storage:9.6.1'
compile 'com.firebaseui:firebase-ui:0.4.3'
compile 'com.firebase:firebase-client-android:2.3.1'
compile 'com.google.android.gms:play-services:9.6.1'
compile 'com.android.support:multidex:1.0.0'
}
Затем в `AndroidManifest.xml «, включить установку Multidex:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
Источник:https://developer.android.com/studio/build/multidex.html#mdex-gradle