Ich habe die folgende Klasse
import com.android.annotations.NonNullByDefault;
@NonNullByDefault
public final class Log {
...
}
und hier ist meine build.gradle-Datei (einige Teile weggelassen)
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'
}
In Android Studio wird für meine Klasse keine Warnung ausgegeben
Wenn ich jedoch versuche, meine App zu erstellen und auszuführen, wird dieser Fehler von gradle angezeigt
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
Antworten:
So beheben Sie automatisch alle Android-zu-Androidx-Probleme für React Native (Voraussetzung npx)
Fügen Sie die folgenden zwei Flags zu
true
Ihrergradle.properties
Datei unter hinzuProjectFolder/android/gradle.properties
android.useAndroidX=true android.enableJetifier=true
Ausführen
npm install --save-dev jetifier npx jetify npx react-native run-android
Fügen Sie in Ihrer package.json den Skripten Folgendes hinzu
"postinstall" : "npx jetify"
Weitere Informationen unter https://github.com/mikehardy/jetifier
Update: Dies ist jetzt in React-Native 0.60 integriert. Wenn Sie auf React-Native 0.60 migrieren, benötigen Sie diesen Schritt nicht. - https://facebook.github.io/react-native/blog/2019/07/03/version-60#androidx-support
quelle
Verwenden Sie die Implementierung
androidx.appcompat:appcompat:1.0.2
in Gradle und dannändern ,
import android.support.annotation.Nullable;
umimport androidx.annotation.NonNull;
in den Klassen Importequelle
Öffnen
gradle.properties
und verwenden Sie folgenden Code:android.useAndroidX=false android.enableJetifier=false
oder U kann auch diese Abhängigkeiten verwenden:
implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.annotation:annotation:1.0.2'
quelle
Ich hatte ähnliche Probleme bei der Migration auf AndroidX.
Wenn durch Hinzufügen der folgenden zwei Zeilen zu gradle.properties das Problem nicht gelöst wurde
android.useAndroidX=true android.enableJetifier=true
Dann versuche es
Wenn bei der Migration weiterhin Probleme auftreten, versuchen Sie manuell, die Bibliotheken zu ersetzen, die das Problem verursachen.
Zum Beispiel
Wenn Sie ein Problem mit der
android.support.annotation.NonNull
Änderung haben, ändern Sie esandroidx.annotation.NonNull
wie in der folgenden Tabelle mit Klassenzuordnungen angegeben.Klassenzuordnungen
Maven-Artefaktzuordnungen
quelle
import android.support.annotation.NonNull;
zuimport androidx.annotation.NonNull;
arbeiteten für mich.In meinem Fall musste ich verwenden
import androidx.annotation...
Anstatt von
import android.annotation...
Ich bin auf AndroidX migriert und habe vergessen, das zu ändern.
quelle
Ich hatte ähnliche Probleme bei der Migration auf AndroidX. Dieses Problem ist auf die Abhängigkeit der Old Butter Knife-Bibliothek zurückzuführen.
Wenn Sie ein Buttermesser verwenden, sollten Sie mindestens Buttermesser Version 9.0.0-SNAPSHOT oder höher verwenden.
implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT' annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
quelle
Anmerkungen stammen von
support's library
denen, die in verpackt sindandroid.support.annotation
.Als weitere Option können Sie eine
@NonNull
Annotation verwenden, die angibt, dass ein Parameter-, Feld- oder Methodenrückgabewert niemals null sein darf.Es wird aus importiert
import android.support.annotation.NonNull;
quelle
compile 'com.android.support:support-annotations:25.0.0'
habecompile 'com.android.support:support-v4:25.0.0'
in mein build.gradle geändert und der Import liest sich immer nochimport com.android.annotations.NonNullByDefault;
und der Fehler tritt immer noch auf. Ist es das, worüber du sprichst?Den offiziellen Javadoc der Bibliothek finden Sie hier
support-annotations
.Wie Sie sehen können, befinden sich alle Klassen im selben Paket
android.support.annotation
und nichtcom.android.annotations
.Auch die Klasse
NonNullByDefault
existiert in diesem Paket nicht.quelle
Sie sollten keinen Code manuell bearbeiten. Jetify sollte diesen Job für Sie erledigen. Wenn Sie mit cli arbeiten / bauen
react-native
, müssen Sie nichts tun, aber wenn Sie Andriod Studio ausführen / bauen, müssen Sie jetify als Pre-Build ausführen , wie können Sie dies automatisieren:1- Gehen Sie im obigen Menü zum Bearbeiten der Konfigurationen:
2- Fügen Sie den unteren Bildschirmrand hinzu, den Sie vor dem Start finden. Klicken Sie auf das Pluszeichen und wählen Sie Externes Tool ausführen
2- Geben Sie die folgenden Informationen ein und beachten Sie, dass das Arbeitsverzeichnis Ihr Projektstammverzeichnis ist (nicht das Android-Verzeichnis):
3- Stellen Sie sicher, dass dies vor allem anderen ausgeführt wird. Am Ende sollte Ihre Konfiguration ungefähr so aussehen:
quelle
Wenn ein Fehler in der automatisch generierten Butterknife-Datei auftritt, aktualisieren Sie die Butterknife-Abhängigkeitsversion
implementation 'com.jakewharton:butterknife:10.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
quelle
Alles, was Sie tun müssen, ist, 'import android.support.annotation.Nullable' in Klassenimporten durch 'import androidx.annotation.Nullable' zu ersetzen.
Dies ist eine gängige Praxis. Wenn Probleme beim Import auftreten, entfernen Sie diesen Import und drücken Sie einfach Alt + Eingabetaste für die zugehörige Klasse. Dadurch erhalten Sie die Option zum Importieren der Klasse. Hinweis Geben Sie die Eingabetaste ein, und die Probleme werden behoben. .
quelle
Für mich war es eine alte Version von
npm
.Lauf
npm install npm@latest -g
und dannnpm install
quelle
Versuchen Sie für Ionic Folgendes:
Der Fehler tritt auf, weil diese App AndroidX nicht verwendet, diese Plugins jedoch Fehler beheben.
quelle