iOS 创建framework·bundler ·多个project

创建framework
  1. Xcode新建Test工程 选择 Cocoa Touch Framework

  2. 创建功能类,并实现功能

  3. 选中Target,在buildSetting更改参数
    a) Link With Standard Libraries -> NO
    b) Mach-O Type -> Static Library

  4. 设置Build Phases -> Headers
    公开的文件拖到public,隐藏的放到Private 或 Project

  5. 在Test.h(必须公开),导入公开的.h

  6. 打包.framework
    a) 新建一个Target ->选择Cross-platform选项卡中的Aggregate
    b) 选中新建Target -> Build Phases -> + -> Run Script,添加以下脚本

#!/bin/sh
#要build的target名
TARGET_NAME=${PROJECT_NAME}
if [[ $1 ]]
then
TARGET_NAME=$1
fi
UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/${PROJECT_NAME}/"

#创建输出目录,并删除之前的framework文件
mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework"

#分别编译模拟器和真机的Framework
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build

#拷贝framework到univer目录
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}"

#合并framework,输出最终的framework到build目录
lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}"

#删除编译之后生成的无关的配置文件
dir_path="${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/"
for file in ls $dir_path
do
if [[ ${file} =~ ".xcconfig" ]]
then
rm -f "${dir_path}/${file}"
fi
done
#判断build文件夹是否存在,存在则删除
if [ -d "${SRCROOT}/build" ]
then
rm -rf "${SRCROOT}/build"
fi
rm -rf "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator" "${BUILD_DIR}/${CONFIGURATION}-iphoneos"
#打开合并后的文件夹
open "${UNIVERSAL_OUTPUT_FOLDER}"

c) Framework -> target,分别在真机和模拟器上运行一次
d) 新建target 运行一次,选中打开文件中的frame
e) 其他人可以开始使用制作framework

注意:1.如果使用了category,使用framework的程序运行时会crash,需要工程中 other linker flags添加两个参数 -ObjC -all_load
2.一个静态库要有自己独有的前缀,所有类名、常量等都要加同样的前缀
3.注意命名冲突

bundle文件制作

新建一个文件夹,添加.bundle后缀,显示包内容,直接拖进去就行

多个Project
  1. 新建文件夹
  2. Xcode -> File New -> Workspace(建在新建文件夹下)
  3. 在新建文件夹下创建多个项目工程
  4. 打开workspace,左下角添加project
  5. 创建Podfile文件,
# Uncomment the next line to define a global platform for your project
# platform :ios, '8.0'
workspace 'New.xcworkspace' //workspace文件名
project 'Test/Test.xcodeproj' //主工程路径

target 'Test' do
  platform :ios, '8.0'
  project 'Test/Test.xcodeproj' //工程路径
  pod 'Masonry'
end

target 'Test1' do
  platform :ios, '8.0'
  project 'Test1/Test1.xcodeproj' //工程路径
  pod 'Masonry'
  pod 'AFNetworking'
end

你可能感兴趣的:(iOS 创建framework·bundler ·多个project)