Ejemplo n.º 1
0
        /// <summary>
        /// Create the build.json file for Android
        /// </summary>
        /// <param name="filename"></param>
        public void ExportBuildJson(string filename)
        {
            BuildConfig config = new BuildConfig();
            ConfigData  data   = new ConfigData()
            {
                keystore      = _config.keyPath,
                storePassword = _config.passWord,
                alias         = _config.keyAlias,
                password      = _config.passWord,
                keystoreType  = "",
                packageType   = "apk", // or bundle
            };

            AndroidBuildConfig androidConfig = new AndroidBuildConfig()
            {
                debug   = data,
                release = data
            };

            config.android = androidConfig;

            string json = JsonConvert.SerializeObject(config, new JsonSerializerSettings()
            {
                Formatting = Newtonsoft.Json.Formatting.Indented
            });

            System.IO.File.WriteAllText(filename, json.ToString());
        }
Ejemplo n.º 2
0
    public static void Build(AndroidBuildConfig.Platform p, string outFile = null)
    {
        if(configs == null)
            throw new Exception("请先加载配置");
        //CheckConfigError();
        //PreProcessBuildFile(p);
        SetBuildParam(p);

        if(string.IsNullOrEmpty(outFile))
            CompileAPK(p, GetSavePath(p));
        else
            CompileAPK(p, outFile);
    }
        public void OverwriteTest()
        {
            AndroidBuildConfig buildConfig = AndroidBuildConfig.CreateInstance <AndroidBuildConfig>();

            buildConfig.ResetSetting(buildConfig);

            string productName     = buildConfig.productName;
            string testProductName = "product_" + Random.Range(1, 100).ToString();

            string overwriteJson = $"{{\"productName\": \"{testProductName}\"}}";

            JsonUtility.FromJsonOverwrite(overwriteJson, buildConfig);

            Assert.AreNotEqual(buildConfig.productName, productName);
            Assert.AreEqual(buildConfig.productName, testProductName);
        }
Ejemplo n.º 4
0
 public static string GetDefaultAPKName(AndroidBuildConfig.Platform p)
 {
     string apkName = "sgzs";
     string time = DateTime.Now.Year.ToString()
         + DateTime.Now.Month.ToString("00")
         + DateTime.Now.Day.ToString("00")
         + DateTime.Now.Hour.ToString("00")
         + DateTime.Now.Minute.ToString("00");
     string version = string.Format("v{0}", PlayerSettings.Android.bundleVersionCode);
     apkName = "sgzs_" + time + "_" + version + "_" + p.name;
     return apkName;
 }
Ejemplo n.º 5
0
 private static void PreProcessBuildFile(AndroidBuildConfig.Platform p)
 {
     AssetDatabase.Refresh();
     AssetDatabase.DeleteAsset("Assets/Plugins/Android");
     AssetDatabase.Refresh();
     try {
         CopyDirectory(configs.andriodTempFile, Application.dataPath + "/Plugins/Android");
         CopyDirectory(configs.sdkFolder + "/" + p.sdk, Directory.GetParent(Application.dataPath).FullName);
     } catch(Exception e) {
         MyDebug.Log("copy error -> " + e);
     }
     FileInfo android_support_v4 = new FileInfo(Application.dataPath + "/Plugins/Android/libs/android-support-v4.jar");
     FileInfo android_support_v13 = new FileInfo(Application.dataPath + "/Plugins/Android/libs/android-support-v13.jar");
     if(android_support_v4.Exists && android_support_v13.Exists) {
         AssetDatabase.DeleteAsset("Assets/Plugins/Android/libs/android-support-v4.jar");
     }
     AssetDatabase.Refresh();
 }
Ejemplo n.º 6
0
 private static void CompileAPK(AndroidBuildConfig.Platform p, string savePath)
 {
     if(string.IsNullOrEmpty(savePath))
         return;
     List<string> EditorScenes = new List<string>();
     foreach(EditorBuildSettingsScene scene in EditorBuildSettings.scenes) {
         if(!scene.enabled) continue;
         EditorScenes.Add(scene.path);
     }
     string res = BuildPipeline.BuildPlayer(
                     EditorScenes.ToArray(),
                     string.Format("{0}.apk", savePath),
                     BuildTarget.Android,
                     BuildOptions.None);
     if(res.Length > 0)       // 这里最后加入一下打包日志,得到哪些包成功哪些失败
         MyDebug.Log(string.Format("build {0} error -> {1}", p.name, res));
 }
Ejemplo n.º 7
0
    public static void SetBuildParam(AndroidBuildConfig.Platform p)
    {
        PlayerSettings.displayResolutionDialog = ResolutionDialogSetting.Enabled;
        string pName = PlayerSettings.bundleIdentifier;
        AssetDatabase.Refresh();
        if(!string.IsNullOrEmpty(p.splash))
            File.Copy(Directory.GetParent(Application.dataPath).FullName + "/" + p.splash, Directory.GetParent(Application.dataPath).FullName + "/" + configs.projectSplash, true);
        PlayerSettings.bundleIdentifier = GetPackageName();
        PlayerSettings.Android.keystoreName = configs.keysotoreFolder + "/" + p.keystoreName;
        PlayerSettings.Android.keystorePass = p.keystorePass;
        PlayerSettings.Android.keyaliasName = p.keyaliasName;
        PlayerSettings.Android.keyaliasPass = p.keyaliasPass;

        //string[] defines = new string[p.macros.Count];
        //for(int i = 0; i < p.macros.Count; i++)
        //    defines[i] = "-define:" + p.macros[i];
        //File.WriteAllLines(Application.dataPath + "/smcs.rsp", defines, Encoding.UTF8);

        AssetDatabase.Refresh();
    }
Ejemplo n.º 8
0
 public static AndroidBuildConfig LoadConfig()
 {
     TextAsset txt = Resources.Load("android_build") as TextAsset;
     if(txt == null) { MyDebug.Log("not found android_build file"); return null; }
     configs = null;
     try {
         configs = LitJson.JsonMapper.ToObject<AndroidBuildConfig>(txt.text);
     } catch(Exception e) {
         MyDebug.Log("android_build file error -> " + e);
     }
     return configs;
 }
Ejemplo n.º 9
0
 public static string GetSavePath(AndroidBuildConfig.Platform p)
 {
     string apkName = AndroidBuilder.GetDefaultAPKName(p);
     string targetDir = EditorUtility.SaveFilePanel( "请选择发布安卓包目录", Directory.GetCurrentDirectory(), GetDefaultAPKName(p), "" );
     targetDir = targetDir.Replace(".apk", "");
     return targetDir;
 }