Android Gradle не может собрать и не может решить R - PullRequest
1 голос
/ 20 марта 2019

Проблема 1: В MainActivity.java я получаю синтаксическую ошибку «не удается разрешить символ R».

Проблема 2: Когда я пытаюсь очистить или восстановитьВ проекте я получил очень длинную ошибку, связанную здесь

Стоит также отметить, что я все еще могу запустить приложение и развернуть его на своем телефоне.Не удается просто создать приложение.

Я пробовал несколько вещей, включая

  1. удаление .gradle и .idea / library.

  2. добавление следующей строки

    implementation 'com.android.support:support-annotations:26.1.0'
    
  3. Создание проекта и создание приложения


Вот мое приложениеи файлы MyApp Gradle.

Уровень приложения:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "engineer.myname.myapp.myapp"
        minSdkVersion 22
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-annotations:26.1.0'
    implementation 'com.android.support:design:26.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Уровень проекта:

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

buildscript {

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


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

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

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

Ответы [ 4 ]

2 голосов
/ 20 марта 2019

Вы должны добавить maven { url 'https://maven.google.com' } в разделе репозиториев.

Уровень проекта:

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

buildscript {

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


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

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

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

ИЛИ

Если вы используете версию 26тогда версия внутренних зависимостей должна быть 1.0.1 и 3.0.1, т. е. следующим образом

androidTestImplementation 'com.android.support.test:runner:1.0.1'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

Если вы используете версию 27, тогда версия внутренних зависимостей должна быть 1.0.2 и 3.0.2, т. е. следующим образом

androidTestImplementation 'com.android.support.test:runner:1.0.2'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
1 голос
/ 20 марта 2019

Ошибка связана с используемой версией аннотаций поддержки.Это в вашем журнале ошибок, последняя вызвана строкой -

Вызвано: org.gradle.api.GradleException: Не удается найти версию 'com.android.support:support-annotations', которая удовлетворяетограничения версии:

Из-за -

реализация 'com.android.support:support-annotations:26.1.0'

Обновление до последней стабильной версии библиотеки решит проблему.

Последняя версия как:

implementation 'com.android.support:support-annotations:28.0.0'

Необходимость обновления до последних версий библиотеки может быть вызвана многими причинами;для более новых Android Tools или Android Studio потребуются современные библиотеки, или для работы одной из ваших библиотек потребуется другая библиотека и т. д.

Лучше всего использовать новейшие стабильные библиотеки релизов, когда это возможно.Кроме того, рассмотрите возможность использования библиотек AndroidX, так как старые версии с номерами больше не будут использоваться Google в будущем.Прочитайте здесь и здесь из Google Android Documentation.

0 голосов
/ 20 марта 2019

Это связано с тем, что инструменты Android Studio предполагают, что вы используете последнюю версию buildToolsVersion, равную 28.0.3, когда вы явно не добавляете buildToolsVersion в приложение build.gradle следующим образом:

android {
    compileSdkVersion 26
    // you didn't add any buildToolsVersion
    defaultConfig {
        applicationId "engineer.myname.myapp.myapp"
        minSdkVersion 22
        targetSdkVersion 26

        ...
    }

    ...
}

Итак, Android Studio будет неявно добавлять buildToolsVersion "28.0.3":

android {
    compileSdkVersion 26
    buildToolsVersion "28.0.3" // added implicitly by Android Studio.
    defaultConfig {
        applicationId "engineer.myname.myapp.myapp"
        minSdkVersion 22
        targetSdkVersion 26

        ...
    }

    ...
}

. При создании приложения выдается ошибка 'cannot resolve symbol R', поскольку buildToolsVersion 28.0.3 не можеткорректная работа с compileSdkVersion 26 и вспомогательными библиотеками 26.

Итак, вам нужно использовать одну и ту же версию для buildToolsVersion, compileSdkVersion и поддерживать библиотеки, чтобы избежать проблемы.

0 голосов
/ 20 марта 2019

Каждая версия плагина Android Gradle теперь имеет версию инструментов для сборки по умолчанию. Минимальная поддерживаемая версия для Android Gradle Plugin 3.3.2 - 28.0.3. И вероятно ваши версии зависимостей, например com.android.support:support-annotations:28.0.0, должно совпадать с этой версией, чтобы избавиться от ошибки ниже:

>Caused by: org.gradle.api.GradleException: Cannot find a version of 'com.android.support:support-annotations' that satisfies the version constraints:
   Dependency path 'MyApp:app:unspecified' --> 'com.android.support:support-annotations:'
   Constraint path 'MyApp' --> 'com.android.support:support-annotations' strictly '26.1.0' because of the following reason: debugRuntimeClasspath uses version 26.1.0

Вот ссылки, которые могут быть связаны с вашим вопросом:

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