当前位置:   article > 正文

Unity 嵌入到 原生安卓_untiy failed to load libmain

untiy failed to load libmain

最近需要在安卓程序中嵌入Unity 3D作为Motion Capture的原型展示。中文搜索到的教程要么太老,要么有问题,甚至是误导。在中英文引擎并用之后,成功实现了嵌入,所以写一篇实践成功的记录,希望对大家有用吧。

 

1、开发环境

Unity:2019.2.17f1(通过Unity Hub 安装 安卓插件,实现安卓项目编译)

Android Studio:3.6.1

Android API:28(安卓9.0)

NDK:安卓编译需要,如果没有安装,AS会自动安装需要的版本

 

2、Unity3d 部分的操作

我加载了一个简单的人物模型,如下:

2.1 配置输出参数(选择 Momo)

在File->Building Setting 中进行设置,如下图

打开 Player Settings

主要注意三个地方:1、设置一些基本信息;2、设置包名和API级别,都和安卓程序一致就行;3、设置为Momo,然后CPU构架选 ARMv7 和 x86。

2.2 尝试Unity本地运行APP(可选,仅仅作为验证可行用)

如上设置,选择 Build and Run,保存APK,Unity会生成包,并且在连接的调试手机上运行,效果如下:

Unity 成功运行了安卓程序。

2.3 Unity导出安卓所需资源

如上,勾选两个选项,进行输出,得到目录如下:

接下来我们用其中的一些资源,既可以集成到安卓中去。

3.集成到安卓中去

3.1 简单编译一个安卓程序

略过~~~

3.2 Unity的资源加入

3.2.1 unity-classes的加入

在资源的libs目录下,将unity-classes复制到安卓目录下的app-libs下面,如下图

然后,选中,右键,add as library,编译,通过。

3.2.2 assets和jniLibs文件夹的加入

Unity资源的目录下面,src,main下面两个文件夹:assets和jinLibs直接复制到安卓目录的app.src.main目录下面,如下图

3.2.3 UnityPlayerActivity 复制到 安卓里面

把UnityPlayerActivity 复制到 MainActivity同一级目录里面,如下图:

3.3 build和run

到此处,我们的资源合并工作已经完成了,Android Studio中已经有了所需资源。项目编译也没有问题。

3.3.1 更改启动页面

直接将UnityPlayerActivity当初启动页面,在AndroidManifest.xml中更改

改成UnityPlayerActivity,直接启动Unity

3.3.2 环境配置

这一步基本上所有中文教程都没写,基本上到上面为止,这时我们可以编译通过,也可以在手机上run,但是会直接闪退。提示:

Unity: Failed to load 'libmain.so', the application will terminate。

在stack  overflow 上找到了相关的问题,需要做两步配置

a.在 string.xml中加入 :  

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

如下:

b. 在build.gradle中加入

  1. defaultConfig {
  2. ndk {
  3. abiFilters 'armeabi-v7a', 'x86'
  4. }
  5. }

如下,定义了ndk的构架:

 

4.完成集成

至此,我们完成了Unity的安卓集成,编译 run,效果如下:

Unity嵌入了安卓,接下来可以做更多的操作了~~~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/118893?site
推荐阅读
相关标签
  

闽ICP备14008679号