【问题标题】:react-native-camera error when compiling android - cannot find symbol class NonNull编译android时出现react-native-camera错误-找不到符号类NonNull
【发布时间】:2019-06-23 15:59:25
【问题描述】:

package.js

...
"react": "16.8.3",
"react-native": "0.59.5",
"react-native-camera": "git+https://git@github.com/react-native-community/react-native-camera.git"
...

settings.gradle

include ':app'

include ':react-native-camera'
project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android')

settings.gradle

...
android {
    compileSdkVersion rootProject.ext.compileSdkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "xxxxxx"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
    }
    ...
}

dependencies {
    implementation project(':react-native-camera')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.annotation:annotation:1.0.2'
    implementation "com.facebook.react:react-native:+"  // From node_modules
}
...

gradle.properdies

android.useAndroidX=true
android.enableJetifier=true

错误

../../../../../../../../node_modules/react-native-camera/android/src/main/java/com/google/android/cameraview /Camera2.java(3 个错误)

错误:找不到符号类 NonNull 错误:找不到符号类 NonNull 错误:找不到符号类 NonNull

【问题讨论】:

    标签: react-native react-native-camera non-nullable


    【解决方案1】:

    这个问题是google迁移到androidx引起的

    第一个快速修复方法是手动删除 /node-modules/ 中的导入 / 注释

    你需要:

    • 首先找到Camera2.java 文件(引发错误的那个)
    • 然后找到import android.support.annotation.NonNull;这一行并删除它
    • 同时删除文件中使用的每个 @NonNull 注释

    Mike Hardy 创建了一个包,允许您自动执行此操作:https://github.com/mikehardy/jetifier#to-jetify--convert-node_modules-dependencies-to-androidx(它对 react-native / npm 友好)

    如果每个包都使用这些注释,您将需要对它们执行此操作。

    另外请记住,某些包可能正在使用位于 android.support.v4 的 java 类(例如 ActivityCompat、NotificationCompat,...)这些类现在位于 androidx.core.app.*(androidx.core.app.ActivityCompat, ...) 由于 androidx 迁移

    一些参考资料:

    这是旧/新 android 导入之间的类映射 csv 文件:

    https://github.com/mikehardy/jetifier/blob/master/src/androidx-class-mapping.csv

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      相关资源
      最近更新 更多