Unity3D和aar问题

时间:2017-06-28 13:11:19

标签: android unity3d

我必须为Unity3D构建一个aar模块,但是有太多问题需要这样做。

我的工作环境

  

Unity3D:5.6.f1
  Android Studio:2.3.3
  构建工具:25.0.2
  SDK工具:24.4

我已经构建了一个aar文件并将其解压缩以删除classes.jar中的libs,之后我将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文件夹

内没有任何内容

2 个答案:

答案 0 :(得分:3)

从Android Studio中找到 Build.gradle 文件,查找捆绑 classes.jar 文件的任何命令。

根据Android Studio项目的生成方式,它应如下所示:

compile files('libs/jars/classes.jar')

compile fileTree(dir: 'libs', include: ['*.jar'])

只需将“compile”替换为“provided”关键字

即可
provided files('libs/jars/classes.jar')

或者

provided fileTree(dir: 'libs', include: ['*.jar'])

这将使Android Studio从最终的arr插件构建中排除.jar插件。您现在可以再次构建插件并将其传输到Assets/Plugins/Android文件夹中。我建议你这样做一个新项目,以确保在任何地方都没有重复。

右键单击 classes.jar 插件,然后将其设置为提供 依赖关系标签。

注意:

您无需手动将 AndroidManifest.xml 文件添加到Unity项目中,因为如果这是 arr 插件,Unity会自动执行此操作。如果这是 jar 插件,您只需要这样做。虽然,如果您仍遇到权限问题,请手动执行此操作。

答案 1 :(得分:0)

您只需要在Assets / Plugins / Android中解压缩classes.jar文件,并调用 AndroidJavaClass AndroidJavaObject 对象所需的任何函数。

如果要访问android-module中的类,则只需要.jar文件。我已经多次使用过这种技术。

PS:Unity负责自动将清单与Google的清单合并工具

合并