组件化iOS开发-学习记录

Swift版 Framework制作与使用、Shell自动合并

2018-03-27  本文已影响22人  Guomingjian

·1、创建framework。

1.png

·2、选择Swift开发语言。

2.png

·3、创建文件夹管理自己的工具类,根据需求向下版本兼容。

3.png

·4、如果无法访问自己SDK的同学,看看是否提供正确的权限。

4.png

Common.swift

//MARK:- 常量定义
public let kStatusBarH = UIApplication.shared.statusBarFrame.size.height               //状态栏高度
public let kNavigationBarH = UINavigationController.init().navigationBar.frame.height  //导航栏Bar高度
public let kNavigationH = (kStatusBarH + kNavigationBarH)                              //导航高度
public let kTabBarH = UITabBarController.init().tabBar.frame.height                    //tabbar高度
public let kScreenW = UIScreen.main.bounds.size.width                                  //屏幕宽
public let kScreenH = UIScreen.main.bounds.size.height                                 //屏幕高
//
public let kSystemVersion = UIDevice.current.systemVersion  //系统版本
public let kBatteryLevel = UIDevice.current.batteryLevel    //电池电量
public let isIPhoneX = (UIScreen.main.bounds.height == 812)

public class Common : NSObject {

    public func iOS9() -> Bool {
        if #available(iOS 9.0, *)
        {
            return true
        }
        else
        {
            return false
        }
    }

    public func iOS11() -> Bool {
        if #available(iOS 11.0, *)
        {
            return true
        }
        else
        {
            return false
        }
    }
}

·5、根据自己需求,是否把类文件暴露给外界。

5.png

·6、运行SDK,拷贝framework至测试项目中。

6.png
7.png

·7、Embedded Binaries 添加自己的framework。

8.png

·8、导入SDK,调用相关方法并运行程序。

9.png
10.png

·注意:如果想打包模拟器和真机都兼容的Framework,又不想手动合并的话,可以用脚本实现,话不多说,上图:
1、add Target

10.png

2、选择Aggregate,名字可任取,这里取名Lib

11.png

3、Build Phases -->新增Shell

12.png

4、粘贴Shell代码

13.png

Shell 代码:

# Sets the target folders and the final framework product.
# 如果工程名称和Framework的Target名称不一样的话,要自定义FMKNAME
# 例如: FMK_NAME = "MyFramework"
FMK_NAME=${PROJECT_NAME}
# Install dir will be the final output to the framework.
# The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# -configuration ${CONFIGURATION}
# Clean and Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
cp -R "${SIMULATOR_DIR}/" "${INSTALL_DIR}/"
# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
rm -r "${WRK_DIR}"
open "${INSTALL_DIR}"

5、运行Lib,生成兼容版Framework

14.png
下一篇跟大家分享:Framework上传到GitHub,然后通过CocoaPods下载我们自己的SDK,喜欢的朋友可以点波赞。o( ̄︶ ̄)o
上一篇下一篇

猜你喜欢

热点阅读