您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页构建framework

构建framework

来源:二三四教育网

一、构建framework

1."new traget” 选择 Framework& Library中的 Cocoa Touch Framework


1.png

2.framework支持版本调整 iOS Deployment Target
设置最低支持版本【创建的默认是支持最新版本】

3.搜Linking 调整 Mach-O Type
A、Mach-O Type 改为 Static Library【静态库】
B、Dead Code stripping 改为NO

然后几个需要设置的选项都显现出来,首先是Dead Code Stripping设置为NO,网上对此项的解释如下,大致意思是如果开启此项就会对代码中的”dead”、”unreachable”的代码过滤,不过这个开关是否关闭,似乎没有多大影响,不过为了完整还原framework中的代码,将此项关闭也未曾不可。

C 、Link with standard Libraries 改为NO

然后将Link With Standard Libraries关闭,我想可能是为了避免重复链接

4、defines Module 改为NO【?】
5、xxxx.h中写入要暴露的文件头文件
6、Build Phases 中设置要暴露的.h的头文件和.m 文件


2.png

7、build active architecture only 改为NO,编译所有版本类型
8、添加armv7s 要不不支持iPhone5 iPhone5C


3.png

问题
1、如果有分类,上层使用的时候需要添加other link flag 加上-ObjC标识
2、上层需要配置framework引入的路径在Framework Search Paths 中需要配置引入framework的路径

二、framework 真机库合并

  1. 查询库信息
lipo -info tztPodAPI
Architectures in the fat file: tztPodAPI are: armv7 armv7s i386 x86_64 arm64 
  1. 手动合并真机库和模拟器库
cd 改到当前库文件夹下
lipo -create A  B   -output  C

A  真机库文件名字  
B  模拟器库文件名字  
C  输出目标库文件名字
  1. 抽取某一类型的库
lipo A -thin x86_64 -output B

A为原有库
B为抽离后的库
  1. 自动合并真机库和模拟器库脚本

target—>Build Phases—>New Run script Phase—>/bin/sh

if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/target/${PROJECT_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
#open "${DEVICE_DIR}"
#open "${SRCROOT}/Products"
fi
cd ${SRCROOT}/target/
open "."

#${PROJECT_NAME} 当前项目名称
#${PRODUCT_NAME} 当前产品名称
#

小知识

armv7|armv7s|arm64都是ARM处理器的指令集
i386|x86_64 是Mac处理器的指令集

arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Air| iPad mini2(iPad mini with Retina Display) 
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display) 
armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4 

i386是针对intel通用微处理器32位处理器 
x86_64是针对x86架构的64位处理器 
模拟器32位处理器测试需要i386架构, 
模拟器64位处理器测试需要x86_64架构,
真机32位处理器需要armv7,或者armv7s架构,
真机64位处理器需要arm64架构

framework路径放在需要当前项目文件夹内,引入framework时路径可以自动关联,头文件也可以正常提示

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务