U3d 命令方式打APK

这里介绍一下怎么同个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 的文件夹

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值