From 8b78fd8b00f2e4065df340d95c3219769b19b7b7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期日, 10 五月 2026 19:11:38 +0800
Subject: [PATCH] 0312 新增导出工程给AS打包逻辑
---
Assets/Editor/Tool/ClientPackage.cs | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 101 insertions(+), 0 deletions(-)
diff --git a/Assets/Editor/Tool/ClientPackage.cs b/Assets/Editor/Tool/ClientPackage.cs
index ca66e51..1c76cb1 100644
--- a/Assets/Editor/Tool/ClientPackage.cs
+++ b/Assets/Editor/Tool/ClientPackage.cs
@@ -560,6 +560,107 @@
}
public static VersionConfig versionConfig1 = null;
+
+ /// <summary>
+ /// 瀵煎嚭Android宸ョ▼缁橝S鎵撳寘
+ /// Unity鍙礋璐e鍑簎nityLibrary锛孲DK/Gradle/绛惧悕绛夊潎鐢盇S宸ョ▼澶勭悊
+ /// </summary>
+ public static void ExportAndroidProject(string _publisher, int _buildIndex, bool _development, string _outputPath, string _assetBundlePath)
+ {
+ PreBuild(_publisher, _buildIndex);
+
+ var versionName = string.Empty;
+ var versionConfig = GetVersionConfig(_publisher, out versionName);
+
+ PlayerSettings.Android.bundleVersionCode = VersionConfig.GetVersionNumber(versionConfig.version);
+ PlayerSettings.enableInternalProfiler = _development;
+
+ // 鍏堟竻鐞哠treamingAssets锛屽啀浠嶢ssetBundles鐩綍鎷疯礉璧勬簮鍒癝treamingAssets
+ // 杩欐牱BuildPlayer瀵煎嚭宸ョ▼鏃舵墠浼氬寘鍚父鎴忚祫婧�
+ var streamingPath = ResourcesPath.Instance.StreamingAssetPath;
+ if (Directory.Exists(streamingPath))
+ Directory.Delete(streamingPath, true);
+
+ if (!string.IsNullOrEmpty(_assetBundlePath) && Directory.Exists(_assetBundlePath))
+ {
+ var files = new List<FileInfo>();
+ FileExtersion.GetAllDirectoryFileInfos(_assetBundlePath, files);
+ foreach (var file in files)
+ {
+ var extension = Path.GetExtension(file.FullName);
+ if (extension == ".meta")
+ continue;
+
+ var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, file.FullName);
+ if (relativePath.StartsWith("patch"))
+ continue;
+
+ var to = StringUtility.Concat(streamingPath, relativePath);
+ var directory = Path.GetDirectoryName(to);
+ if (!Directory.Exists(directory))
+ Directory.CreateDirectory(directory);
+
+ File.Copy(file.FullName, to, true);
+ }
+ Debug.LogFormat("璧勬簮鎷疯礉瀹屾垚锛屼粠 {0} 鍒� {1}", _assetBundlePath, streamingPath);
+ }
+ else
+ {
+ Debug.LogWarningFormat("AssetBundle璺緞涓虹┖鎴栦笉瀛樺湪: {0}锛屽鍑哄伐绋嬪皢涓嶅寘鍚父鎴忚祫婧�", _assetBundlePath);
+ }
+
+ // 娓呯悊Unity绔棫鐨凙ndroid鎻掍欢鏂囦欢锛岄伩鍏嶅鍑哄伐绋嬫椂甯﹀叆SDK鐩稿叧鏂囦欢锛堢敱AS澶勭悊锛�
+ if (Directory.Exists(THE_2TH_WORLD_SDK_PATH))
+ Directory.Delete(THE_2TH_WORLD_SDK_PATH, true);
+ if (File.Exists(MANIFEST_PATH))
+ File.Delete(MANIFEST_PATH);
+ if (File.Exists(File_baseProjectTemplate))
+ File.Delete(File_baseProjectTemplate);
+ if (File.Exists(File_google_services))
+ File.Delete(File_google_services);
+ if (File.Exists(File_gradleTemplate))
+ File.Delete(File_gradleTemplate);
+ if (File.Exists(File_LauncherManifest))
+ File.Delete(File_LauncherManifest);
+ if (File.Exists(File_launcherTemplate))
+ File.Delete(File_launcherTemplate);
+ if (File.Exists(File_mainTemplate))
+ File.Delete(File_mainTemplate);
+ if (File.Exists(File_deps))
+ File.Delete(File_deps);
+ if (File.Exists(File_huawei_services))
+ File.Delete(File_huawei_services);
+ if (File.Exists(File_settingGradle))
+ File.Delete(File_settingGradle);
+
+ AssetDatabase.SaveAssets();
+ AssetDatabase.Refresh();
+
+ // 鍏抽敭璁剧疆锛氬鍑轰负Gradle宸ョ▼鑰岄潪鐩存帴鎵揂PK
+ EditorUserBuildSettings.exportAsGoogleAndroidProject = true;
+ EditorUserBuildSettings.androidBuildSystem = AndroidBuildSystem.Gradle;
+
+ // 瀵煎嚭璺緞
+ string outputDir = Path.Combine(_outputPath, versionName + "_" + versionConfig.clientPackageFlag);
+
+ if (Directory.Exists(outputDir))
+ {
+ Directory.Delete(outputDir, true);
+ }
+
+ Debug.LogFormat("寮�濮嬪鍑篈ndroid宸ョ▼锛岃緭鍑鸿矾寰�: {0}", outputDir);
+
+ BuildPipeline.BuildPlayer(baseLevels, outputDir, BuildTarget.Android,
+ _development ? BuildOptions.AcceptExternalModificationsToPlayer | BuildOptions.Development | BuildOptions.AllowDebugging
+ : BuildOptions.AcceptExternalModificationsToPlayer);
+
+ Debug.LogFormat("瀵煎嚭Android宸ョ▼瀹屾垚锛佽緭鍑鸿矾寰�: {0}", outputDir);
+ Debug.LogFormat("璇峰皢unityLibrary鐩綍鍐呭鏇存柊鍒癆S宸ョ▼涓紝鐒跺悗鍦ˋS涓繘琛屾墦鍖�");
+
+ // 瀵煎嚭瀹屾垚鍚庢仮澶嶈缃�
+ EditorUserBuildSettings.exportAsGoogleAndroidProject = false;
+ }
+
public static void BuildIpa(string _sdkPath, string _publisher, int _buildIndex, bool _replace)
{
PreBuild(_publisher, _buildIndex);
--
Gitblit v1.8.0