unity项目导入到android studio

Posted 千丘星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity项目导入到android studio相关的知识,希望对你有一定的参考价值。

这是本人近期将unity项目模型导入到android的学习经验的一个总结。

1.unity导出Android工程

将unity项目导入到Android,首先要在unity内导出一个Android工程文件

一般情况下就是勾选Export Project,然后导出就行。如果还有其他要求或者配置可以在左下角Player Settings进行配置等。unity这方面我没有特别深入的学习,大家可以搜索查阅一下资料。

(我这边使用的是之前unity官网的例子的unity项目,这个官方例子在B站上有博主的视频教学。资源我放在下面:

将Unity用作Android应用中的库
github地址:https://github.com/Unity-Technologies/uaal-example
论坛地址:https://forum.unity.com/threads/integration-unity-as-a-library-in-native-android-app-version-2.751712/ ​)

导出的unity项目文件大致是这样的: 

2.Android创建、unity导入

(1)首先新建一个Android项目

包名Package name跟unity的包名设置成一致,unity包名一般是com.unity3d.player。包名不一致的话,我试过也可以实现,但是在调用的时候要指明包,容易混淆,可能还有其他的一些问题,个人也不是很清楚。推荐保持一致,避免麻烦。Android项目名Name等随意。

(2)将unity项目以Module的方式导入Android。

(3)选择unityLibrary导入。点击Finish。

(4)导入之后,为Android添加unityLibrary的引用。

左上角File——>Project Structure...

选择Dependencies  ——>  app ,然后点击右边这个加号 + ,选择第三个Moudule Dependency

勾选刚刚导入的unity,点击OK。再点击上图的OK。

(5)配置 Android 以及 unity 的 build.gradle 文件。

将SDK配置成当前Android版本可以运行。Android 以及unity的SDK确保要一样,不然会报错,比如这个minsdk。Build无误就算是导入完成了!

3.Android  启动运行 unity

(1)在unity的AndroidMainfest.xml文件

把<intent-filter>-->删掉或者注释掉,留着的话,当我们把程序运行到手机或者模拟机上时会有两个图标。

其次是在<activity>里加入这行代码,实现多线程,避免在从unity返回Android时也将Android界面也结束了。

android:process=":raadidcard"

在app的AndroidMainfest.xml文件里,在图中位置加入这两行代码:

xmlns:tools="http://schemas.android.com/tools"
tools:replace="android:icon,android:theme,android:allowBackup"

 

(2)之后在app的build.gradle里加入这行代码。

 ndk 
            abiFilters 'armeabi-v7a'
        

其次在app的main->res->values->strings.xml里加入这行代码。

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

进行这两步操作的原因是,我在运行到手机时,他显示硬件不支持或者闪退。加入上面两个代码后就可以正常启动unity。

(3)点击按钮启动unity

        在主工程的activity_main.xml 文件里添加一个按钮。MainActivity.java 里加入启动事件,如果在这里layout标红的话,就把鼠标移到layout下面,建立一个layout就行,我分析是主工程的问题,这个影响不大。

4.启动运行

结语:unity导入Android的方法有多种,这只是其中之一。希望这篇文章对你有所帮助。

将 Unity3D 项目导出并运行到 Android Studio

【中文标题】将 Unity3D 项目导出并运行到 Android Studio【英文标题】:Exporting and running Unity3D project to Android Studio 【发布时间】:2016-12-23 04:14:07 【问题描述】:

我想在 Unity 应用程序在 Android 手机上运行时从它获取日志。为此,我必须从 Unity3D 导出​​ Android 项目并使用 Android Studio 运行它。我正在执行以下步骤:

    通过从播放器设置中选择 Google Android Project 选项从 Unity3D 导出​​项目。 打开 Android Studio 并从位置驱动器导入自动生成的项目。 选择构建 -> 制作项目。 选择运行 -> 运行“ModuleName”。

我在 Gradle 控制台中遇到以下错误:

FAILURE:构建失败并出现异常。

出了什么问题:任务 ':'ModuleName':transformClassesWithDexForDebug' 执行失败。 java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : 不支持的 major.minor 版本 52.0 在 java.lang.ClassLoader.defineClass1(本机方法)在 java.lang.ClassLoader.defineClass(ClassLoader.java:800) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:71) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) 在 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) 线程“main”中的异常

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' 完成 非零退出值 1

尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。

构建失败

总时间:0.788 秒

java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : 不支持的 major.minor 版本 52.0 在 java.lang.ClassLoader.defineClass1(本机方法)在 java.lang.ClassLoader.defineClass(ClassLoader.java:800) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:71) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) 在 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) 线程“main”中的异常

我很久以前就一直在使用 Eclipse,但以前从未遇到过这种情况。谁能指导我如何在 Android Studio 中成功运行 Unity-Android 项目?

【问题讨论】:

【参考方案1】:

将 Unity3D 项目导出并运行到 Android Studio 并不难。确保您拥有最新版本的 Unity(5.4)Android Studio(2.1.3)。此步骤是使用上述版本进行的。

