public static string GetPlayerPathForAndroid(string sChannel, string sVersion, bool bIsAssetbundle) { //Android_uc_TLBB3D_0_580_0_0_148480_2015_03_06_1107.apk string sFolder = BuildAndroidConfig.PLAYER_BASE_DIRECTORY + GetCurDay() + "/"; if (!Directory.Exists(sFolder)) { Directory.CreateDirectory(sFolder); } //if (sChannel.StartsWith("Android_")) //{ // sChannel = sChannel.Substring("Android_".Length); //} string sVersionCode = BuildPlayerHelper.GetVersionCode(sVersion).ToString(); sVersion = sVersion.Replace(".", "_"); string sPath = sFolder + sChannel + "_" + "Cabal" + "_" + sVersion + "_" + sVersionCode + "_" + GetCurDay() + "_" + GetCurTime(); if (bIsAssetbundle) { return(sPath + ".apk"); } else { return(sPath + "_off.apk"); } }
public static void BuildAndroid(string sBuildChannels, string sVersion, bool bIsAssetbundle, bool bIsSDKServerList) { try { Debug.Log("BuildAndroidProcess.BuildAndroid start:" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")); if (string.IsNullOrEmpty(sBuildChannels) || string.IsNullOrEmpty(sVersion)) { return; } //Debug.Log("BuildAndroidProcess.BuildAndroid BuildChannels:" + sBuildChannels); string[] channelList = BuildPlayerHelper.ParseChannelListForAndroid(sBuildChannels); Debug.Log(string.Format("BuildAndroidProcess.BuildAndroid channelList number is:" + channelList.Length.ToString())); if (null == channelList || 0 == channelList.Length) { throw new Exception("BuildAndroidProcess.BuildAndroid channel list is null!"); } else { //for (int index = 0; index < channelList.Length;++index) //{ // Debug.Log(string.Format("BuildPlayerProcess.BuildPlayerByCommandline channelList[{0}]:{1}", index.ToString(), channelList[index])); //} AssetDatabase.Refresh(); SetupPlayerSettings(sVersion); foreach (string sChannel in channelList) { if (!BuildAndroidForChannel(sChannel, sVersion, bIsAssetbundle, bIsSDKServerList)) { throw new Exception("BuildAndroidProcess.BuildAndroid failed. channel is:" + sChannel); } } } Debug.Log("BuildAndroidProcess.BuildAndroid end:" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")); } catch (System.Exception ex) { Debug.LogError("BuildAndroidProcess.BuildAndroid exception is: " + ex.Message); } }
private static bool BuildAndroidForChannel(string sChannel, string sVersion, bool bIsAssetbundle, bool bIsSDKServerList) { try { Debug.Log(string.Format("BuildAndroidProcess.BuildAndroidForChannel Channel:{0}, Version:{1}, IsAssetbundle{2}", sChannel, sVersion, bIsAssetbundle.ToString())); Debug.Log("BuildAndroidProcess.BuildAndroidForChannel start:" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")); if (string.IsNullOrEmpty(sChannel)) { throw new Exception("BuildAndroidProcess.BuildAndroidForChannel channel is null"); } if (string.IsNullOrEmpty(sVersion)) { throw new Exception("BuildAndroidProcess.BuildAndroidForChannel Version is null"); } AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); if (!CopyChannelPlugin(sChannel, sVersion, bIsSDKServerList)) { throw new Exception("BuildAndroidProcess.BuildAndroidForChannel CopyChannelPlugin failed"); } AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); if (!SetupChannelPlugin(sChannel)) { throw new Exception("BuildAndroidProcess.BuildAndroidForChannel SetupChannelPlugin failed"); } string sPlayerPath = BuildPlayerHelper.GetPlayerPathForAndroid(sChannel, sVersion, bIsAssetbundle); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); BuildPipeline.BuildPlayer(BuildAndroidConfig.GetAllScenes(), sPlayerPath, BuildTarget.Android, BuildOptions.None); Debug.Log("BuildAndroidProcess.BuildAndroidForChannel end:" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")); } catch (System.Exception ex) { Debug.LogError("BuildAndroidProcess.BuildAndroidForChannel exception is:" + ex.Message); return(false); } return(true); }
private static bool WritePlayerConfigPropertiesFile(List <string> sLineList, string sVersion, bool bIsSDKServerList) { string sConfigPropertiesFile = GetPlayerConfigPropertiesFile(); if (File.Exists(sConfigPropertiesFile)) { FileStream fs = new FileStream(sConfigPropertiesFile, FileMode.Create); StreamWriter sw = new StreamWriter(fs); foreach (string sItem in sLineList) { if (sItem.StartsWith(CONFIG_PROPERTIES_RES_DOWNLOAD_URL)) { string sResURL = sItem + BuildPlayerHelper.GetResDownloadUrlVersion(sVersion); sw.WriteLine(sResURL); } else if (sItem.StartsWith(CONFIG_PROPERTIES_SERVERLIST_URL)) { if (bIsSDKServerList) { sw.WriteLine(sItem); } else { sw.WriteLine(LOCAL_CONFIG_SERVERLIST_URL); } } else { sw.WriteLine(sItem); } } sw.Close(); fs.Close(); sLineList.Clear(); return(true); } return(false); }
private static void SetupPlayerSettings(string sVersion) { try { Debug.Log("BuildAndroidProcess.SetupPlayerSettings start:" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")); //TODO BY MAWENBIN 1 //E:\AndroidPlugins\Android_360\assets\config.properties //设置AppName GroupName ChannelName NoticeConfigUrl ServerListUrl,并生产版本文件 //BuildGameConfig.Load(Path.Combine(Application.streamingAssetsPath, BuildGameConfig.c_GameConfigFile)); //BuildGameConfig.Save(buildchannel); //context["androidBase"] = androidBase.EvaluateIn(context); //BundleEditor.ExportBundleData //context["resourceVersion"] = resourceVersion.EvaluateIn(context); //wangdi if (!BuildPlayerHelper.UpdateResourceVersionFile(sVersion)) { throw new Exception("BuildAndroidProcess.SetupPlayerSettings UpdateResourceVersionFile failed!"); } PlayerSettings.companyName = BuildAndroidConfig.DEFAULT_COMPANY_NAME; PlayerSettings.bundleVersion = sVersion; PlayerSettings.Android.bundleVersionCode = BuildPlayerHelper.GetVersionCode(sVersion); PlayerSettings.defaultInterfaceOrientation = UIOrientation.AutoRotation; PlayerSettings.statusBarHidden = true; PlayerSettings.use32BitDisplayBuffer = true; PlayerSettings.Android.use24BitDepthBuffer = true; PlayerSettings.Android.showActivityIndicatorOnLoading = AndroidShowActivityIndicatorOnLoading.DontShow; PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel10; PlayerSettings.Android.targetDevice = AndroidTargetDevice.ARMv7; //TODO BY MAWENBIN 2 //#if UNITY_3_5 // PlayerSettings.Android.targetGraphics = targetGraphics.EvaluateIn (context); //#endif //#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 // PlayerSettings.targetGlesGraphics = targetGlesGraphics.EvaluateIn(context); //#endif PlayerSettings.Android.preferredInstallLocation = AndroidPreferredInstallLocation.Auto; PlayerSettings.Android.forceInternetPermission = true; PlayerSettings.Android.forceSDCardPermission = true; PlayerSettings.apiCompatibilityLevel = ApiCompatibilityLevel.NET_2_0_Subset; PlayerSettings.stripUnusedMeshComponents = true; PlayerSettings.strippingLevel = StrippingLevel.UseMicroMSCorlib; // string res = lowQuality.EvaluateIn(context).ToString(); // if (res.Equals("True")) { // BuildAssetProcess.BuildAndroid();//资源高低配处理 // } //already added in BuildAssetProcess::DoAndroidLowTextrue //context["lowQuality"] = lowQuality.EvaluateIn(context); //E:\Main\Project\Client\Assets\BuildTools\Android\uTomate\Editor\Actions\UTMyTextureAction.cs //MLDJ/UIRes/Atlas/Common/Common.prefab //#if UNITY_3_5 // PlayerSettings.debugUnloadMode = debugUnloadMode.EvaluateIn(context); //#endif PlayerSettings.allowedAutorotateToLandscapeLeft = true; PlayerSettings.allowedAutorotateToLandscapeRight = true; Debug.Log("BuildAndroidProcess.SetupPlayerSettings end:" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")); } catch (System.Exception ex) { Debug.LogError("BuildAndroidProcess.SetupPlayerSettings exception is: " + ex.Message); } }