iOS-SDK制作

作者: Jux2020 | 来源:发表于2023-04-17 18:29 被阅读0次

    可以直接看我优化后的另外一篇文章:
    https://www.jianshu.com/p/9572b56590e2

    1.首先在xcode新建一个framework


    cmd+shift+n.png

    2.创建好了之后是这样,然后自己修改需要支持的设备和系统版本


    image.png

    3.接着创建pod文件,把需要的三方库导入进来。
    再把代码文件放进来,然后项目结构如下


    image.png

    4.创建bundle用来放资源文件


    image.png

    5.修改Build Setting的一些配置

    修改为No 修改为Static Library

    6.继续修改bundle的一些配置


    修改为iOS
    设置为No
    路径全部删除

    7.项目里需要用的的资源添加进bundle里面


    image.png
    1. frameworkbundleEdit SchemeRunInfoBuild Configuration 都修改为 Release
      image.png

    把需要暴露的头文件拖到Public 下面

    image.png

    分别run一下,让Products文件夹下的这两个由红色变成黑色,这就是我们最终需要的东西

    image.png

    Show in Finder获得

    image.png

    .bundle文件放入.framework里面,里面的nib文件和一些不需要的资源文件可以删除掉,不影响使用,因为bundle里面已经有了

    image.png

    创建一个文件夹,新建一个.podSpec文件 把framework文件也放进来

    image.png

    .podSpec这个里面按照自己的需求写,注意依赖的三方库bundle的路径

     Pod::Spec.new do |spec|
        spec.name         = 'TestSDK'
        spec.version      = '1.0'
        #spec.license      = { :type => 'BSD' }
        spec.homepage     = '111'
        spec.authors      = { 'xxx' => 'xxx.com' }
        spec.summary      = 'TestSDK'
        spec.source       = {:git => 'https://xxx.com'}
        spec.ios.deployment_target =  '11.0'
        #spec.source_files = 'TestSDK/**/*.{h,m}'
        spec.xcconfig = { 'CLANG_MODULES_AUTOLINK' => 'YES' }
        spec.requires_arc  = true
        spec.static_framework = true
        spec.vendored_frameworks = 'TestSDK.framework'
        spec.resource = "TestSDK.framework/TestSDKResource.bundle"
    
        spec.dependency 'AFNetworking'
        spec.dependency 'MJRefresh'
        spec.dependency 'WebViewJavascriptBridge'
        spec.dependency 'Masonry'
        spec.dependency 'YYKit'
        spec.dependency 'DZNEmptyDataSet'
        spec.dependency 'FMDB'
        spec.dependency 'IQKeyboardManager'
        spec.dependency 'KLCPopup'
        spec.dependency 'SocketRocket'
        spec.dependency 'VTMagic'
        spec.dependency 'IJKMediaFramework'
    
     end
    

    最后把这个文件夹放入需要引入SDK的项目根目录下,修改Podfile,添加

    pod 'TestSDK' , :path => 'TestSDK'
    

    然后再pod install即可,到此SDK就引入完成了。

    其他注意点:

    • 如果framework里面有category,那么需要在Other Linker Flags 添加-all_load(加载静态库中所有文件)
    • 访问bundle里的资源文件要这样取,不然取不到
    [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"TestSDKResource" withExtension:@"bundle"]];
    
    • 项目中如果有MRC的文件需要给对应文件增加-fno-objc-arc
    image.png
    • 上传提审时报错
      Missing Code Signing Entitlements. No entitlements found in bundle 'com.test.xxxResource' for executable 'xxx/xxx.app/xxxResource.bundle/xxxResource."
      这是因为bundle里面包含了可执行文件
      image.png
      把这个文件删除掉,然后把Versioning System改为None
      image.png
      bundleinfo.plist里面把Executable file项也删除掉
      image.png
      再次上传就没问题了。

    参考文章:

    IOS开发SDK(.FRAMEWORK静态库,.BUNDLE资源文件,脚本打包SDK和.BUNDLE)
    https://www.freesion.com/article/3001905534
    IOS SDK制作
    https://www.jianshu.com/p/e8f4684fa9aa
    https://www.jianshu.com/p/6536ef96add6
    https://www.jianshu.com/p/88022bb5d4fb
    https://www.jianshu.com/p/f5dcca0ee4bb
    https://www.jianshu.com/p/ed65aed59fd1
    https://www.jianshu.com/p/62abd9ab0407

    相关文章

      网友评论

        本文标题:iOS-SDK制作

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