private void AndroidGUI() { showAndroidSettings = EditorGUILayout.Foldout(showAndroidSettings, "Android Settings"); if (showAndroidSettings) { EditorGUILayout.BeginHorizontal(); SelectableLabelField(packageNameLabel, PlayerSettings.bundleIdentifier); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.HelpBox("Billing Service Selection", MessageType.None); if (!SoomSettings.GPlayBP && !SoomSettings.AmazonBP) { SoomSettings.GPlayBP = true; } SoomSettings.GPlayBP = EditorGUILayout.ToggleLeft(playLabel, SoomSettings.GPlayBP); if (SoomSettings.GPlayBP) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); EditorGUILayout.LabelField(publicKeyLabel, fieldWidth, fieldHeight); SoomSettings.AndroidPublicKey = EditorGUILayout.TextField(SoomSettings.AndroidPublicKey, fieldHeight); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(emptyContent, spaceWidth, fieldHeight); SoomSettings.AndroidTestPurchases = EditorGUILayout.Toggle(testPurchasesLabel, SoomSettings.AndroidTestPurchases); EditorGUILayout.EndHorizontal(); } if (SoomSettings.GPlayBP && !playUpdate) { playUpdate = true; amazonUpdate = false; SoomSettings.AmazonBP = false; ManifestTools.GenerateManifest(); SoomlaAndroidUtil.handlePlayBPJars(false); SoomlaAndroidUtil.handleAmazonBPJars(true); } SoomSettings.AmazonBP = EditorGUILayout.ToggleLeft(amazonLabel, SoomSettings.AmazonBP); if (SoomSettings.AmazonBP && !amazonUpdate) { playUpdate = false; amazonUpdate = true; SoomSettings.GPlayBP = false; ManifestTools.GenerateManifest(); SoomlaAndroidUtil.handlePlayBPJars(true); SoomlaAndroidUtil.handleAmazonBPJars(false); } if (!SoomlaAndroidUtil.IsSetupProperly()) { var msg = "You have errors in your Android setup. More info in the SOOMLA docs."; switch (SoomlaAndroidUtil.SetupError) { case SoomlaAndroidUtil.ERROR_NO_SDK: msg = "You need to install the Android SDK! Set the location of Android SDK in: " + (Application.platform == RuntimePlatform.OSXEditor ? "Unity" : "Edit") + "->Preferences->External Tools"; break; case SoomlaAndroidUtil.ERROR_NO_KEYSTORE: msg = "Your defined keystore doesn't exist! You'll need to create a debug keystore or point to your keystore in 'Publishing Settings' from 'File -> Build Settings -> Player Settings...'"; break; } EditorGUILayout.HelpBox(msg, MessageType.Error); } } EditorGUILayout.Space(); }
public void OnEnable() { // Generating AndroidManifest.xml ManifestTools.GenerateManifest(); }
/// <summary> /// 开始构建 AssetBundle /// </summary> /// <param name="target"></param> static void BuildAssetBundle(BuildTarget buildTarget, int compre_type, bool is_force_build, string[] build_asset_arr) { //生成资源的依赖关系 AssetsDependenctGenerateEditor.UpdateAssetDependenct(); //构建引用关系图形 AssetDependenctTree.BuildAssetDependenctGraph(); //更新资源打包后缀 UpAssetExtension(buildTarget); //获取所有需要打包的资源数据引用 var dic = AllNeedBuildAssetDependenct(build_asset_arr); //获取资源进行单独打包的列表 var singles = BuildSinglePackage(dic); //获取目录资源打包 var directory = BuildDirectoryPackage(dic); //获取资源进行除单独打包的列表 var resources = BuildAllResourceEx(dic); //获取总共需要进行打包的资源数据 var builds = ArrayTools.Concat(singles, directory, resources); //var exportDir = BuildUtils.CreateAssetBundleDir(buildTarget, out_path);//构建不同平台的子目录 //var fullversion = BuildUtils.GetCurrentPackageVersion(); //var bundleName = BuildUtils.GetAssetBundleName(buildTarget); //int major, minor, build; //VersionJson.GetResVersion(fullversion, out major, out minor, out build); //var version = build.ToString().PadLeft(VersionJson.VersionCount, '0'); //var versionPath = BuildUtils.GenVersionPath(__versionPath, version); //AssetBundleManifest assetBundlemainfest; //if (build > 0)//小版本的情况 //{ // Debug.Log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!build version" + version); // //如果某一个版本的文件存在 就全部删除掉. // if (Directory.Exists(versionPath)) // { // Directory.Delete(versionPath, true); // } // //不强制打包 小幅度增加版本号,以上一个版本的数据比较变动 // assetBundlemainfest = BuildBundlesUnity5(exportDir, __compressType, __buildTarget, false, builds); // if (assetBundlemainfest != null) // { // var staticManifest = BuildUtils.GetStaticAssetBundleManifest(lastVersionPath, bundleName); // var filePath = lastVersionPath; // if (staticManifest != null) // { // string[] addResource, deleteResource, updateResource; // BuildUtils.BuildVersionMergeInfomation(filePath, exportDir, staticManifest, assetBundlemainfest, out addResource, out deleteResource, out updateResource); // CopyResourceToVersionFile(addResource, updateResource, exportDir, versionPath); // CopyAssetBundleManifestFile(exportDir, versionPath, __buildTarget); // CreateVersionFile(versionPath, fullversion, __buildTarget); // //生成信息中需要包含新增资源 删除资源 更新资源 // GenLittleVersionChange(addResource, updateResource, deleteResource, versionPath); // } // else // { // Debug.LogError("Error!!,Last Version Is Empty!" + version); // } // } // else // { // Debug.LogError("Error! AssetBundleMainfest is Null."); // } //} //else//大版本的情况 //{ // if (Directory.Exists(versionPath)) // { // Directory.Delete(versionPath, true); // } // Debug.Log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!build version" + version); // //强制重新生成,全部拷贝到一个新的目录 更新大版本 生成到StreamingPath // assetBundlemainfest = BuildBundlesUnity5(exportDir, __compressType, __buildTarget, true, builds); // if (assetBundlemainfest != null) // { // //到version目录 1 2 3 // CopyAssetBundleManifestFile(exportDir, versionPath, __buildTarget); // //备份文件到Version文件版本库中 虽然以后不用使用 但是需要提取版本变化文件 // CopyResourceToVersionFile(assetBundlemainfest.GetAllAssetBundles(), null, exportDir, versionPath); // CreateVersionFile(versionPath, fullversion, __buildTarget); // //到streaming目录 1 2 3 // CopyResouceToStreamingAssets(assetBundlemainfest, exportDir, __buildTarget); // CopyVersionToStreamingAssets(versionPath, __buildTarget); // CopyAssetBundleManifestToStreamingAssets(exportDir, __buildTarget); // //拷贝到游戏里面 供下一个打包流程使用 // } // else // { // Debug.LogError("Error! AssetBundleMainfest is Null."); // } //} ////比对文件 //if (__withMD5 && assetBundlemainfest != null) //{ // var bundlexList = CreateBundleMD5(assetBundlemainfest, exportDir); // ProcessVersion(exportDir, bundlexList); // //处理StreamingAsset里面的资源 // ChangeBundleNameToMd5(exportDir, bundlexList); //} //获取AssetBundle输出目录 string out_path = GetAssetBundleOutPath(); AssetBundleManifest assetBundlemainfest; //不强制打包 小幅度增加版本号,以上一个版本的数据比较变动 assetBundlemainfest = BuildAssetBundle(out_path, compre_type, buildTarget, is_force_build, builds); if (assetBundlemainfest != null) { Debug.Log("资源数据打包完成 ~~~ "); //存储引用数据记录 ManifestTools.OnSaveManifest(out_path + "/Data", assetBundlemainfest); //var staticManifest = BuildUtils.GetStaticAssetBundleManifest(lastVersionPath, bundleName); //var filePath = lastVersionPath; //if (staticManifest != null) //{ // string[] addResource, deleteResource, updateResource; // BuildUtils.BuildVersionMergeInfomation(filePath, exportDir, staticManifest, assetBundlemainfest, out addResource, out deleteResource, out updateResource); // CopyResourceToVersionFile(addResource, updateResource, exportDir, versionPath); // CopyAssetBundleManifestFile(exportDir, versionPath, __buildTarget); // CreateVersionFile(versionPath, fullversion, __buildTarget); // //生成信息中需要包含新增资源 删除资源 更新资源 // GenLittleVersionChange(addResource, updateResource, deleteResource, versionPath); //} //else //{ // Debug.LogError("Error!!,Last Version Is Empty!" + version); //} } else { Debug.LogError("Error! AssetBundleMainfest is Null."); } //清理环境 EditorUtility.UnloadUnusedAssetsImmediate(); //更新资源列表 BuildUtils.Refresh(); }