не может использовать плагины базы и локации через флаттер и андроид - PullRequest
0 голосов
/ 04 мая 2018

Я работаю над этим вопросом целых 2 дня и уже не приблизилась к решению этой проблемы.

Я использую флаттер, и после прохождения учебника по кодовым меткам для firebase я попытался добавить местоположение в микс. Мои зависимости в pubspec.yaml, build.gradle и app / build.gradle выглядят так:

pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
#  image_picker: 0.1.1                                             # new
#  google_sign_in: 0.3.1                                           # new
#  firebase_analytics: 0.0.4                                       # new
#  firebase_auth: 0.2.0                                            # new
  firebase_database: 0.0.12                                       # old
  firebase_storage: 0.0.5                                         # old
#  firebase_database: 0.4.6                                       # new
#  firebase_storage: 0.3.3                                         # new
  location: "^1.2.0"

build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.google.gms:google-services:3.1.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Приложение / build.gradle

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 27

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.takaoandrew.flutteralight"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

//        multiDexEnabled true

    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
//    compile ("com.google.android.gms:play-services-base:10.0.1") {
//        force = true;
//    }
//    compile ("com.google.android.gms:play-services-tasks:10.0.1") {
//        force = true;
//    }
//    compile ("com.google.android.gms:play-services-basement:10.0.1") {
//        force = true;
//    }
}
apply plugin: 'com.google.gms.google-services'

Ошибка, которую я получаю, это

Не удалось выполнить задачу ': app: preDebugBuild'.

Зависимость Android 'com.google.android.gms: play-services-base' имеет разные версии для пути к классам компиляции (11.0.4) и времени выполнения (11.8.0). Вы должны вручную установить ту же версию через DependencyResolution

Я пытался вручную переопределить свои игровые сервисы, но я не знаю, как это сделать с флаттером. Еще когда был весь андроид, я сам выбрал номер версии. Раскомментируйте следующие строки из app / build.gradle

//    compile ("com.google.android.gms:play-services-base:10.0.1") {
//        force = true;
//    }
//    compile ("com.google.android.gms:play-services-tasks:10.0.1") {
//        force = true;
//    }
//    compile ("com.google.android.gms:play-services-basement:10.0.1") {
//        force = true;
//    }

выдает ошибку

Не удалось выполнить задачу ': app: transformDexArchiveWithExternalLibsDexMergerForDebug'.

java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Невозможно объединить dex

- это классическая ошибка для меня. Раскомментирование строки

// multiDexEnabled true

в app / build.gradle не изменяется с невозможностью объединения dex.

Зависимости кажутся мне беспорядком, поэтому я попытался посмотреть на дерево зависимостей. Я хочу видеть мои зависимости gradle, чтобы попытаться все выровнять. Когда я запускаю ./gradlew: приложение / зависимости я получаю

FAILURE: сборка не удалась, исключение.

  • Что пошло не так: Не удалось определить версию Java из '10 .0.1 '.

Знает ли кто-то, в чем состоят мои проблемы, или у кого-то есть полезные ссылки, которые помогут мне понять зависимости gradle, и как они связаны с зависимостями флаттера, или как решить проблемы с 'dex', или с какими-либо советами вообще ... I был бы очень признателен, потому что я сейчас бьюсь головой о стену. Я пробовал другие решения, которые я видел в StackOverflow, и ничего не помогло. И версия для iOS пока работает нормально.

...