美文网首页
code9制作静态库-下半部分(集成百度地图SDK以及使用pod

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

作者: 夏无眠Zz | 来源:发表于2018-04-20 00:50 被阅读26次

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

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

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

    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

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

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

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

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

    15-1.创建bundle文件

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

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

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

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

    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

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