【发布时间】:2017-06-28 13:11:19
【问题描述】:
我必须为 Unity3D 构建一个 aar 模块,但是这样做的问题太多了。
我的工作环境
Unity3D:5.6.f1
Android Studio:2.3.3
构建工具:25.0.2
SDK工具:24.4
我已经建立了一个aar文件并解压它以删除libs中的classes.jar,然后我将aar文件和AndroidManifest.xml复制到asset\Plugins\Android。 android项目和unity项目的包名是一样的。
之后构建 APK 文件,导致以下异常:
IOException: Failed to Move File / Directory from 'Temp/StagingArea/android-libraries/app-debug/classes.jar' to 'Temp/StagingArea/android-libraries/app-debug/libs/classes.jar'.
UnityEditor.Android.PostProcessor.Tasks.ProcessAAR.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry)
UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (BuildPostProcessArgs args)
UnityEditor.PostprocessBuildPlayer.Postprocess (BuildTargetGroup targetGroup, BuildTarget target, System.String installPath, System.String companyName, System.String productName, Int32 width, Int32 height, System.String downloadWebplayerUrl, System.String manualDownloadWebplayerUrl, BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.BuildReporting.BuildReport report) (at /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:186)
UnityEditor.HostView:OnGUI()
我一直在寻找答案 3 天,我已经尝试了我在网上找到的所有内容,请帮助!
我很确定 aar 文件 libs 文件夹中没有任何内容
【问题讨论】:
-
两个问题,1.为什么要从aar文件中删除libs中的classes.jar? 2.为什么Android项目和unity项目的包名是一样的?在您回复之前,请注意,如果插件是 .arr,您不需要提取
AndroidManifest文件。仅当它是 .jar 插件时才需要。所以不要修改 .arr 文件。只需将其放入您的Assets/Plugins/Android文件夹即可。 -
1.几乎所有关于这个问题的文章都说Unity会自动将它的classes.jar添加到aar文件的libs文件夹中,所以如果你不删除它,它会导致一些问题。 2.我注意到aar中有一个AndroidManifest文件,但是很多文章说我必须复制它。我试过你的方法,建立一个aar文件并复制到Assets/Plugins/Android,问题仍然存在。
-
2.如果它是一个arr插件,你不必这样做。注意到您在插件中使用了 Unity 的 classes.jar。您有什么理由将它包含在您的 Android 项目中吗?如果您不使用
UnityPlayer.UnitySendMessage函数,则不需要它。你也可以创建一个新项目,然后按照我提到的方式再试一次。 -
另外,看看我的回答