将 Unity3D 项目导出并运行到 Android Studio
Posted
技术标签:
【中文标题】将 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
【讨论】:
以上是关于将 Unity3D 项目导出并运行到 Android Studio的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Unity3D 应用程序 [导出到 Xcode 项目] 会失败,因为 ip_unity_plugin.bundle 有“包根目录中存在未密封的内容”?