ios的framework合并

# 运行此脚本前

# 先编译一遍工程  确保正常运行 没有报错

# 作为Xcode Aggregate运行

# file-->new target-->cross-platform-->Aggregate

#!/bin/sh

UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

WORKSPACE_NAME=${PROJECT_NAME}.xcodeproj

# make sure the output directory exists

mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

# Step 1. Build Device and Simulator versions

echo ‘Step 1. Build Device and Simulator versions‘

xcodebuild -project "${WORKSPACE_NAME}" -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphoneos ONLY_ACTIVE_ARCH=NO   BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build

xcodebuild -project "${WORKSPACE_NAME}" -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build

# Step 2. Copy the framework structure (from iphoneos build) to the universal folder

cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"

# Step 3. Copy Swift modules from iphonesimulator build (if it exists) to the copied framework directory

SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/."

if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then

cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"

fi

# Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory

lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"

# Step 5. Convenience step to copy the framework to the project‘s directory

cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}"

# Step 6. Convenience step to open the project‘s directory in Finder

open "${PROJECT_DIR}"

原文地址:https://www.cnblogs.com/nuanshou/p/10508923.html

时间: 2024-10-04 13:32:52

ios的framework合并的相关文章

【iOS开发-115】静态库的制作以及第三方框架iOS Universal Framework,DEBUG和RELEASE

(1)概念介绍 --我们平时在项目中用的最多的就是开源的第三方库,这种库是开源的,我们不仅能用,还能查看源代码甚至可以修改源代码. --与开源库对应的就是闭源,闭源库分为动态库和静态库.动态库就是.dylib或者.framework结尾的文件.就是苹果官方提供给我们用的那些库.开发者不能在项目中使用自制的动态库,否则无法上传到APPStore. --所以,对于闭源库,我们主要讨论的是静态库.静态库的样子就是用户拿到的文件有很多头文件.h+资源包+编译过的一个二进制文件.a(.framework)

iOS : 静态库(.framework)合并

如果写了一个Framework,根据Build时选择的机器类型,会分为模拟器Framework和真机Framework,两者是不能混用的. 此时可以通过配置一个Run Script,在Script中使用lipo命令来合并两个版本的Framework,重新生成一个新的Framework,这个Framework将同时支持在模拟器和真机上运行. 在项目的Build Phases中,新建一个Run Script,输入下面内容: if [ "${ACTION}" = "build&qu

iOS打包Framework真机和模拟器兼容合并版本 - 详细攻略步骤

打包Framework,测试时: 1.用模拟器打包,测试时只能跑在模拟器 2.用真机打包,测试时只能跑在真机 那么怎么做到一个版本兼容以上两种场景呢? 解决如下: 1.打开终端 2.输入   lipo -create [模拟器打包path] [真机打包path] -output [导出兼容版本path] =======================  示例  Demo========================== 准备前提: -- 假设我们包已经完成,并在模拟器和真机都能编译通过. --

iOS 最新framework和.a静态库制作及使用全解

最近想把自己的一些实用工具类搞成一个静态库,网上搜了下关于framework和.a的一些相关资料,然而写的或不全面,或不详细,我归纳总结及亲自实践写下这篇文章. 一.framework和.a两种静态库的介绍及区别 .a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件. .a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用. .a + .h + sourceFile = .framework. .a只是静态库.framework既可以是静态库也

iOS 打包.framework(包括第三方、图片、xib、plist文件)详细步骤及需要注意的地方

https://www.cnblogs.com/yk123/p/9340268.html 最近在研究如何制作自己的.framework,在网上看了好多文章,但是写的都不是很全,里面也不包括资源图片.第三方(如Masonry,AFN)和plist文件,所以只能自己动手了.下面详细介绍一下如何生带有第三方.图片.plist文件的.framework 一.制作.framework 1.首先,我们新建工程,选择Coco Touch Framework 创建工程 2.使用CocoaPods导入Masonr

iOS 开发 Framework

制作Framework 的好处和缺点 好处:       1.如果模块间接口定义的比较完善,模块化的程序具有很好的可扩展性与内聚性:       2.物理上的模块化便于开发过程的管理与测试,尤其是在程序规模相对大.       3.如果可以使用胶水语言作为粘合剂,程序可以用很少的代价适应未来的变化.       4.可以在物理上实现 iOS 程序的模块化. 不足:       1.由于是静态库,应该不会有什么运行时的损失,但是没试验过,不确定.       2.资源的加载这部分,不知道会不会占用

iOS开发 .framework的Optional(弱引用)和Required(强引用)区别, 有错误 Library not found………………

http://www.cnblogs.com/wanyakun/p/3494323.html 强引用(Required)的framework是一定会被加载到内存的,但是弱引用(Optional)的framework只在需要时才会被载入内存,这对于比较大的framework来说,在最初加载的时候会省很多时间. 简单解释一下,有一些库如Social.framework 和 AdSupport.framework,是在iOS6之后才被引入的,还有一些更新了新特性的只能在iOS6+上可用.当你添加一个f

对百度地图SDK中的真机framework和模拟器framework合并时遇到的问题

在终端中输入的命令: lipo -create Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI Release-iphonesimulator/BaiduMapAPI.framework/BaiduMapAPI -output Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI 注意: Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI 为真机

iOS api/framework

the frameworks available in iOS-based devices. You can find these frameworks in the <Xcode.app>Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/<iOS_SDK>/System/Library/Frameworks directory, where <Xcode.app> is the path to