code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)

保存的居然中途没了,坑爹啊。只能重新写了。orz

11.重新编译执行,这次应该没报错了。暴露头文件用于给集成端使用。

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第1张图片
code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第2张图片

编译成功后,下面路径生成的framework可以直接用于模拟器调试,但是如果想要真机调试就需要生成直接调试的文件。

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第3张图片

12.网上一般打包静态库的流程是先生成模拟器框架,再生成真机框架,最后在终端使用指令合并两个生成最终的框架。我在网上找到了一个脚本,可以直接在xcode上生成最终框架。具体如下

#!/bin/sh

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

WORKSPACE_NAME=${PROJECT_NAME}.xcworkspace

# make sure the output directory exists

mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

# Step 1. Build Device and Simulator versions

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

xcodebuild -workspace "${WORKSPACE_NAME}" -scheme "${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}"

12-1.使用xcode生成Aggregate

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第4张图片

12-2.添加上面的脚本并执行

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第5张图片
code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第6张图片

13.生成后,就可以给测试项目调用了。 这边我自己新建了个测试工程,里面已经pod好了调用的第三方(如AFNetworking),需要再导入百度地图SDK和我们自己的SDK

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第7张图片

14.在测试项目中调用,没问题的话就告一段落了。

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第8张图片

15.如果项目中使用了xib,nib或者图片,就需要生成bundle,通过将bundle和我们的静态库一起给集成方,就可以完成整个项目了

15-1.创建bundle文件

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第9张图片

15-2.,由于bundle默认是在macOS下,所以buildingSetting下面的baseSDK也是macOS的,需要改回来

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第10张图片

15-3.Enable BitCode也要设置为NO,否则编译不过

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第11张图片

15-4.修改ComBine_HIDPI_IMAGES为NO,否则有些图片会变转码成tff格式

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第12张图片

15-5.导入资源文件,并编译,最后会在Products下面生成.bundle文件

code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking)_第13张图片

15-6.使用bundle下文件的时候,要注意使用方式已经跟一般的不同了。

bundle下图片使用

imgv.image = [UIImage imageNamed:@"XHMapSDKBundle.bundle/shake61"];

bundle下xib使用

NSString * bundlePath = [[NSBundle mainBundle] pathForResource:@"XHMapSDKBundle"ofType :@"bundle"];

        NSBundle*resourceBundle = [NSBundlebundleWithPath:bundlePath];

        // 加载 nib文件

        UINib*nib = [UINibnibWithNibName:@"STTextHud"bundle:resourceBundle];

        NSArray*viewObjs = [nibinstantiateWithOwner:niloptions:nil];

        // 获取 xib文件

        UIView *view= viewObjs.lastObject;

以上。

你可能感兴趣的:(code9制作静态库-下半部分(集成百度地图SDK以及使用pod导入AFnetwoking))