正常的手动操作流程是这样的:
Export结束以后打开Android Studio,在项目中接SDK,和UnityPlayerActivity。
然后可以修改Build Variant,设置debug还是release。
每次重新导出都会覆盖掉之前写过的build.gradle文件和AndroidManifest.xml,还需要手动去替换。
一套步骤下来,繁琐,也浪费时间,因此我做了一套自动化流程。
思路拆分如下:
一、UNITY项目生成AS项目这一步简化成代码操作。
using UnityEngine;
using UnityEditor;
using System.IO;
/// <summary>
/// 安卓打包
/// </summary>
public class CommandBuilder
{
private static string[] ms_scenes =
{
"Assets/Scenes/UGUIScene.unity"
};
public static void BuildAS()
{
PlayerSettings.productName = "wdwt";
EditorUserBuildSettings.exportAsGoogleAndroidProject = true;
// 设置需要打包的场景
string launchScene = "Assets/Scenes/UGUIScene.unity";
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
buildPlayerOptions.locationPathName = "../AndroidProject";
buildPlayerOptions.options = BuildOptions.None;
buildPlayerOptions.options |= BuildOptions.AcceptExternalModificationsToPlayer;
buildPlayerOptions.scenes = new[] { launchScene };
buildPlayerOptions.target = BuildTarget.Android;
// 调用开始打包
BuildPipeline.BuildPlayer(buildPlayerOptions);
}
}
二、在项目Assets同级目录写一个批处理文件,UnityToApk.bat。
批处理分几小步:
1.删除之前输出的文件夹assets。
2.清空出包文件夹。
3.设置Unity.exe位置。
4.设置项目路径参数。
5.使用unityAPI调用上面的脚本类中的方法CommandBuilder.BuildAS。
6.将需要手动替换掉被覆盖的文件放在一个文件夹中,每次export结束后都重新替换一次准确的。
7.(关键)调用gradlew出包~~真香。
8.打开出包生成目录。
::删除之前输出的文件夹
rmdir /q /s ..\AndroidProject\wdwt\src\main\assets
::清空出包文件夹
rmdir /q /s ..\AndroidProject\wdwt\build\outputs\apk\release
:: set your own Unity path
set unity="D:\Program Files\Unity\Editor\Unity.exe"
:: -debug or -release
set debugParam=-release
:: set your project path
set projectPath=%~dp0
echo "Start Build Unity to Apk add SDK"
%unity% -batchmode -projectPath %projectPath% -executeMethod CommandBuilder.BuildAS %debugParam% -quit -logFile ./BuildApk.log
::复制SDK组件
xcopy /e /y "..\wdwt\*" "..\AndroidProject\wdwt"
::运行gradlew
cd /d D:\_MySpace\client\Trunk\AndroidProject\wdwt
call BuildGradlew.bat
start "" "D:\_MySpace\client\Trunk\AndroidProject\wdwt\build\outputs\apk\release\"
pause
第7点的BuildGradlew.bat简单,就是两句话:
./gradlew clean
./gradlew assembleRelease
也可以生成debug包,命令是./gradlew assembleDebug
自此自动化流程结束,可以双击一下UnityToApk.bat,然后去喝杯咖啡,等待10分钟左右就可以了,不过要记住先关掉Unity哦。
整个过程中比较苦恼的就是bat调用bat如果不在同一个文件夹中,就比较麻烦,一定要cd进bat对应的文件夹中。