android - Android Studio/react-native 项目:无法删除 gradle 错误:未找到 ID 为“com.android.library”的插件
问题描述
我正在尝试将 OpenCV 功能添加到我的 react-native 项目并遵循相同的在线教程,但我无法解决 gradle 构建错误。
Android gradle 构建文件如下所示:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext {
buildToolsVersion = "29.0.3"
minSdkVersion = 21
compileSdkVersion = 29
targetSdkVersion = 29
ndkVersion = "20.1.5948944"
}
repositories {
mavenCentral()
google()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:4.1.0")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
google()
jcenter()
maven { url 'https://www.jitpack.io' }
}
}
opencv gradle 构建文件是:
apply plugin: 'com.android.library'
def openCVersionName = "4.5.1"
def openCVersionCode = ((4 * 100 + 5) * 100 + 1) * 10 + 0
println "OpenCV: " +openCVersionName + " " + project.buildscript.sourceFile
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 21
targetSdkVersion 26
versionCode openCVersionCode
versionName openCVersionName
externalNativeBuild {
cmake {
arguments "-DANDROID_STL=c++_shared"
targets "opencv_jni_shared"
}
}
}
buildTypes {
debug {
packagingOptions {
doNotStrip '**/*.so' // controlled by OpenCV CMake scripts
}
}
release {
packagingOptions {
doNotStrip '**/*.so' // controlled by OpenCV CMake scripts
}
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_6
targetCompatibility JavaVersion.VERSION_1_6
}
sourceSets {
main {
jniLibs.srcDirs = ['native/libs']
java.srcDirs = ['java/src']
aidl.srcDirs = ['java/src']
res.srcDirs = ['java/res']
manifest.srcFile 'java/AndroidManifest.xml'
}
}
externalNativeBuild {
cmake {
path (project.projectDir.toString() + '/libcxx_helper/CMakeLists.txt')
}
}
}
dependencies {
}
我检查了 gradle plugin(4.1.0) 和 gradle(6.5) 版本,它们是兼容的。尝试使用 gradle wrapper(6.5) 和本地 gradle(6.8) 进行构建,但仍然出现相同的错误。
请帮忙
解决方案
解决了我这边的愚蠢错误。opencv 模块必须在 android 目录而不是根目录中导入
推荐阅读
- html - 将 div 缩放到其父级,同时保持内部的绝对位置
- ios - 带有 HLS 冗余流和不良网络的奇怪 AVPlayer 行为
- javascript - Firestore 说我在多个属性上有不等式过滤器,但我没有
- bash - 何时在 shell 中使用 ANSI-C 引用?
- c++ - 使用 Boost Spirit/Fusion 轻松解析带有枚举字段和 STL 容器的结构
- openxml - 无法打开使用 openoffice writer 创建的 openxml 文档
- python-3.x - 使用gather_nd在循环中获取结果-所有输入的形状必须匹配
- primefaces - pe:sheet 不会触发从 null 到 0 的数值变化
- react-native - 加载时调用 FlatList onEndReached (React Native)
- heroku - 如何在 Heroku Dyno 上部署 Sonarqube 服务器