Пример #1
0
        private IEnumerator doDownLoad(string url, string md5)
        {
            Logger.Log("startDownLoad", url, md5);
            downLoader = new WWW(url);

            yield return(downLoader);

            if (string.IsNullOrEmpty(downLoader.error) == false)
            {
                Logger.LogError("downLoadError", downLoader.url, downLoader.error);
                downLoader = null;
            }
            else
            {
                var bytes = downLoader.bytes;

                var downLoadMD5 = MD5Utils.BytesToMD5(bytes);

                Logger.Log("downLoader Over!", bytes.Length, downLoadMD5);

                downLoader = null;

                if (md5 == downLoadMD5)
                {
                    var targetAPK = Application.persistentDataPath + "/new.apk";

                    File.WriteAllBytes(targetAPK, bytes);

                    Logger.Log("installAPK", targetAPK);
                    CallAndroidJava("QihooInstallAPK", targetAPK);
                }
                else
                {
                    Logger.LogError("md5不一致!", md5, downLoadMD5);
                }
            }
        }
Пример #2
0
    static private void doBuildAPK(bool isDebug)
    {
        var projectPath = Directory.GetCurrentDirectory();
        var buildVer    = DateTime.Now.ToString("yyyyMMddHHmm");
        var APKNameEd   = "_" + buildVer;

        if (isDebug)
        {
            APKNameEd += "_debug";
        }
        var APKTargetPath = APKDir + "ultraman" + APKNameEd + ".apk";

        var bundleVersion = PlayerSettings.bundleVersion;

        Logger.Log(bundleVersion);
        if (bundleVersion.IndexOf("_") > 0)
        {
            bundleVersion = bundleVersion.Substring(0, bundleVersion.IndexOf("_"));
        }
        Logger.Log(bundleVersion);
        Logger.Log(
            "buildAPK",
            APKTargetPath,
            projectPath + "/key/android.keystore"
            );


        if (!Directory.Exists(APKDir))
        {
            Directory.CreateDirectory(APKDir);
        }
        if (!Directory.Exists(versionDir))
        {
            Directory.CreateDirectory(versionDir);
        }

        File.WriteAllText(versionDir + "version.txt",
                          bundleVersion + " (build:" + buildVer + ")");

        var scenes     = EditorBuildSettings.scenes;
        var sceneNames = new string[scenes.Length];

        for (int i = 0; i < scenes.Length; i++)
        {
            sceneNames[i] = scenes[i].path;
        }

        if (isDebug)
        {
            PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "XiaoKaDebug");
        }
        else
        {
            PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "ProductionEnvironment");
        }

        var keystoreName = PlayerSettings.Android.keystoreName;

        PlayerSettings.Android.keystoreName = projectPath + "/key/android.keystore";
        PlayerSettings.Android.keyaliasPass = "******";
        PlayerSettings.Android.keystorePass = "******";


        PlayerSettings.bundleVersion = bundleVersion + APKNameEd;

        AssetDatabase.Refresh();

        var result = BuildPipeline.BuildPlayer(sceneNames, APKTargetPath, BuildTarget.Android, BuildOptions.None);

        PlayerSettings.Android.keystoreName = keystoreName;
        PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, "");
        PlayerSettings.bundleVersion = bundleVersion;

        if (!string.IsNullOrEmpty(result))
        {
            throw new Exception("buildAPK failure: " + result);
        }

        var tamplate_updateInfo = File.ReadAllText(updateInfoTamplatePath);
        var APKBytes            = File.ReadAllBytes(APKTargetPath);

        tamplate_updateInfo = tamplate_updateInfo.Replace("$(viewVersion)", bundleVersion);
        tamplate_updateInfo = tamplate_updateInfo.Replace("$(buildVersion)", buildVer);
        tamplate_updateInfo = tamplate_updateInfo.Replace("$(md5)", MD5Utils.BytesToMD5(APKBytes));
        tamplate_updateInfo = tamplate_updateInfo.Replace("$(bytesTotal)", APKBytes.Length.ToString());
        tamplate_updateInfo = tamplate_updateInfo.Replace("$(changeList)", File.ReadAllText(changeListPath));

        File.WriteAllText(updateInfoPath, tamplate_updateInfo, Encoding.UTF8);

        Logger.Log("buildAPK complete!", APKTargetPath);

        doAfterBuild();
    }