Миграция на AndroidX - PullRequest
       3

Миграция на AndroidX

0 голосов
/ 24 октября 2018

Ну, я начал переход на AndroidX из годичного проекта (с тех пор нетронутым), и у меня возникли проблемы с ресурсами и сборкой gradle.Я полностью растерялся с новыми пространствами имен, я изменил некоторые из них, я обновил все, что сказал мне AndroidStudio, но все еще не распознал вещи в моем проекте.Я вставлю здесь и Gradle, и я поставлю ошибку ниже.

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {

    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

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

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

Модуль

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"
    defaultConfig {
        applicationId "com.example.usuario.tm"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test:runner:1.1.0-alpha3"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0-alpha3', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        implementation 'androidx.appcompat:appcompat:1.0.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        implementation 'androidx.legacy:legacy-support-v4:1.0.0'
        implementation 'com.google.android.material:material:1.0.0'
        implementation 'com.google.gms:google-services:4.1.0'
        implementation 'com.google.android.gms:play-services-auth:16.0.1'
        testImplementation 'junit:junit:4.12'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'maven'

Ошибка

Android resource linking failed
Output:  C:\Users\Xrless\Desktop\Programing\TN\TM\app\src\main\res\layout\activity_principal.xml:34: error: attribute android:style not found.
error: failed linking file resources.

Command: C:\Users\Xrless\.gradle\caches\transforms-1\files-1.1\aapt2-3.2.1-4818971-windows.jar\cf456f090f0725907522fb6d2bec3322\aapt2-3.2.1-4818971-windows\aapt2.exe link -I\
        C:\Users\Xrless\AppData\Local\Android\Sdk\platforms\android-28\android.jar\
        --manifest\
        C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\intermediates\merged_manifests\debug\processDebugManifest\merged\AndroidManifest.xml\
        -o\
        C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\intermediates\processed_res\debug\processDebugResources\out\resources-debug.ap_\
        -R\
        @C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\intermediates\incremental\processDebugResources\resources-list-for-resources-debug.ap_.txt\
        --auto-add-overlay\
        --java\
        C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\generated\not_namespaced_r_class_sources\debug\processDebugResources\r\
        --custom-package\
        com.example.usuario.tm\
        -0\
        apk\
        --output-text-symbols\
        C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\intermediates\symbols\debug\R.txt\
        --no-version-vectors
Daemon:  AAPT2 aapt2-3.2.1-4818971-windows Daemon #0

Ответы [ 6 ]

0 голосов
/ 28 августа 2019

открыть файл gralde.properties добавить ниже строки

android.useAndroidX = true

Синхронизировать проект

Работает отлично.

0 голосов
/ 08 августа 2019

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

В gradle.property:

dex.force.jumbo=true
android.useAndroidX=true
android.enableJetifier=true
android.enableD8=true
android.enableR8.libraries = false
android.enableR8 = false

В build.gradle:

defaultConfig {
    ...
    compileSdkVersion 28
    …
}
//Use JDK1.8 and make sure the same is well specified in your gradle file.
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
//Exclude Guava libraries
 ...
configurations {
    ...
    implementation.exclude group: 'com.google.guava'
}

//Make sure your firebase and google libraries are all updated
   ...
   implementation 'com.google.guava:guava:27.0.1-android'
   ...

После всего этого, несколько обычных вещей:

  • Убедитесь, что вы обновили свой Gradle до последней версии (на данный момент 3.4.2)
  • для выполнения предыдущего действия потребуется Android Studio версии 3.4 и выше
  • Очистить кэши Gradle (используйте эту команду, если в macOs rm -rf $HOME/.gradle/caches/)
  • Отмените действие кэшей и перезапустите, ...
  • Остальное будет просто изменить несколько реализаций, которые не были реорганизованы должным образом.

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

0 голосов
/ 08 ноября 2018

В AndroidStudio 3.2+ вы можете использовать Refactor |Перейдите на AndroidX для обновления проекта.Для более подробной информации здесь .

0 голосов
/ 24 октября 2018

Отлично, я изменил обе реализации и добавил androix = true в файл свойств.Сложность сборки больше не вызывает ошибок (я думаю) Но мои макеты не видны в представлении дизайна

ИЗОБРАЖЕНИЕ ПРОБЛЕМЫ

enter image description here

А это:

ИЗОБРАЖЕНИЕ ПРОБЛЕМЫ 2

enter image description here

0 голосов
/ 24 октября 2018
  1. реализация androidx.appcompat: appcompat: 1.0.0-alpha1
  2. реализация androidx.constraintlayout: constraintlayout: 1.1.2
0 голосов
/ 24 октября 2018

В вашем Activity_principal.xml есть ошибка.Попробуйте изменить:

андроид: стиль

на

стиль

Также нужно добавить

android.useAndroidX = true

в файл gradle.properties , если вы хотите использовать библиотеку androidX вместо библиотеки поддержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...