2
0
Эх сурвалжийг харах

支持SPM
1.使用cSettings:[.headerSearchPath]的方式指定头文件搜索路径,避免改动库文件结构
2.使用cSetting:[.define("MJ_USEING_SPM")]方式区分是Cocoapods还是SPM
3.NSBundle_MJRefresh中根据MJ_USEING_SPM宏确定Bundle资源读取方式,确保Cocoapods和SPM安装都可以正确获取资源
4.通过向新建include文件夹,添加头文件软链接的方式公开头文件,避免多次修改头文件

Chen Yuanbing 5 жил өмнө
parent
commit
2dc40e4b31

+ 6 - 1
MJRefresh/NSBundle+MJRefresh.m

@@ -15,8 +15,13 @@ + (instancetype)mj_refreshBundle
 {
     static NSBundle *refreshBundle = nil;
     if (refreshBundle == nil) {
+#ifdef MJ_USEING_SPM
+        NSBundle *containnerBundle = SWIFTPM_MODULE_BUNDLE;
+#else
+        NSBundle *containnerBundle = [NSBundle bundleForClass:[MJRefreshComponent class]];
+#endif
         // 这里不使用mainBundle是为了适配pod 1.x和0.x
-        refreshBundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[MJRefreshComponent class]] pathForResource:@"MJRefresh" ofType:@"bundle"]];
+        refreshBundle = [NSBundle bundleWithPath:[containnerBundle pathForResource:@"MJRefresh" ofType:@"bundle"]];
     }
     return refreshBundle;
 }

+ 1 - 0
MJRefresh/include/MJRefresh.h

@@ -0,0 +1 @@
+../MJRefresh.h

+ 1 - 0
MJRefresh/include/MJRefreshAutoFooter.h

@@ -0,0 +1 @@
+../Base/MJRefreshAutoFooter.h

+ 1 - 0
MJRefresh/include/MJRefreshAutoGifFooter.h

@@ -0,0 +1 @@
+../Custom/Footer/Auto/MJRefreshAutoGifFooter.h

+ 1 - 0
MJRefresh/include/MJRefreshAutoNormalFooter.h

@@ -0,0 +1 @@
+../Custom/Footer/Auto/MJRefreshAutoNormalFooter.h

+ 1 - 0
MJRefresh/include/MJRefreshAutoStateFooter.h

@@ -0,0 +1 @@
+../Custom/Footer/Auto/MJRefreshAutoStateFooter.h

+ 1 - 0
MJRefresh/include/MJRefreshBackFooter.h

@@ -0,0 +1 @@
+../Base/MJRefreshBackFooter.h

+ 1 - 0
MJRefresh/include/MJRefreshBackGifFooter.h

@@ -0,0 +1 @@
+../Custom/Footer/Back/MJRefreshBackGifFooter.h

+ 1 - 0
MJRefresh/include/MJRefreshBackNormalFooter.h

@@ -0,0 +1 @@
+../Custom/Footer/Back/MJRefreshBackNormalFooter.h

+ 1 - 0
MJRefresh/include/MJRefreshBackStateFooter.h

@@ -0,0 +1 @@
+../Custom/Footer/Back/MJRefreshBackStateFooter.h

+ 1 - 0
MJRefresh/include/MJRefreshComponent.h

@@ -0,0 +1 @@
+../Base/MJRefreshComponent.h

+ 1 - 0
MJRefresh/include/MJRefreshConst.h

@@ -0,0 +1 @@
+../MJRefreshConst.h

+ 1 - 0
MJRefresh/include/MJRefreshFooter.h

@@ -0,0 +1 @@
+../Base/MJRefreshFooter.h

+ 1 - 0
MJRefresh/include/MJRefreshGifHeader.h

@@ -0,0 +1 @@
+../Custom/Header/MJRefreshGifHeader.h

+ 1 - 0
MJRefresh/include/MJRefreshHeader.h

@@ -0,0 +1 @@
+../Base/MJRefreshHeader.h

+ 1 - 0
MJRefresh/include/MJRefreshNormalHeader.h

@@ -0,0 +1 @@
+../Custom/Header/MJRefreshNormalHeader.h

+ 1 - 0
MJRefresh/include/MJRefreshNormalTrailer.h

@@ -0,0 +1 @@
+../Custom/Trailer/MJRefreshNormalTrailer.h

+ 1 - 0
MJRefresh/include/MJRefreshStateHeader.h

@@ -0,0 +1 @@
+../Custom/Header/MJRefreshStateHeader.h

+ 1 - 0
MJRefresh/include/MJRefreshStateTrailer.h

@@ -0,0 +1 @@
+../Custom/Trailer/MJRefreshStateTrailer.h

+ 1 - 0
MJRefresh/include/MJRefreshTrailer.h

@@ -0,0 +1 @@
+../Base/MJRefreshTrailer.h

+ 1 - 0
MJRefresh/include/NSBundle+MJRefresh.h

@@ -0,0 +1 @@
+../NSBundle+MJRefresh.h

+ 1 - 0
MJRefresh/include/UIScrollView+MJExtension.h

@@ -0,0 +1 @@
+../UIScrollView+MJExtension.h

+ 1 - 0
MJRefresh/include/UIScrollView+MJRefresh.h

@@ -0,0 +1 @@
+../UIScrollView+MJRefresh.h

+ 1 - 0
MJRefresh/include/UIView+MJExtension.h

@@ -0,0 +1 @@
+../UIView+MJExtension.h

+ 37 - 0
Package.swift

@@ -0,0 +1,37 @@
+// swift-tools-version:5.3
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let package = Package(
+    name: "MJRefresh",
+    products: [
+        // Products define the executables and libraries a package produces, and make them visible to other packages.
+        .library(
+            name: "MJRefresh",
+            targets: ["MJRefresh"]),
+    ],
+    dependencies: [
+        // Dependencies declare other packages that this package depends on.
+        // .package(url: /* package url */, from: "1.0.0"),
+    ],
+    targets: [
+        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
+        // Targets can depend on other targets in this package, and on products in packages this package depends on.
+        .target(
+            name: "MJRefresh",
+            dependencies: [],
+            path: "MJRefresh",
+            resources: [.process("MJRefresh.bundle")],
+            cSettings: [
+                .define("MJ_USEING_SPM"),//Define macro "MJ_USEING_SPM" to identify whether Cocoapods or SPM are being used
+                .headerSearchPath("."),
+                .headerSearchPath("Base"),
+                .headerSearchPath("Custom/Footer/Auto"),
+                .headerSearchPath("Custom/Footer/Back"),
+                .headerSearchPath("Custom/Header"),
+                .headerSearchPath("Custom/Trailer"),
+            ]
+        ),
+    ]
+)