public static TextureCompressionFormat ToTextureCompressionFormat(MobileTextureSubtarget mobileTextureSubtarget) { switch (mobileTextureSubtarget) { case MobileTextureSubtarget.Generic: return(TextureCompressionFormat.Default); case MobileTextureSubtarget.DXT: return(TextureCompressionFormat.Dxt1); case MobileTextureSubtarget.PVRTC: return(TextureCompressionFormat.Pvrtc); case MobileTextureSubtarget.ETC: return(TextureCompressionFormat.Etc1); case MobileTextureSubtarget.ETC2: return(TextureCompressionFormat.Etc2); case MobileTextureSubtarget.ASTC: return(TextureCompressionFormat.Astc); default: throw new ArgumentOutOfRangeException(nameof(mobileTextureSubtarget), mobileTextureSubtarget, null); } }
/* * Constructor */ public TextureCompressionAndroid(MobileTextureSubtarget subTarget, int versionCodePrefix, bool isActive = false) { this.subTarget = subTarget; this.versionCodePrefix = versionCodePrefix; m_textureProperties = new TextureProperties(subTarget.ToString(), isActive); }
static void BuildAssetBundles(string targetDirectory, string directorySuffix, MobileTextureSubtarget compressionFormat) { EnsureTargetDirectoryExists(targetDirectory); EditorUserBuildSettings.androidBuildSubtarget = compressionFormat; if (!EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android, BuildTarget.Android)) { Debug.Log("Failed to switch build target"); } // Build the AssetBundles string targetPath = Path.Combine(Application.dataPath, targetDirectory); BuildPipeline.BuildAssetBundles(targetPath, BuildAssetBundleOptions.UncompressedAssetBundle, BuildTarget.Android); // We don't want to include a format suffix in the actual asset // bundle name, so we build without the suffix and then // rename the output directory to have the suffix if (!string.IsNullOrEmpty(directorySuffix)) { string renamedBundlesDirectory = targetDirectory + directorySuffix; DeleteTargetDirectory(renamedBundlesDirectory); string renamedPath = Path.Combine(Application.dataPath, renamedBundlesDirectory); Directory.Move(targetPath, renamedPath); } }
static void BuildAndroid(bool debug, MobileTextureSubtarget subtarget = MobileTextureSubtarget.ETC) { BuildTarget buildTarget = BuildTarget.Android; // change platform if (EditorUserBuildSettings.activeBuildTarget != buildTarget) { EditorUserBuildSettings.SwitchActiveBuildTarget(buildTarget); } // options BuildOptions options = BuildOptions.SymlinkLibraries; if (debug) { options |= BuildOptions.Development; } // subtarget EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.ETC; // version PlayerSettings.bundleVersion = ThroneBuild.GAME_VERSION; DirectoryInfo di = new DirectoryInfo(Application.dataPath); string apkPath = Path.Combine(di.Parent.Parent.FullName, "throne_" + (debug ? "debug" : "release") + ".apk"); BuildPipeline.BuildPlayer(GetLevels(), apkPath, buildTarget, options); }
public static void SaveParameters() { m_androidBundleVersionCode = PlayerSettings.Android.bundleVersionCode; m_androidTextureSubTarget = EditorUserBuildSettings.androidBuildSubtarget; m_blackberryTextureSubTarget = EditorUserBuildSettings.blackberryBuildSubtarget; m_iPhoneBundleIdentifier = PlayerSettings.iPhoneBundleIdentifier; m_iOSApplicationDisplayName = PlayerSettings.iOS.applicationDisplayName; m_bundleIdentifier = PlayerSettings.bundleIdentifier; m_productName = PlayerSettings.productName; m_bundleVersion = PlayerSettings.bundleVersion; Array buildTargetGroupArray = Enum.GetValues(typeof(BuildTargetGroup)); m_customScriptingDefineSymbolArray = new string[buildTargetGroupArray.Length]; for (int i = 0; i < buildTargetGroupArray.Length; i++) { m_customScriptingDefineSymbolArray[i] = PlayerSettings.GetScriptingDefineSymbolsForGroup((BuildTargetGroup)buildTargetGroupArray.GetValue(i)); } m_releaseType = AppParameters.Get.releaseType; m_platformType = AppParameters.Get.platformType; m_distributionPlatform = AppParameters.Get.distributionPlatform; m_platformArchitecture = AppParameters.Get.platformArchitecture; m_textureCompression = AppParameters.Get.textureCompression; m_appParamBundleIdentifier = AppParameters.Get.bundleIdentifier; m_appParamProductName = AppParameters.Get.productName; m_appParamBundleVersion = AppParameters.Get.bundleVersion; }
private static void Prebuild(MobileTextureSubtarget texture, BuildManifestObject manifest) { string buildNumber = manifest.GetValue <string>("buildNumber"); SetBundleVersion(GetBuildPrefix(texture), Int32.Parse(buildNumber)); SetBuildSubtarget(texture); }
private static int GetBuildPrefix(MobileTextureSubtarget texture) { switch ((int)texture) { case 0: // Generic. Not in use return(0); case 1: // DXT return(40010); case 2: // PVRTC return(50010); case 3: // ATC return(30010); case 4: // ETC return(10010); case 5: // ETC2 return(20010); default: // ASTC return(60010); } }
public void OnPostTextureBake() { if (AndroidBuildTexCompressionSubtarget != MobileTextureSubtarget.Generic) { EditorUserBuildSettings.androidBuildSubtarget = AndroidBuildTexCompressionSubtarget; AndroidBuildTexCompressionSubtarget = MobileTextureSubtarget.Generic; } if (TizenBuildTexCompressionSubtarget != MobileTextureSubtarget.Generic) { TizenBuildTexCompressionSubtarget = MobileTextureSubtarget.Generic; } }
public void OverwriteWithCurrentBuildSettings() { scenes = EditorBuildSettings.scenes.Select(x => new BuildScene { scene = AssetDatabase.LoadAssetAtPath <SceneAsset>(x.path), path = x.path, guid = x.guid.ToString(), enabled = x.enabled, }) .ToArray(); activeBuildTarget = EditorUserBuildSettings.activeBuildTarget; activeScriptCompilationDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup) .Split(';').ToList(); allowDebugging = EditorUserBuildSettings.allowDebugging; androidBuildSubtarget = EditorUserBuildSettings.androidBuildSubtarget; androidEtc2Fallback = EditorUserBuildSettings.androidETC2Fallback; buildAppBundle = EditorUserBuildSettings.buildAppBundle; buildScriptsOnly = EditorUserBuildSettings.buildScriptsOnly; compressFilesInPackage = EditorUserBuildSettings.compressFilesInPackage; compressWithPsArc = EditorUserBuildSettings.compressWithPsArc; connectProfiler = EditorUserBuildSettings.connectProfiler; development = EditorUserBuildSettings.development; enableHeadlessMode = EditorUserBuildSettings.enableHeadlessMode; explicitArrayBoundsChecks = EditorUserBuildSettings.explicitArrayBoundsChecks; explicitDivideByZeroChecks = EditorUserBuildSettings.explicitDivideByZeroChecks; explicitNullChecks = EditorUserBuildSettings.explicitNullChecks; exportAsGoogleAndroidProject = EditorUserBuildSettings.exportAsGoogleAndroidProject; forceInstallation = EditorUserBuildSettings.forceInstallation; installInBuildFolder = EditorUserBuildSettings.installInBuildFolder; iOsBuildConfigType = EditorUserBuildSettings.iOSBuildConfigType; movePackageToDiscOuterEdge = EditorUserBuildSettings.movePackageToDiscOuterEdge; needSubmissionMaterials = EditorUserBuildSettings.needSubmissionMaterials; ps4BuildSubtarget = EditorUserBuildSettings.ps4BuildSubtarget; ps4HardwareTarget = EditorUserBuildSettings.ps4HardwareTarget; selectedBuildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup; selectedStandaloneTarget = EditorUserBuildSettings.selectedStandaloneTarget; streamingInstallLaunchRange = EditorUserBuildSettings.streamingInstallLaunchRange; symlinkLibraries = EditorUserBuildSettings.symlinkLibraries; waitForPlayerConnection = EditorUserBuildSettings.waitForPlayerConnection; windowsDevicePortalAddress = EditorUserBuildSettings.windowsDevicePortalAddress; windowsDevicePortalPassword = EditorUserBuildSettings.windowsDevicePortalPassword; windowsDevicePortalUsername = EditorUserBuildSettings.windowsDevicePortalUsername; wsaBuildAndRunDeployTarget = EditorUserBuildSettings.wsaBuildAndRunDeployTarget; wsaSubtarget = EditorUserBuildSettings.wsaSubtarget; wsaUwpsdk = EditorUserBuildSettings.wsaUWPSDK; wsaUwpVisualStudioVersion = EditorUserBuildSettings.wsaUWPVisualStudioVersion; xboxBuildSubtarget = EditorUserBuildSettings.xboxBuildSubtarget; xboxOneDeployDrive = EditorUserBuildSettings.xboxOneDeployDrive; xboxOneDeployMethod = EditorUserBuildSettings.xboxOneDeployMethod; xboxOneRebootIfDeployFailsAndRetry = EditorUserBuildSettings.xboxOneRebootIfDeployFailsAndRetry; }
/// <summary> /// Builds an APK at the specified path with the specified texture compression. /// </summary> /// <param name="buildPath">Path for the output APK.</param> /// <param name="textureCompression">If not null, will override the texture compression subtarget.</param> public static void BuildAndroid(string buildPath, MobileTextureSubtarget? textureCompression = null) { if (textureCompression != null) { EditorUserBuildSettings.androidBuildSubtarget = textureCompression.Value; } string buildMessage = BuildPipeline.BuildPlayer(GetEnabledScenePaths().ToArray(), buildPath, BuildTarget.Android, BuildOptions.None); if (string.IsNullOrEmpty(buildMessage)) BuildReporter.Current.IndicateSuccessfulBuild(); else { BuildReporter.Current.Log(buildMessage, BuildReporter.MessageSeverity.Error); } }
public void OnPostTextureBake() { if (AndroidBuildTexCompressionSubtarget != MobileTextureSubtarget.Generic) { EditorUserBuildSettings.androidBuildSubtarget = AndroidBuildTexCompressionSubtarget; AndroidBuildTexCompressionSubtarget = MobileTextureSubtarget.Generic; } #if UNITY_TIZEN if (TizenBuildTexCompressionSubtarget != MobileTextureSubtarget.Generic) { EditorUserBuildSettings.tizenBuildSubtarget = TizenBuildTexCompressionSubtarget; TizenBuildTexCompressionSubtarget = MobileTextureSubtarget.Generic; } #endif }
public void OnPreTextureBake() { AndroidBuildTexCompressionSubtarget = MobileTextureSubtarget.Generic; TizenBuildTexCompressionSubtarget = MobileTextureSubtarget.Generic; // the texture override in build settings for some platforms causes poor quality if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android && EditorUserBuildSettings.androidBuildSubtarget != MobileTextureSubtarget.Generic) { AndroidBuildTexCompressionSubtarget = EditorUserBuildSettings.androidBuildSubtarget; //remember so we can restore later EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.Generic; } if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Tizen) { } }
static void BuildRTAssets_AssetPacks_Plugin() { // Save the current setting MobileTextureSubtarget originalSetting = EditorUserBuildSettings.androidBuildSubtarget; // Clean out any old data DeleteTargetDirectory(streamingName); DeleteTargetDirectory(assetPacksName); // Build the AssetBundles, both in ETC2 and ASTC texture formats BuildAssetBundles(assetPacksName, astcSuffix, MobileTextureSubtarget.ASTC); BuildAssetBundles(assetPacksName, "", MobileTextureSubtarget.ETC2); AssetDatabase.Refresh(); EditorUserBuildSettings.androidBuildSubtarget = originalSetting; }
/// <summary> /// Builds the specified build target. /// </summary> /// <param name="parsedBuildTarget">Build target to build.</param> /// <param name="buildPath">Output path for the build.</param> /// <param name="parsedTextureSubtarget">Texture compression subtarget for Android.</param> public static void Build(BuildTarget parsedBuildTarget, string buildPath, MobileTextureSubtarget? parsedTextureSubtarget = null) { Directory.CreateDirectory(buildPath); switch (parsedBuildTarget) { case BuildTarget.Android: BuildAndroid(buildPath, parsedTextureSubtarget); break; case BuildTarget.iOS: BuildIos(buildPath); break; default: throw new ArgumentException(parsedBuildTarget + " is not a supported build target."); } }
private static void Build(string textureType, MobileTextureSubtarget texture) { int buildNumber = GetBuildPrefix(texture); string prefix = buildNumber.ToString(); int bundleVersion = Int32.Parse(PlayerSettings.bundleVersion); PlayerSettings.Android.bundleVersionCode = (buildNumber * 100) + bundleVersion; string playerName = "Android_" + textureType + "_" + prefix + "_" + bundleVersion + ".apk"; BuildPipeline.BuildPlayer(new string[] { "Assets/Scenes/Preloader.unity", "Assets/Scenes/Main.unity", }, "Builds/" + playerName, BuildTarget.Android, BuildOptions.Development); }
/// <summary> /// Run one or more AssetBundle builds with the specified texture compression formats. /// This variant allows for overriding the base format and provides a different return type. /// </summary> /// <param name="outputPath">The output directory for base AssetBundles. See the other method for notes.</param> /// <param name="builds">The main argument to <see cref="BuildPipeline"/>.</param> /// <param name="assetBundleOptions">Options to pass to <see cref="BuildPipeline"/>.</param> /// <param name="baseTextureFormat">The default format. Note: ETC1 is supported by all devices.</param> /// <param name="additionalTextureFormats">Texture formats to generate for in addition to the base.</param> /// <param name="allowClearDirectory">Allows this method to clear the contents of the output directory.</param> /// <returns>A dictionary from AssetBundle name to TextureCompressionFormat to file outputPath.</returns> public static Dictionary <string, Dictionary <TextureCompressionFormat, string> > BuildAssetBundles( string outputPath, AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions, MobileTextureSubtarget baseTextureFormat, IEnumerable <MobileTextureSubtarget> additionalTextureFormats, bool allowClearDirectory) { if (builds == null || builds.Length == 0) { throw new ArgumentException("AssetBundleBuild parameter cannot be null or empty"); } foreach (var build in builds) { if (!AndroidAppBundle.IsValidModuleName(build.assetBundleName)) { throw new ArgumentException("Invalid AssetBundle name: " + build.assetBundleName); } } if (string.IsNullOrEmpty(outputPath)) { throw new ArgumentNullException("outputPath"); } CheckDirectory(outputPath, allowClearDirectory); // Make unique and silently remove the base format, if it was present. var textureSubtargets = new HashSet <MobileTextureSubtarget>( additionalTextureFormats ?? Enumerable.Empty <MobileTextureSubtarget>()); textureSubtargets.Remove(baseTextureFormat); // Note: GetCompressionFormatSuffix() will throw for unsupported formats. var paths = textureSubtargets.Select(format => outputPath + GetCompressionFormatSuffix(format)); foreach (var path in paths) { CheckDirectory(path, allowClearDirectory); } // Throws if the base format is invalid. GetCompressionFormat(baseTextureFormat); return(BuildAssetBundlesInternal( outputPath, builds, assetBundleOptions, baseTextureFormat, textureSubtargets)); }
private void CreateSupportsTextureElem(AndroidManifest manifestXML, MobileTextureSubtarget subTarget) { if ((PlayerSettings.colorSpace == ColorSpace.Linear) && (subTarget != MobileTextureSubtarget.DXT)) { Debug.LogWarning("Linear rendering works only on new Tegra devices"); } switch (subTarget) { case MobileTextureSubtarget.Generic: case MobileTextureSubtarget.ETC: manifestXML.AddSupportsGLTexture("GL_OES_compressed_ETC1_RGB8_texture"); break; case MobileTextureSubtarget.DXT: manifestXML.AddSupportsGLTexture("GL_EXT_texture_compression_dxt1"); manifestXML.AddSupportsGLTexture("GL_EXT_texture_compression_dxt5"); manifestXML.AddSupportsGLTexture("GL_EXT_texture_compression_s3tc"); break; case MobileTextureSubtarget.PVRTC: manifestXML.AddSupportsGLTexture("GL_IMG_texture_compression_pvrtc"); break; case MobileTextureSubtarget.ATC: manifestXML.AddSupportsGLTexture("GL_AMD_compressed_ATC_texture"); manifestXML.AddSupportsGLTexture("GL_ATI_texture_compression_atitc"); break; case MobileTextureSubtarget.ETC2: break; case MobileTextureSubtarget.ASTC: manifestXML.AddSupportsGLTexture("GL_KHR_texture_compression_astc_ldr"); break; default: Debug.LogWarning("SubTarget not recognized : " + subTarget); break; } }
// The internal method assumes all parameter preconditions have already been checked. private static Dictionary <string, Dictionary <TextureCompressionFormat, string> > BuildAssetBundlesInternal( string outputPath, AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions, MobileTextureSubtarget baseTextureFormat, IEnumerable <MobileTextureSubtarget> textureSubtargets) { // Use a dictionary to capture the generated AssetBundles' file names. var nameToTextureFormatToPath = builds.ToDictionary( build => build.assetBundleName, _ => new Dictionary <TextureCompressionFormat, string>()); var originalAndroidBuildSubtarget = EditorUserBuildSettings.androidBuildSubtarget; try { // First build for the additional texture formats. foreach (var textureSubtarget in textureSubtargets) { // Build AssetBundles in the the base format's directory. EditorUserBuildSettings.androidBuildSubtarget = textureSubtarget; BuildAssetBundles(outputPath, builds, assetBundleOptions); // Then move the files to a new directory with the compression format suffix. var outputPathWithSuffix = outputPath + GetCompressionFormatSuffix(textureSubtarget); Directory.Move(outputPath, outputPathWithSuffix); var textureCompressionFormat = GetCompressionFormat(textureSubtarget); UpdateDictionary(nameToTextureFormatToPath, outputPathWithSuffix, textureCompressionFormat); } // Then build for the base format. EditorUserBuildSettings.androidBuildSubtarget = baseTextureFormat; BuildAssetBundles(outputPath, builds, assetBundleOptions); UpdateDictionary(nameToTextureFormatToPath, outputPath, TextureCompressionFormat.Default); return(nameToTextureFormatToPath); } finally { EditorUserBuildSettings.androidBuildSubtarget = originalAndroidBuildSubtarget; } }
private static TextureCompressionFormat GetCompressionFormat(MobileTextureSubtarget subtarget) { switch (subtarget) { case MobileTextureSubtarget.ASTC: return(TextureCompressionFormat.Astc); case MobileTextureSubtarget.DXT: return(TextureCompressionFormat.Dxt1); case MobileTextureSubtarget.ETC: return(TextureCompressionFormat.Etc1); case MobileTextureSubtarget.ETC2: return(TextureCompressionFormat.Etc2); case MobileTextureSubtarget.PVRTC: return(TextureCompressionFormat.Pvrtc); default: throw new ArgumentException("Unsupported MobileTextureSubtarget: " + subtarget); } }
public static bool BuildBundleWithAssetPacks(BuildPlayerOptions buildPlayerOptions, MobileTextureSubtarget mobileTextureSubtarget, string buildPath) { TextureCompressionFormat textureCompressionFormat = ToTextureCompressionFormat(mobileTextureSubtarget); return(BuildBundleWithAssetPacks(buildPlayerOptions, textureCompressionFormat, buildPath)); }
static void BuildRTAssets_AssetPacks_Scripted() { // Save the current setting MobileTextureSubtarget originalSetting = EditorUserBuildSettings.androidBuildSubtarget; // Clean out any old data DeleteTargetDirectory(streamingName); DeleteTargetDirectory(assetPacksName); // Build the AssetBundles, both in ETC2 and ASTC texture formats BuildAssetBundles(assetPacksName, astcSuffix, MobileTextureSubtarget.ASTC); BuildAssetBundles(assetPacksName, "", MobileTextureSubtarget.ETC2); AssetDatabase.Refresh(); // Copy our discrete test image asset into a new directory // which will be used for the 'discrete' asset pack source string discreteFileName = "Discrete1.jpg"; string discretePackName = "discretepack"; string discretePath = Path.Combine(Path.GetTempPath(), discretePackName); Directory.CreateDirectory(discretePath); string destPath = Path.Combine(discretePath, discreteFileName); if (File.Exists(destPath)) { File.Delete(destPath); } string sourcePath = Path.Combine(Application.dataPath, "Images"); sourcePath = Path.Combine(sourcePath, discreteFileName); File.Copy(sourcePath, destPath); Debug.Log("Copied discrete file to : " + destPath); // Create an AssetPackConfig and start creating asset packs AssetPackConfig assetPackConfig = new AssetPackConfig(); // Create asset packs using AssetBundles string assetBundlePath = Path.Combine(Application.dataPath, assetPacksName); // Add the default ETC2 bundles assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath, "installtime"), AssetPackDeliveryMode.InstallTime); assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath, "fastfollow"), AssetPackDeliveryMode.FastFollow); assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath, "ondemand"), AssetPackDeliveryMode.OnDemand); // Add the ASTC bundles assetBundlePath += astcSuffix; assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath, "installtime"), AssetPackDeliveryMode.InstallTime); assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath, "fastfollow"), AssetPackDeliveryMode.FastFollow); assetPackConfig.AddAssetBundle(Path.Combine(assetBundlePath, "ondemand"), AssetPackDeliveryMode.OnDemand); // Create an asset pack from our discrete directory assetPackConfig.AddAssetsFolder(discretePackName, discretePath, AssetPackDeliveryMode.OnDemand); // Configures the build system to use the newly created // assetPackConfig when calling Google > Build and Run or // Google > Build Android App Bundle. AssetPackConfigSerializer.SaveConfig(assetPackConfig); EditorUserBuildSettings.androidBuildSubtarget = originalSetting; }
private static string GetCompressionFormatSuffix(MobileTextureSubtarget subtarget) { var format = GetCompressionFormat(subtarget); return(TextureTargetingTools.GetTargetingSuffix(format)); }
public static CacheSubtarget? CacheSubtargetForAndroidBuildSubtarget(MobileTextureSubtarget? target) { switch (target) { case MobileTextureSubtarget.ATC: return CacheSubtarget.Android_ATC; case MobileTextureSubtarget.DXT: return CacheSubtarget.Android_DXT; case MobileTextureSubtarget.Generic: return CacheSubtarget.Android_GENERIC; case MobileTextureSubtarget.ETC: return CacheSubtarget.Android_ETC; case MobileTextureSubtarget.ETC2: return CacheSubtarget.Android_ETC2; case MobileTextureSubtarget.PVRTC: return CacheSubtarget.Android_PVRTC; case MobileTextureSubtarget.ASTC: return CacheSubtarget.Android_ASTC; default: return null; } }
private static void SetBuildSubtarget(MobileTextureSubtarget texture) { EditorUserBuildSettings.androidBuildSubtarget = texture; }
public static CacheSubtarget? CacheSubtargetForBlackBerryBuildSubtarget(MobileTextureSubtarget? target) { switch (target) { case MobileTextureSubtarget.Generic: return CacheSubtarget.BlackBerry_GENERIC; case MobileTextureSubtarget.PVRTC: return CacheSubtarget.BlackBerry_PVRTC; case MobileTextureSubtarget.ATC: return CacheSubtarget.BlackBerry_ATC; case MobileTextureSubtarget.ETC: return CacheSubtarget.BlackBerry_ETC; default: return null; } }
static void BuildAndroidClient(string defineSymbols = "", E_BuildType buildType = E_BuildType.Universal) { if (EditorUserBuildSettings.selectedBuildTargetGroup != BuildTargetGroup.Android) { Debug.LogError("Invalid build target group (" + EditorUserBuildSettings.selectedBuildTargetGroup + ") \n." + "In this moment we are able to build only android clients..."); return; } /*if(EditorUserBuildSettings.androidBuildSubtarget != AndroidBuildSubtarget.DXT) * { * Debug.LogError("Invalid android sub target (" + EditorUserBuildSettings.androidBuildSubtarget + ") \n."+ * "In this moment we support only DXT android clients..."); * return; * }*/ // ............................................. // Start to build player... string infoPrefix = "==== Client build "; Debug.Log(infoPrefix + "started."); // ............................................. // get scenes for dedicated server... List <string> listOfScenes = GetScenesForBuild(E_ApplicationType.AndroidClient, buildType); if (listOfScenes.Count <= 0) { Debug.LogWarning(infoPrefix + "List of scenes is empty"); return; } Debug.Log(infoPrefix + ", Building Scenes: " + ConvertStringArrayToString(listOfScenes.ToArray())); // ............................................. // prepare output directory... MobileTextureSubtarget androidSubTarget = EditorUserBuildSettings.androidBuildSubtarget; string subTarget = androidSubTarget.ToString().ToLower(); string buildName = buildType != E_BuildType.Universal ? ("_" + buildType.ToString()) : string.Empty; string outputDirectory = "../_Packages/AndroidPlayer_" + subTarget + buildName + "/"; System.IO.Directory.CreateDirectory(outputDirectory); Debug.Log(infoPrefix + "Output directory: " + outputDirectory); // ............................................. // prepare player name... string playerName = outputDirectory + "DeadZone_" + subTarget + buildName + ".apk"; Debug.Log(infoPrefix + "Player name: " + playerName); // ............................................. // apply settings from ApplyAndroidSecretSettings(outputDirectory + "Settings.json"); // if we are using split apk add loader level if (PlayerSettings.Android.useAPKExpansionFiles == true) { listOfScenes.Insert(0, "MadFinger Assets/Levels/Loader.unity"); } Build(E_ApplicationType.AndroidClient, listOfScenes.ToArray(), playerName, BuildTarget.Android, BuildOptions.None, defineSymbols); Debug.Log(infoPrefix + "DONE."); }
static void BuildAndroid(bool release, MobileTextureSubtarget target, int bundleVersion) { // change platform if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android) { EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android); } string currentDir = Application.dataPath; int index = currentDir.LastIndexOf("/"); currentDir = currentDir.Remove(index); index = currentDir.LastIndexOf("/"); currentDir = currentDir.Remove(index); PlayerSettings.Android.keystoreName = currentDir + "/tools/androidKeystore/linkage.keystore"; PlayerSettings.Android.keyaliasPass = "******"; PlayerSettings.Android.keyaliasName = "linkage"; PlayerSettings.Android.keystorePass = "******"; // PlayerSettings.use32BitDisplayBuffer = false; EditorUserBuildSettings.androidBuildSubtarget = target; string time = System.DateTime.Now.ToString("yyMMddHHmm"); string name = "aok_" + bundleVersion + "_" + time; if (release) { name += "_rel"; } else { name += "debug"; } // PlayerSettings.bundleVersion = Environment.GetCommandLineArgs()[Environment.GetCommandLineArgs().Length - 1]; PlayerSettings.bundleVersion = version; // set refresh time // Time.maximumDeltaTime = 0.05f; if (release) { PlayerSettings.Android.useAPKExpansionFiles = true; } else { PlayerSettings.Android.useAPKExpansionFiles = false; } if (GameVersion.paymentDebug == 1) { PlayerSettings.bundleIdentifier = "com.rastargames.goc"; } else { PlayerSettings.bundleIdentifier = "com.liang.aok"; } currentDir = currentDir + "/" + name + ".apk"; #pragma warning disable 0162 // if(DoamBuild.VERSION_CODE == 0){ PlayerSettings.Android.bundleVersionCode = Convert.ToInt32((bundleVersion.ToString() + PlayerSettings.bundleVersion.Replace(".", ""))); // }else{ // PlayerSettings.Android.bundleVersionCode = Convert.ToInt32(bundleVersion.ToString()+DoamBuild.VERSION_CODE.ToString()); // } #pragma warning restore 0162 BuildPipeline.BuildPlayer(levels, currentDir, BuildTarget.Android, release ? BuildOptions.None : BuildOptions.Development); }
protected static void RunNoStoreAndroidProdBuild(MobileTextureSubtarget textureCompression) { EditorUserBuildSettings.androidBuildSubtarget = textureCompression; RunBuild(BuildTarget.Android, prodBuildOptions, StoreType.None); }
/* * Constructor */ public TextureCompressionBlackBerry(MobileTextureSubtarget subTarget, bool isActive = false) { this.subTarget = subTarget; m_textureProperties = new TextureProperties(subTarget.ToString(), isActive); }