导出到 Android Studio

1.创建一个根文件夹来存放导出的文件夹和文件。在这种情况下,我们称之为AndroidTestProject,完整的目录将是C:/AndroidTestProject

2.导出到C:/AndroidTestProject

A.文件->构建设置...

B。选择左侧的Android,然后勾选Google Android Project复选框。

图片说明

C。点击导出按钮。

D。选择C:/AndroidTestProject,然后点击选择文件夹按钮。

图片说明

Unity 将构建您的项目。

生成项目后,将在C:/AndroidTestProject 目录中创建一个新文件夹。该文件夹将以 产品名称播放器设置 中的任何名称命名。这是我在播放器设置中的产品名称:

图片说明

所以在我的例子中,新的文件夹名称将被称为 test 并将位于 C:/AndroidTestProject/test

导入 Android Studio

1。在C:/AndroidTestProject/ 目录中创建一个名为AndroidStudio 的新文件夹。该文件夹的完整路径应为C:/AndroidTestProject/AndroidStudio

A。打开 Android Studio。打开 Android Studio 后,点击导入项目(Eclipse ADT、Gradle 等)

如果未显示导入项目(Eclipse ADT、Gradle等),请转到文件->关闭项目关闭当前项目强>。

图片说明

B。转到导出项目 C:/AndroidTestProject/test 的完整目录,然后选择 test 文件夹,该文件夹是您的 Product Name项目,然后单击确定

图片说明

C。会弹出一个新窗口。将 Import Destination Directory 设置为在步骤 1 中创建的 C:/AndroidTestProject/AndroidStudio

图片说明

D。单击下一步按钮。 勾选/选中以下复选框:

尽可能用依赖项替换 jars尽可能用依赖项替换库源创建 Gradle 样式 (CamelCase) 模块名称

然后点击完成按钮。

图片说明

2。等待 Android Studio 加载您的项目。

您将收到如下所示的错误:

错误:支持的最低 Gradle 版本为 2.14.1。当前版本是 2.10。如果使用 gradle 包装器,请尝试在 C:\AndroidTestProject\AndroidStudio\gradle\wrapper\gradle-wrapper.properties 中编辑 distributionUrl 到 gradle-2.14.1-all.zip 修复 Gradle 包装器和重新导入项目Gradle 设置

A。只需点击Fix Gradle wrapper and re-import project Gradle settings消息。如果您没有看到此消息,请确保您位于 消息 标签中。查看下图了解更多信息。

图片说明

B。等待 Android Studio 完成 Gradle 问题的修复。

完成后,转到Build->Make Project

项目构建完成后,转到Run->Run 'app'

C。会弹出一个新窗口。您可以选择运行应用程序的设备、创建模拟器或选择现有的模拟器来运行应用程序。在本例中,我们将使用真实设备进行测试。

连接的设备下,选择您的设备,然后点击确定按钮。

图片说明

额外

A。如果您希望能够调试您的应用程序,您必须从 Unity 启用它。返回EXPORTING TO Android Studio步骤2B并启用Development Build。同样选择Script Debugging然后点击导出按钮。

B。如果您想查看 Debug.Log 消息,请转到 Android Studio 中的 Android Monitor 选项卡。

下图中圈出的项目是在 Android Studio 中调试时需要了解的重要内容。

图片说明

这并不难。如果您执行一次,您将不再需要此说明。

【讨论】:

谢谢!我部分跳过了复选框:D 我知道你遗漏了一些东西。只是不知道是哪一部分,所以我发布了所有部分。祝 Android Studio 好运。 如果步骤 C 没有出现怎么办? (导入目标目录)它只是提示我是想使用 Gradle 包装器还是手动配置它。我选择了“Gradle wrapper”,但它没有让我改变选择目标文件夹,所以我猜它只是使用 Unity 导出的项目文件夹作为 Android Studio 项目文件夹? @bigp 这里有多个 C。哪个类别的C?另外请记住,这篇文章很旧,我计划更新它以使用 Gradle。 啊,我重新阅读后才意识到有几个'C'。我指出它后面是C.A new Window will pop up. Set the Import Destination Directory to be【参考方案2】:

“我想在 Unity 应用程序在 Android 手机上运行时从它获取日志”。

您不需要导出到android项目,只需在构建设置中启用“开发构建”,然后将手机连接到计算机并在手机上启用“开发模式”和“脚本调试”即可。

然后简单地移动到你的 android sdk 的安装路径,cd 到 platform-tools,从命令提示符或终端运行这些命令

adb logcat 

如果您只想查看统一日志运行

adb logcat -s Unity

【讨论】:

以上是关于unity项目导入到android studio的主要内容,如果未能解决你的问题,请参考以下文章

unity导出的Android工程导入eclipse时报错

unity3d项目导入到eclipse

Android与Unity的交互

Android与Unity的交互

Android与Unity的交互

Unity与Android交互