这里介绍一下怎么同个gradle命令打U3d Apk包。
U3d 有2种方式打包。第一种:直接用过U3d 出APK包,对于前期demo开发测试可以,在后期的使用中,一般要有Android自己的工程项目,因为里面要添加第三方的SDK相关的东西。第二种方式就是导出一个Android Studio工程。怎么通过Unity导出Android工程的界面操作版本可以查看:
https://blog.csdn.net/qq_18229381/article/details/80940879
我这里直接添加编辑器菜单的命令方式导出工程:
/*
* Created By Zhaotao On 2019-4-16
* Desc:打包编辑器脚本
*/
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEngine;
public class BuildAPK : Editor
{
[MenuItem("工具/AndroidBuild/导出开发者整包工程")]
public static void BuildDebugApkWithAssetBundle()
{
BuildTarget buildTarget = BuildTarget.Android;
// 切换到 Android 平台
EditorUserBuildSettings.SwitchActiveBuildTarget(buildTarget);
//这里不设置,会直接生成apk
EditorUserBuildSettings.exportAsGoogleAndroidProject = true;
// keystore 路径, G:\keystore\one.keystore
PlayerSettings.Android.keystoreName = Application.dataPath+"/../"+"ysnz_debug.keystore";
// one.keystore 密码
PlayerSettings.Android.keystorePass = "digisky2019";
// one.keystore 别名
PlayerSettings.Android.keyaliasName = "ysnz_debug";
// 别名密码
PlayerSettings.Android.keyaliasPass = "digisky2019";
List<string> levels = new List<string>();
foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
{
if (!scene.enabled) continue;
// 获取有效的 Scene
levels.Add(scene.path);
}
//生成AssetBundle
AssetBundleController.ReadConfig(buildTarget);
AssetBundleController.CreateAssetBundle(buildTarget);
AssetBundleController.CreateMd5(buildTarget);
// 打包出 APK 名
string apkProjectName = string.Format("Android_Project/{0}", "ysnz_all_debug");
// 执行打包
BuildReport res = BuildPipeline.BuildPlayer(levels.ToArray(), apkProjectName, buildTarget, BuildOptions.AllowDebugging);
AssetDatabase.Refresh();
}
}
.keystore的生成方法:https://mp.csdn.net/postedit/89327771
然后添加一个批处理脚本来执行这个函数:
C:\"Program Files"\Unity\Editor\Unity.exe -projectPath . -quit -batchmode -executeMethod BuildAPK.BuildDebugApkWithAssetBundle -logFile build.log
这个脚本在项目目录,也就是Assets的父目录,所以-projectPath 给的路径就是"."。
在批处理中注意空格路径用双引号括起来,否则有些地方会报错。
这样就导出了Android工程。
然后进入到Android工程,有build.gradle的目录,打开cmd执行:
gradle build
如果报错,说不能识别com.android.application(大概这个意思),就是gradle的版本不对:
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
}
开始我的是3.2.0,我试过4.10.1当前我的配置到环境变量的版本,或者改成直接使用最新,都会有问题。最会怎么找到这个3.3.2,是通过Android Studio创建一个空工程,然后是这个值,且能够gradle命令打包成功。所以具体为什么是这个,目前还不清楚。如果打包成功,会在android 项目目录下面生成一个build 的文件夹