Android工程接入UnityLibrary工程

小紫蘇發表於2023-03-09

目錄結構

image-20230308174307367

Unity工程指UnityLibrary目錄下檔案;

安卓工程指app目錄下檔案;

整體指App目錄下不包括app和UnityLibrary;

1.Unity打包時勾選匯出安卓工程;

複製gradle.properties中:unityStreamingAssets=xxx 到整體工程的gradle.properties中

複製local.properites中ndk、jdk路徑到整體工程的local.properites

2.AndroidStudio建立Empty Activity工程;

整體工程的setting.gradle中新增:

include ':unityLibrary'
project(':unityLibrary').projectDir=new File('.\\unityLibrary')

安卓工程app目錄下build.gradle中新增:

dependencies{
	implementation project(':unityLibrary')
	implementation fileTree(dir:project(':unityLibrary').getProjectDir().toString() + ('\\libs'), include: ['*.jar'])
}

3.修改安卓工程和Unity工程Build.Gradle

targetsdk,minsdk,compilesdk,buildToolsVersion都要一致

也可在File/ProjectStructure/Modules中切換Version

4.在安卓工程MainActivity中新增切換Activity程式碼

在OnCreate中新增:

Intent intent = new Intent(MainActivity.this, UnityPlayerActivity.class);
startActivity(intent);

這樣一開始就會開啟Unity介面,也可以在原生工程新增按鈕跳轉;

報錯記錄

1.Gradle Version和 Gradle Plugin Version出錯

Gradle Plugin Version中包含了多個Gradle Version;根據提示選擇對應版本的GradleVersion;如果沒有對應版本,就下載新的Gradle Plugin Version;

File/ProjectStructure/Project中切換;

2.sdk、ndk、jdk版本出錯

建議使用Unity本體目錄下的sdk和jdk,同樣ProjectStructure介面選擇;

之前local.properites也配置過;

image-20230308180236176

3.跳轉Unity工程閃退

安卓工程的main/res/values/string.xml中新增

<string name="game_view_content_description">Game view</string>

4.編譯過程中找不到libillcpp.so,libmain.so等問題

重新複製Unity匯出工程的jiniLibs資料夾到UnityLibrary對應目錄工,刪除buid,重新打包;

5.打包編譯il2cpp報錯

如果做了程式碼熱更有可能是沒有正確生成依賴,找不到對應型別;

我使用HybridCLR熱更,可以重新生成依賴,再次匯出安卓工程;

6.兩個app圖示

註釋UnityLibray目錄中AndroidManifest.xml以下配置;

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

相關文章