React-native 中的 Unity 实现

问题描述 投票:0回答:2

我正在开发一个项目,未来应该实现增强现实的某些元素。问题是,对于 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可以做什么?或者我的问题出在其他地方?

react-native unity-game-engine
2个回答
0
投票

要解决您的问题,请确保您的构建配置在整个项目中保持一致。将 android/build.gradleunityLibrary/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文章


0
投票

我遵循了 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 解决了

© www.soinside.com 2019 - 2024. All rights reserved.