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); } } }
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(); }