忙了好一阵接入安卓sdk,也算积累了一些经验,在这里总结一下,如有不足,欢迎大大指出;
项目接了大大小小十多个sdk,我的想法是在android studio打好aar包,和资源文件还有AndroidManifest.xml保存成一个压缩包,用的时候解压缩到项目的Plugins/Android目录下,设置好需要的参数,一键出包或者出多个渠道包
接下来看代码把:
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
using System;
using System.Collections.Generic;
using UnityEditor.Callbacks;
public class BuildWindow : EditorWindow
{
enum Build_Asset
{
UseSign,
OutPath,
SignPath,
keyaliasName,
}
//以下为各个SDK的压缩包名,改动可能导致打包失败,勿动!!!
private const string XiaoMi = "AndroidXiaoMi.rar";
private const string MeiZu = "AndroidMeiZu.rar";
private const string OPPO = "AndroidOppo.rar";
private const string HuaWei = "AndroidHuaWei.rar";
private const string JinLi = "AndroidJinLi.rar";
private const string VIVO = "AndroidVIVO.rar";
private const string JinLiYouXi = "AndroidJinLiYouXi.rar";
private const string QIHOO360 = "AndroidQIHOO360.rar";
private const string QuickSDK = "AndroidQuickSDK.rar";
private const string M4399 = "AndroidM4399.rar";
private const string PapaWuFan = "AndroidPapa.rar";
private const string Samsung = "AndroidSamsung.rar";
private const string Lehaihai = "AndroidLehaihai.rar";
private const string Nubiya = "AndroidNubiya.rar";
private const string Yingyongbao = "AndroidYingyongbao.rar";
//以下为各个SDK的包名,改动可能导致打包失败,勿动!!!
private const string XiaoMi_Identifier = "com.magicbirds.master.sf.mi";
private const string MeiZu_Identifier = "com.magicbirds.fighter.mz";
private const string OPPO_Identifier = "com.magicbirds.fighters.nearme.gamecenter";
private const string Huawei_Identifier = "com.magicbirds.master.huawei";
private const string JinLi_Identifier = "com.magicbirds.fighters.jinli";
private const string JinLiYouXi_Identifier = "com.magicbirds.fighters.jinli";
private const string VIVO_Identifier = "com.magicbirds.fighter.vivo";
private const string QIHOO360_Identifier = "com.magicbirds.master.sll";
private const string QuickSDK_Identifier = "com.qk.test";
private const string M4399_Identifier = "com.magicbirds.master.m4399";
private const string PapaWuFan_Identifier = "com.magicbirds.master.papa";
private const string Samsung_Identifier = "com.magicbirds.master.samsung";
private const string Lehaihai_Identifier = "com.magicbirds.master.lhh";
private const string Nubiya_Identifier = "com.magicbirds.master.nubia";
private const string Yingyongbao_Identifier = "com.magicbirds.fighters.nearme.gamecenter";
private void AddZipNameAndIdentifier()
{
ZipNameDict.Add(SDK_TYPE.XiaoMi, XiaoMi);
IdentifierDict.Add(SDK_TYPE.XiaoMi, XiaoMi_Identifier);
ZipNameDict.Add(SDK_TYPE.MeiZu, MeiZu);
IdentifierDict.Add(SDK_TYPE.MeiZu, MeiZu_Identifier);
ZipNameDict.Add(SDK_TYPE.Oppo, OPPO);
IdentifierDict.Add(SDK_TYPE.Oppo, OPPO_Identifier);
ZipNameDict.Add(SDK_TYPE.Huawei, HuaWei);
IdentifierDict.Add(SDK_TYPE.Huawei, Huawei_Identifier);
ZipNameDict.Add(SDK_TYPE.JinLiAibei, JinLi);
IdentifierDict.Add(SDK_TYPE.JinLiAibei, JinLi_Identifier);
ZipNameDict.Add(SDK_TYPE.VIVO, VIVO);
IdentifierDict.Add(SDK_TYPE.VIVO, VIVO_Identifier);
ZipNameDict.Add(SDK_TYPE.JinLiYouXi, JinLiYouXi);
IdentifierDict.Add(SDK_TYPE.JinLiYouXi, JinLiYouXi_Identifier);
ZipNameDict.Add(SDK_TYPE.QIHO360, QIHOO360);
IdentifierDict.Add(SDK_TYPE.QIHO360, QIHOO360_Identifier);
ZipNameDict.Add(SDK_TYPE.QuickSDK, QuickSDK);
IdentifierDict.Add(SDK_TYPE.QuickSDK, QuickSDK_Identifier);
ZipNameDict.Add(SDK_TYPE.M4399, M4399);
IdentifierDict.Add(SDK_TYPE.M4399, M4399_Identifier);
ZipNameDict.Add(SDK_TYPE.PapaWuFan, PapaWuFan);
IdentifierDict.Add(SDK_TYPE.PapaWuFan, PapaWuFan_Identifier);
ZipNameDict.Add(SDK_TYPE.SamsungAibei, Samsung);
IdentifierDict.Add(SDK_TYPE.SamsungAibei, Samsung_Identifier);
ZipNameDict.Add(SDK_TYPE.Lehaihai, Lehaihai);
IdentifierDict.Add(SDK_TYPE.Lehaihai, Lehaihai_Identifier);
ZipNameDict.Add(SDK_TYPE.Nubiya, Nubiya);
IdentifierDict.Add(SDK_TYPE.Nubiya, Nubiya_Identifier);
ZipNameDict.Add(SDK_TYPE.Yingyongbao, Yingyongbao);
IdentifierDict.Add(SDK_TYPE.Yingyongbao, Yingyongbao_Identifier);
}
public static BuildWindow instance = null;
public bool IsUnzipFile = false;
private SDK_TYPE SDK_State = SDK_TYPE.None;
private Dictionary<SDK_TYPE, string> ZipNameDict = new Dictionary<SDK_TYPE, string>();
private Dictionary<SDK_TYPE, string> IdentifierDict = new Dictionary<SDK_TYPE, string>();
//显示的行列
private int row = 0;