Android工程接入UnityLibrary工程

目录结构

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>-->
posted @ 2023-03-09 10:14  小紫苏  阅读(481)  评论(1编辑  收藏  举报