我正在开发一个项目,未来应该实现增强现实的某些元素。问题是,对于 AR 部分,我们正在考虑使用 Unity。 我一直很难真正使用 Unity 的 AR,因为我的 Android 手机不支持 Google AR。尽管如此,我仍在尝试学习如何在另一个 React-Native 应用程序中实际实现 Unity 应用程序。 我搜索了又搜索,发现问题多于答案。 我遵循了很多教程和提示,但没有效果。
但确实有一个经常性的库和教程不断被提及:@azesmway/react-native-unity。但就我而言,它在 IOS 上运行得比 Android 上更好。尽管如此,我还是找到了这篇文章第 I 部分:将 Unity Games 集成到 React Native Apps。对于Android。也使用react-native-unity。因此,我尝试按照说明进行一个简单的新项目,但仍然遇到一些问题。
我尝试使用 ChatGPT 调试一些东西,但发现自己通过修复和引发相同的错误而在循环中运行。我百分百确定我的问题出在 Gradle 配置上,但也许我知识不够,不知道如何正确设置所有内容。
我目前正在修改所有 Gradle 配置文件,以修复尝试使用 Android Studio 设备模拟器打开应用程序后出现在控制台上的这两个错误。
FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* Where:
Build file 'C:\Users\...\AwesomeProject\unity\builds\android\unityLibrary\build.gradle' line: 6
* What went wrong:
A problem occurred evaluating project ':unityLibrary'.
> Project with path 'mobilenotifications.androidlib' could not be found in project ':unityLibrary'.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================
2: Task failed with an exception.
-----------
* What went wrong:
A problem occurred configuring project ':unityLibrary'.
> compileSdkVersion is not specified. Please add it to build.gradle
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================
我检查了错误日志中提到的文件,但仍然无法消除这两个错误。
关于第一个错误:
android/build.gradle
看起来像这样
buildscript {
ext {
buildToolsVersion = "34.0.0"
minSdkVersion = 21
compileSdkVersion = 34
targetSdkVersion = 34
ndkVersion = "25.1.8937393"
kotlinVersion = "1.8.0"
}
repositories {
google()
mavenCentral()
flatDir {
dirs "${project(':unityLibrary').projectDir}/libs"
}
}
dependencies {
classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
}
}
plugins {
id "com.facebook.react.rootproject"
}
虽然
unity/builds/android/unityLibrary/build.gradle
看起来有点像这样
apply plugin: 'com.android.library'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project('mobilenotifications.androidlib')
}
android {
ndkPath "C:/Program Files/Unity/Hub/Editor/2022.3.20f1/Editor/Data/PlaybackEngines/AndroidPlayer/NDK"
compileSdkVersion 34
buildToolsVersion '34.0.0'
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
defaultConfig {
minSdkVersion 21
targetSdkVersion 34
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
versionCode 1
versionName '1.0.2'
consumerProguardFiles 'proguard-unity.txt'
}
...
我检查了版本是否相同且一切相同。我是不是错过了什么?
关于第二个错误:
android/settings.gradle
rootProject.name = 'AwesomeProject'
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
include ':app'
includeBuild('../node_modules/@react-native/gradle-plugin')
include ':unityLibrary'
project(':unityLibrary').projectDir=new File('..\\unity\\builds\\android\\unityLibrary')
include ':mobilenotifications.androidlib'
project(':mobilenotifications.androidlib').projectDir = new File('..\\unity\\builds\\android\\mobilenotifications.androidlib')
我尝试过使用或不使用最后 3 行,但仍然一无所获。我检查了该目录是否存在,它确实存在。
a可以做什么?或者我的问题出在其他地方?
要解决您的问题,请确保您的构建配置在整个项目中保持一致。将 android/build.gradle 和 unityLibrary/build.gradle 中的构建脚本更新为以下内容:
buildscript {
ext {
buildToolsVersion = "34.0.0"
minSdkVersion = 22
compileSdkVersion = 34
targetSdkVersion = 34
ndkVersion = "23.1.7779620"
kotlinVersion = project.hasProperty('kotlinVersion') ? project.kotlinVersion : "1.7.0"
}}
确保 android/build.gradle (React Native Android gradle) 和 unityLibrary/build.gradle (Unity Android gradle) 具有相同的配置。
接下来,使用以下命令清除缓存:
对于 macOS:
cd android && ./gradlew clean && cd ..
对于 Windows:
cd android && ./gradlew clean && cd..
清理缓存后,使用以下命令重建项目:
yarn android
或
npm run android
此外,请确保您的 minSdkVersion 设置为 22,因为它需要 最低 SDK 版本大于 21。
更多详情请参考这篇Medium文章。
我遵循了 Shahroz Khadim 的回答,但仍然面临同样的问题。
我还在根项目的settings.gradle中添加了以下内容。
include ':mobilenotifications.androidlib' project(":mobilenotifications.androidlib").projectDir = file("../unity/builds/android/unityLibrary/mobilenotifications.androidlib")
还在根项目的 app/build.gradle
的依赖项部分添加了此内容implementation project(':mobilenotifications.androidlib')
还面临一些 NDK 版本问题,但使用 ndk.dir 解决了