Unity基于Android平台一键打包功能
public class AutoBuildingApk
{
[MenuItem("Tools/AndroidDebug")]
public static void AutoBuildingAndroidDebug()
{
Building(true);
}
[MenuItem("Tools/AndroidRelease")]
public static void AutoBuildingAndroidRelease()
{
Building(false);
}
static void Building(bool isDevelopment) {
//切换平台
BuildTarget mBuildTarget = EditorUserBuildSettings.activeBuildTarget;
if (mBuildTarget != BuildTarget.Android)
{
EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android, BuildTarget.Android);
}
//设置参数
PlayerSettings.companyName = "xm";
PlayerSettings.Android.useCustomKeystore = false;//不使用正式签名
PlayerSettings.productName = "appName";
PlayerSettings.applicationIdentifier = "www.xm.com";//包名
PlayerSettings.bundleVersion = "1.0.1";//版本号
PlayerSettings.Android.bundleVersionCode =100001;
//秘钥相关
PlayerSettings.Android.keystoreName = ""; // 路径
PlayerSettings.Android.keystorePass = ""; // 密钥密码
PlayerSettings.Android.keyaliasName = ""; // 密钥别名
PlayerSettings.Android.keyaliasPass = "";
//设置宏定义
PlayerSettings.SetScriptingDefineSymbols(NamedBuildTarget.Android, "");
string outputPath = Application.dataPath + "/../Output/";
BuildOptions buildOption = BuildOptions.None;
string apk;
if (isDevelopment)
{
buildOption |= BuildOptions.Development;
apk = outputPath + "/" + PlayerSettings.productName + "_debug_";
}
else
{
buildOption &= ~BuildOptions.Development;
apk = outputPath + "/" + PlayerSettings.productName + "_release_";
}
apk += DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".apk";
try
{
BuildReport report = BuildPipeline.BuildPlayer(EditorBuildSettings.scenes, apk, BuildTarget.Android, buildOption);
switch (report.summary.result)
{
case BuildResult.Cancelled:
Debug.Log("取消打包->Android");
break;
case BuildResult.Failed:
string msg = "";
foreach (var file in report.files)
{
msg += file.path + "\n";
}
foreach (var step in report.steps)
{
foreach (var stepmsg in step.messages)
{
msg += "\n" + stepmsg.content;
}
msg += "\n";
}
Debug.LogError("打包失败->Android:【" + msg + "】");
break;
case BuildResult.Unknown:
Debug.LogError("打包失败->Android:未知错误:");
break;
case BuildResult.Succeeded:
Debug.Log("------------- 结束 BuildAPK -------------");
System.Diagnostics.Process.Start(outputPath);
break;
}
}
catch (Exception e)
{
Debug.LogError("打包失败->Android:" + e.Message);
}
}
}