美文网首页
构建framework

构建framework

作者: abf319bdd291 | 来源:发表于2018-07-06 09:28 被阅读11次

一、构建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时路径可以自动关联,头文件也可以正常提示

本笔记仅做记录使用
参考博客
https://blog.csdn.net/qq_31810357/article/details/72528470

相关文章

  • 构建framework

    一、构建framework 1."new traget” 选择 Framework& Library中的 Coco...

  • 无标题文章

    项目拆分 Cocoapods 多模块构建 framework构建 OC swift混编 http://www.ji...

  • Flutter-线程与异步

    1、线程 Flutter 主要分为三个核心模块: Framework:基于Dart语言构建的framework,包...

  • G矩阵-基因组关系矩阵

    构建群体G矩阵 参考:synbreed: a framework for the analysis of gen...

  • iOS构建framework

    iOS构建framework 原因:同种业务需要在不同的客户端项目中使用。 问题: 1.代码只能存在一个项目中,便...

  • Framework React 框架

    Framework React React 是一个用于构建用户界面的 JAVASCRIPT 库。主要用于构建UI,...

  • 构建自己的Framework

    1 创建framework 2 构建文件 继承NSObject 3 创建自定义方法 并在m文件实现 4 接下来就是...

  • 构建Framework静态库

    iOS创建静态库 纯笔记。类似于各类SDK,只暴露bundle文件,和Framework文件。可以将本地文件(高内...

  • asp.net core 系列 20 EF基于数据模型创建数据库

    一.概述 本章使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core ...

  • Framework Angular 框架

    Framework Angular Angular 是一个开发平台。它能帮你更轻松的构建 Web 应用。Angul...

网友评论

      本文标题:构建framework

      本文链接:https://www.haomeiwen.com/subject/rucvuftx.html