制作Framework && 自动化

Framework的制作

一、制作过程.

1.以SDWebImage为例
  • 创建framework工程
    在这里插入图片描述

  • 修改Build Settings中配置在这里插入图片描述

在这里插入图片描述

  • 下载好最新的SD,地址:https://github.com/rs/SDWebImage,拷贝源码到此工程;或者直接使用SD现有的工程,修改以上配置信息;然后修改为Release,如下图:
  • 点击Edit Scheme :image
  • 修改Build Configuration:image
  • 编译 cmd+b ,这里需要编译两次一次是真机设备,一次是模拟器;编译完成后,打开下图SDWebImage.framework所在的目录:image
  • 打开终端:cd 到Products所在的目录(可以直接将Products拖到终端):image
  • 如下:image
  • 下面通过命令合并真机设备和模拟器framework:image
  • 将新生成的framework替换Release-iphoneos或者Release-iphonesimulator下面的:image
  • 将替换完的SDWebImage.framework拷贝到项目中如图:image
  • 下面就可以修改项目中SDWebImage.podspec的引入方式为s.ios.vendored_frameworks = ‘Frameworks/SDWebImage.framework’;完事!!!
2.自动化
  • 分别编译模拟器和真机,自动执行脚本生成framework
    首先添加Run Script添加run script

脚本执行

  • 在工程目录下添加文件夹ToolScripts,把脚本createFramework.sh放进去;
  • 先编译模拟器,再编译真机;会看到如下弹窗:合并完成。
    合并之后的frame

二.遇到的问题

  • 编译到最后出现个弹窗:

image

这是因为自己制作的framwork和项目中的bundle不一致造成的,在制作之前,先修改SDWebImage的和项目中的保持一致,再重复以上步骤,最后cmd+shift+k清理一下缓存即可。

#!/bin/sh

echo "SYMROOT = $SYMROOT"

echo "SYMROOT = ${BUILD_DIR}/${CONFIGURATION}"

echo "SYMROOT = ${BUILD_DIR}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}"

bundleID=${PRODUCT_BUNDLE_IDENTIFIER}

CURRENTCONFIG_DEVICE_DIR=${BUILD_DIR}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}

JfBuildDir=${BUILD_DIR}

JfExecutablePath=${EXECUTABLE_PATH}

JfExecutableName=${EXECUTABLE_NAME}

JfExecutableFolderPath=${EXECUTABLE_FOLDER_PATH}

echo "JfBuildDir = $JfBuildDir"

echo "JfExecutablePath = $JfExecutablePath"

echo "JfExecutableName = $JfExecutableName"

echo "90-> ${CURRENTCONFIG_DEVICE_DIR}"



echo "error:message"

echo "warning:message"



cd ${JfBuildDir}



framework="IJKMediaFramework"

[ -f "$framework" ] && rm "$framework"



dire="compoundFramework/"

[ -d "$dire" ] && rm -rf "$dire"

mkdir "$dire"



if [ -d "Release-iphoneos" ] && [ -d "Release-iphonesimulator" ]; then

echo "composition framework"



lipo -create Release-iphoneos/${JfExecutablePath} Release-iphonesimulator/${JfExecutablePath} -compound ${JfExecutableName}



cp -rf Release-iphoneos/* ${dire}

cp -f ${JfExecutableName} ${dire}/${JfExecutableFolderPath}

rm -f ${JfExecutableName}

open ${dire}

fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值