次のクラスがあります
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では、私のクラスに対して警告は出されません
ただし、アプリをビルドして実行しようとすると、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
Android androidxの問題をReact Native、(Prerequisite npx)に対して自動的に修正するには
ProjectFolder/Android/gradle.propertiesにあるgradle.propertiesファイルで、次の2つのフラグをtrueに追加します
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
更新:これは現在、react-native 0.60に組み込まれています。反応ネイティブ0.60に移行する場合、この手順は必要ありません。 - https://facebook.github.io/react-native/blog/2019/07/03/version-60#androidx-support
実装を使用androidx.appcompat:appcompat:1.0.2
グラドル、次に
変化する import Android.support.annotation.Nullable;
からimport androidx.annotation.NonNull;
クラスのインポート
開いた gradle.properties
および次のコードを使用します。
Android.useAndroidX=false
Android.enableJetifier=false
または、これらの依存関係も使用できます。
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.annotation:annotation:1.0.2'
Androidxへの移行時に同様の問題が発生しました。
以下の2行をgradle.propertiesに追加しても問題が解決しない場合
Android.useAndroidX=true
Android.enableJetifier=true
次に試してください
それでも移行で問題が発生する場合は、問題の原因となっているライブラリを手動で交換してください。
例
Android.support.annotation.NonNull
に問題がある場合は、以下のクラスマッピングの表に示すように、androidx.annotation.NonNull
に変更してください。
私の場合、私は使用しなければなりませんでした
import androidx.annotation...
の代わりに
import Android.annotation...
AndroidXに移行しましたが、変更するのを忘れていました。
heresupport-annotations
libraryの公式javadocを見つけることができます。
エラー:(3、31)エラー:パッケージcom.Android.annotationsが存在しません
ご覧のとおり、すべてのクラスは同じパッケージAndroid.support.annotation
にあり、com.Android.annotations
ではありません。
エラー:(7、2)エラー:シンボルクラスNonNullByDefaultが見つかりません
また、クラスNonNullByDefault
はそのパッケージに存在しません。
Androidxへの移行時に同様の問題がありました。この問題は、Old Butter Knifeライブラリの依存関係が原因で発生します。
バターナイフを使用している場合は、少なくともバターナイフバージョン9.0.0-SNAPSHOT以降を使用する必要があります。
implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT' annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
注釈は、support's library
にパッケージ化されているAndroid.support.annotation
から取得されます。
別のオプションとして、パラメータ、フィールド、またはメソッドの戻り値がnullになることは決してないことを示す@NonNull
アノテーションを使用できます。
これはimport Android.support.annotation.NonNull;
からインポートされます
手動でコードを編集しないでくださいjetifyreact-native
を使用してCLIから実行/ビルドしている場合は、このジョブを実行する必要があります'何もする必要がありますが、Andriodスタジオを実行/ビルドしている場合は、ビルド前にjetifyを実行する必要があります。これを自動化する方法を次に示します。
1-上記のメニューから設定を編集します:
2-起動する前に見つけた画面の下部を追加しますプラスをクリックしてRun External Tool
2-次の情報を入力します。作業ディレクトリはプロジェクトのルートディレクトリです(Androidディレクトリではありません)。
クラスインポートの「import Android.support.annotation.Nullable」を「import androidx.annotation.Nullable;」に置き換えるだけです。
これは一般的な方法です。インポート時に問題が発生する場合はいつでも、そのインポートを削除し、関連するクラスでAlt + Enterを押すだけです。 。
バターナイフの自動生成ファイルからのエラーの場合、バターナイフの依存バージョンを更新する
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
私にとってはnpm
の古いバージョンでした。
npm install npm@latest -g
を実行してからnpm install
を実行します