#android #react-native #gradle #android-gradle-plugin #react-native-android
#Android #gradle #android-gradle-plugin #react-native
Вопрос:
Я создаю приложение с использованием React-Native и тестирую его на устройстве Android. После добавления модуля react-native-camera возникает следующая ошибка:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':react-native-camera:compileDebugJavaWithJavac'.
в «Сборка-> Выполнить задачи» (Android Studio).
Что касается компилятора Java, существует около 20-30 ошибок, все из которых показывают следующее: error: package android.support.annotation does not exist
, error: package android.support.v4.util does not exist
, error: package android.support.media does not exist
и т.д. ИЛИ error: cannot find symbol class SparseArrayCompat
, error: package Pools does not exist
error: cannot find symbol variable ExifInterface
, import android.support.v4.util.ArrayMap;
, который при проверке в файле ошибки имеет отношение к операторам типа -import.
Мой файл android /build.gradle:
buildscript {
ext {
minSdkVersion = 26
compileSdkVersion = 28
targetSdkVersion = 27
supportLibVersion = 28
}
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
}
}
allprojects {
repositories {
maven { url "https://jitpack.io" }
mavenLocal()
jcenter()
/*maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
//url "$rootDir/../node_modules/react-native/android"
url "https://maven.google.com"
}*/
google()
}
}
tasks.withType(Wrapper) {
gradleVersion = "4.10.1"
distributionUrl = distributionUrl.replace("bin", "all")
}
Мое приложение / файл build.gradle:
apply plugin: "com.android.application"
import com.android.build.OutputFile
project.ext.react = [
entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
def enableSeparateBuildPerCPUArchitecture = false
def enableProguardInReleaseBuilds = false
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.helloworld"
minSdkVersion 26
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86", "arm64-v8a"
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 defaultConfig.versionCode
}
}
}
productFlavors {
}
}
dependencies {
implementation (project(':react-native-camera')) {
exclude group: 'com.google.android.gms'
exclude group: "com.android.support"
implementation 'com.android.support:exifinterface:28.0.0'
implementation ('com.google.android.gms:play-services-vision:12.0.1') {
force = true
}
}
implementation project(':react-native-orientation')
implementation project(':react-native-gesture-handler')
implementation project(':react-native-vector-icons')
implementation project(':react-native-linear-gradient')
implementation project(':react-native-spinkit')
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation ('com.facebook.react:react-native:0.58.3')
implementation "com.android.support:support-v4:28.0.0"
//implementation "androidx.legacy:legacy-support-v4:1.0.0"
}
Моя попытка решения:
- Я добавил android-support-v4.jar файл в папку ./libs.
- Я добавил ссылки «google ()» или maven на зависимости.
- Я пытался изменить minSdkVersion, compileVersion и т.д., Не помогло, но я предполагаю, что это может быть основной проблемой.
- Перестройка проекта тоже не сработала.
- Перенос проекта на Android X.
Моя версия SDK: 28
Версия Gradle: 4.10.1
путь к классу ‘com.android.tools.build:gradle: 3.3.1’ (понижение версии gradle до 3.1.0 не сработало).
Ответ №1:
измените версию minsdk и версию compilesdk в файле react-native-camera build.gradle со свойствами gradle сборки вашего приложения.
android/build.gradle
buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
googlePlayServicesVersion = "16.1.0" // or set latest version
androidMapsUtilsVersion = "0.5 "
}
}
react-native-camera/android/build.gradle
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName computeVersionName()
}
lintOptions {
abortOnError false
}
}
Ответ №2:
Запуск в корневом каталоге:
npx jetify
Ответ №3:
Недавно из-за проблемы с react-native я получаю ошибку во всех своих рабочих проектах. Моя версия react native — 0.61.5
со ссылкой на
Исправление для более старого react-native (< 0.63): приведенное выше исправление работает только на gradle 6.2 и выше. Более старый react-native использовал более старый gradle.
я просто меняю свою версию gradle с 5.5 на 6.2. У меня это сработало 🙂
Ответ №4:
Проверьте требования к конкретной платформе… Например, на Android проверьте разрешения, которые должны быть, по крайней мере,:
<uses-permission android:name="android.permission.CAMERA" />