SDKSDKsXenseAR Native SDKReact NativeBuild Unity Library và UnityFramework

Build Unity Library

Unity 2022.3.17f1 xảy ra lỗi AndroidJavaException: java.lang.NoSuchFieldError: no "Ljava/lang/Object;" field "mUnityPlayer" in class khi tích hợp vào ReactNative và Flutter, lỗi này đã được fix tại phiên bản Unity 2022.3.19f1


1. Chuẩn bị lib Android (bên Unity Project)

B1: Export Android Project từ Unity (chọn Exports từ Build Settings)

B2: Tìm tới file AndroidManifest.xml tại đường dẫn <build-folder>/unityLibrary/src/main, xoá phần <intent-filter> tới launcher của Unity

<intent-filter>
  <category android:name="android.intent.category.LAUNCHER" />
  <action android:name="android.intent.action.MAIN" />
</intent-filter>

B3: Build Anddroid App Library bằng gradle

cd <build-folder>
export JAVA_HOME=<unity-folder>/PlaybackEngines/AndroidPlayer/OpenJDK
 
# build AAR file
gradle wrapper && ./gradlew assembleRelease

B4: Tạo thư mục <build-folder>/unityLibrary/build/unityLibrary. Copy/move các thành phần dưới đây vào thư mục vừa tạo

  1. <build-folder>/unityLibrary/build/outputs/aar/unityLibrary-release.aar

  2. <build-folder>/unityLibrary/libs

B5: Tạo file <build-folder>/unityLibrary/build/unityLibrary/build.gradle với nội dung như sau:

configurations.maybeCreate("default")
artifacts.add("default", file("unityLibrary-release.aar"))

File gửi đi bao gồm thư mục <build-folder>/unityLibrary/build/unityLibrary và nội dung trong thư mục này


2. Chuẩn bị lib iOS (bên Unity Project)

B1: Exports iOS Project từ Unity (chọn Exports từ Build Settings)

B2: Thực hiện đủ các cấu hình sau:

  • Chuyển Target Membership của thư mục Data từ UnityProject sang UnityFramework
  • Chuyển mức truy cập của file NativeCallProxy.h từ Project sang Public
  • Trong Frameworks/Silver Tau/NSR/Runtime/Plugins/iOS xoá hết Target Membership ngoại trừ UnityFramework (thông thường xoá Unity-iphone)
  • Remove bitcode StcCorder: bitcode_strip -r StcCorder.framework/StcCorder -o StcCorder.framework/StcCorder (ref: https://warchimede.com/posts/2024-10-08-how-to-remove-bitcode-from-framework/)

B3: Build framework và export XCFramework

xcodebuild archive -project "Unity-iPhone.xcodeproj" -scheme "UnityFramework"  -configuration Release  -destination generic/platform=iOS  -archivePath "build/app.xcarchive" CODE_SIGNING_ALLOWED=NO SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
xcodebuild -create-xcframework -archive build/app.xcarchive -framework UnityFramework.framework -output build/UnityFramework.xcframework

File gửi đi bao gồm thư mục UnityFramework.framework và nội dung của thư mục này