我必须为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
文件夹
答案 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的清单合并工具
合并