Ошибка: пакет com.android.nnotations не существует

У меня следующий класс

import com.android.annotations.NonNullByDefault;

@NonNullByDefault
public final class Log {
    ...
}

и вот мой файл build.gradle (некоторые части опущены)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '24.0.1'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 2
        versionName "0.2"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

}

dependencies {    
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.android.support:support-annotations:25.0.0'
    compile 'com.android.support:design:25.0.0'
}

В Android Studio нет предупреждений для моего класса

enter image description here

Однако, когда я пытаюсь собрать и запустить свое приложение, я получаю эту ошибку из Gradle

Information:Gradle tasks [:app:clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:assembleDebug]
Warning:[options] bootstrap class path not set in conjunction with -source 1.7
/home/puter/git-repos/TaskManager3/app/src/main/java/com/treemetrics/taskmanager3/util/Log.java
Error:(3, 31) error: package com.android.annotations does not exist
Error:(7, 2) error: cannot find symbol class NonNullByDefault
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
Information:BUILD FAILED
Information:Total time: 21.021 secs
Information:3 errors
Information:1 warning
Information:See complete output in console

Ответ 1

Чтобы автоматически исправить все проблемы с android на androidx для React Native, (предварительное условие npx)

Добавьте следующие два флага в значение true в файле gradle.properties в ProjectFolder/android/gradle.properties

android.useAndroidX=true
android.enableJetifier=true

Execute

npm install --save-dev jetifier
npx jetify
npx react-native run-android

В вашем package.json добавьте следующее в скрипты

  "postinstall" : "npx jetify"

Больше информации на https://github.com/mikehardy/jetifier

Обновление: Это теперь встроенный в реагирующий-родной 0,60. Если вы перейдете на реакцию 0,60, этот шаг вам не понадобится. - https://facebook.github.io/react-native/blog/2019/07/03/version-60#androidx-support

Ответ 2

Используйте реализацию androidx.appcompat:appcompat:1.0.2 в Gradle, а затем

изменить import android.support.annotation.Nullable; import androidx.annotation.NonNull; в классах импорт

Ответ 3

Откройте gradle.properties и используйте следующий код:

android.useAndroidX=false
android.enableJetifier=false

или U тоже может использовать эти зависимости:

implementation 'androidx.appcompat:appcompat:1.0.2'
 implementation 'androidx.annotation:annotation:1.0.2'

Ответ 4

Аннотации взяты из support library которые упакованы в android.support.annotation.

В качестве другого варианта вы можете использовать аннотацию @NonNull которая означает, что значение параметра, поля или метода никогда не может быть нулевым.
Он импортируется из import android.support.annotation.NonNull;

Ответ 5

Вы можете найти здесь официальный javadoc библиотеки support-annotations.

Ошибка: (3, 31) ошибка: пакет com.android.nnotations не существует

Как вы можете видеть, все классы находятся в одном пакете android.support.annotation а не com.android.annotations.

Ошибка: (7, 2) ошибка: не удается найти класс символов NonNullByDefault

Также класс NonNullByDefault не существует в этом пакете.

Ответ 6

В моем случае мне пришлось использовать

import androidx.annotation...

вместо

import android.annotation...

Я перешел на AndroidX и забыл изменить это.

Ответ 7

У меня были похожие проблемы при переходе на androidx.

Если при добавлении следующих двух строк в gradle.properties проблема не решается

android.useAndroidX=true
android.enableJetifier=true

Тогда попробуй

  1. В Android Studio 3.2 и более поздних версиях вы можете перенести существующий проект в AndroidX, выбрав Refactor> Перенос в AndroidX в строке меню (developer.android.com)

.Если проблемы с миграцией по-прежнему возникают, попробуйте вручную заменить библиотеки, которые вызывают проблему.

Например,

Если у вас есть проблема с android.support.annotation.NonNull, замените ее на androidx.annotation.NonNull, как указано в приведенной ниже таблице сопоставлений классов.

Классовые отображения

Maven Artifact Mappings

Ответ 8

если ошибка из автоматически созданного файла butterknife затем обновите версию зависимости "butterknife"

implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'