.framework 打包自动提取资源文件

170 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

前言

在加入打包好 framework 文件之后,由于资源文件(如 .bundle 文件,额外文件,.plist 等)的添加与库的添加性质不同,所以在添加库的时候,不会把库中的资源文件自动加入,所以需要则外进行添加。基于此,写出一个脚本,实现打包之后,生成一个新的文件夹,文件夹中包括 。framework 的资源与 .framework 文件

前期配置

UNLOCALIZED_RESOURCES_FOLDER_PATH 本地资源文件夹路径 增加 User-Defined 的设置,通过设置 UNLOCALIZED_RESOURCES_FOLDER_PATH 的值,可以在打包之后自动的将资源文件写入到该文件夹中。 详细步骤:

image.png

  1. 我这边设置的是$(CONTENTS_FOLDER_PATH)/Resources

image.png 配置UNLOCALIZED_RESOURCES_FOLDER_PATH

  1. 如此,打包出来之后就会将资源写到 Resources 中

image.png

Resources
至此,前期准备已经做好

自动打包

该脚本所做的功能有两:1、编译库 2、将库中的资源文件夹做个替身出来 (如果愿意,可以编译debug和release两个版本并合并)

#!/bin/sh

#需要接受3个值:1、工程目录 2、target名称 3、库目录

#project目录
PROJECT_PATH=$1
#target名称
TARGET_NAME=$2
#库存放的目录
FRAMEWORK_PATH=$3
#库的名称
FRAMEWORK_NAME=$TARGET_NAME".framework"

#库的具体位置
OLD_FRAMEWORK_DEVICE_PATH=$FRAMEWORK_PATH"/"$FRAMEWORK_NAME

#编译后存放的位置
BUILD_PATH=./build/
BUILD_FRAMEWORK_PATH=$BUILD_PATH"Release-iphoneos/"$FRAMEWORK_NAME

#打包release版本的真机库
release_iphoneos(){
echo "现在开始编译iphone的设备版本";

	xcodebuild -project $PROJECT_PATH -configuration Release -target $TARGET_NAME
	
	echo "删除旧framework"
	rm -r $OLD_FRAMEWORK_DEVICE_PATH
	echo "拷贝新framework"
	cp -r $BUILD_FRAMEWORK_PATH $OLD_FRAMEWORK_DEVICE_PATH
}

#创建文件夹
create_direction(){
	EMBEDDED_DIR=$FRAMEWORK_PATH"/"$TARGET_NAME".embeddedframework"

	echo "删除旧目录"
	rm -r $EMBEDDED_DIR
	echo "创建新目录"
	mkdir $EMBEDDED_DIR
	echo "拷贝库到目录中"
	cp -r $BUILD_FRAMEWORK_PATH $EMBEDDED_DIR"/"

	#制造替身
	ln -s $EMBEDDED_DIR"/"$FRAMEWORK_NAME"/Resources"  $EMBEDDED_DIR"/Resources" 
}

release_iphoneos;
create_direction;