diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildTasks/ExtdBuildTasks.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildTasks/ExtdBuildTasks.cs
new file mode 100644
index 0000000..282662c
--- /dev/null
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildTasks/ExtdBuildTasks.cs
@@ -0,0 +1,70 @@
+using System.Collections.Generic;
+using UnityEditor.Build.Content;
+using UnityEngine.U2D;
+using UnityEditor.Build.Pipeline.Injector;
+using UnityEditor.Build.Pipeline.Interfaces;
+using UnityEngine;
+using System.Linq;
+
+namespace UnityEditor.Build.Pipeline.Tasks
+{
+ ///
+ /// Ref https://zhuanlan.zhihu.com/p/586918159
+ ///
+ public class RemoveSpriteAtlasRedundancy : IBuildTask
+ {
+ ///
+ public int Version => 1;
+
+ [InjectContext]
+ IBundleWriteData writeDataParam;
+
+ ///
+ public ReturnCode Run()
+ {
+ BundleWriteData writeData = (BundleWriteData)writeDataParam;
+
+ // 所有图集散图的 guid 集合
+ HashSet spriteGuids = new HashSet();
+
+ // 遍历资源包里的资源记录其中图集的散图 guid
+ foreach (var pair in writeData.FileToObjects)
+ {
+ foreach (ObjectIdentifier objectIdentifier in pair.Value)
+ {
+ string path = AssetDatabase.GUIDToAssetPath(objectIdentifier.guid);
+ Object asset = AssetDatabase.LoadAssetAtPath