精华内容
下载资源
问答
  • 使用命令打包静态库

    2018-05-15 23:25:18
    使用命令打包静态库: (https://img-blog.csdn.net/20180515230046541?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlaWx1MDAw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 如上图,include...

    使用命令打包静态库:

    (https://img-blog.csdn.net/20180515230046541?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlaWx1MDAw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    如上图,include是头文件,里面只有一个head.h文件。src是源文件,里面有add.c   mod.c这两个文件,做简单的加法和除法操作,此时可以进入src目录,输入命令:
    1. gcc *.c -c -I../include
    2. ar rcs libtest.a *.o 回车
    生成libtest.a静态库,使用命令:mv libtest.a ../lib  将静态库移动到lib中
    
    使用:
    

    include “include/head.h”

    void main()
    {
    add(1,1);
    mod(12,2);
    }

    “`
    使用命令编译:gcc test.c lib/libtest.a -o app
    运行 ./app

    =========================静态库的优缺点======================
    优点:
    1.发布程序的时候不需要提供对应的库,因为这些静态库都被打包到了可执行文件中
    2.加载速度快,因为库就在执行程序中

    缺点:
    1.会造成可执行程序变大
    2.库发生了改变需要重新编译程序

    展开全文
  • cocoapods打包静态库(依赖私有库、开源库、私有库又包含静态库)

    前言:

    iOS工程架构少不了cocoapods 对第三方库的管理,它有着很好的操作性和集中管理的特性。之前的写了不少Xcode 建静态库工程打包.a 和 .framework 的文章,但是我们要先建静态库工程、编译通用包、导入测试工程demo中、静态库工程有更新就需要从新来一遍。工作重复、低效、繁琐。今天讲一下cocoapods打包静态库的工程。这种方式可以很好的解决以上问题。

    需求:持续向别人提供一套即时通讯SDK。

    1. SDK依赖的一些私有库会有频繁的更新,依赖的第三方库也是错综复杂。
    2. 使用开源库AFNetworking,别人项目已经有AFNetworking,就会产生开源库冲突。
    3. 假设你已经有一堆写好的源码,并且它们依赖一堆私有库和第三方库,也许,这些依赖并非都是源码,可能也包含了静态库(.a或者.framework)。

    所以:我迫切需要找到一种更方便的打包静态库的方式,既能随时更新私有库,也能解决开源库的冲突问题,那就是使用Cocoapods。Cocoapods作为OS X和iOS开发平台的类库管理工具,已经非常完善和强大。通常我们用pod来管理第三方开源类库,也有可能会开发一个用pod管理依赖关系的静态类库给其他人使用。本文将以一个依赖于MBProgressHUD、Toast## 标题的静态类库,来演示如何使用CocoaPods创建静态类库以及打包的过程。

    Cocoapods创建工程

    终端cd 到你某个文件路径,输入pod lib create VideoPlayerLib 创建并初始化一个工程。(即配置podspec)
    回答几个问题后就自动创建了一个工程。
    在这里插入图片描述此时会自动打开一个名为 VideoPlayerLib 的工程以及目录如下:
    在这里插入图片描述
    首先认识一下*.podspec文件,*.podspec是关于pod库的描述文件,它详细说明了在这个pod library中源码应该从哪里取出、应用怎样的构建设置以及其他基本的信息,比如名称、版本、描述等

    Pod::Spec.new do |s|
    s.name          = 'YJDemoSDK' #项目名
    s.version       = '0.1.0' #相应的版本号
    s.summary       = 'A short description of YJDemoSDK.' #简述
    s.description   = <<‐ DESC #详细描述
    TODO: Add long description of the pod here.
    DESC
    s.homepage      = 'https://github.com/yangjie2/YJDemoSDK' #项目主页
    s.license       = { :type => 'MIT', :file => 'LICENSE' } #开源协议
    s.author        = { 'yangjie2' => 'yangjie2@guahao.com' } #作者
    s.requires_arc  = true #arc和mrc选项
    s.libraries     = 'z', 'sqlite3' #表示依赖的系统类库,比如libz.dylib等
    s.frameworks    = 'UIKit','AVFoundation' #表示依赖系统的框架
    s.ios.vendored_frameworks = 'YJKit/YJKit.framework' # 依赖的第三方/自己的framework
    s.vendored_libraries = 'Library/Classes/libWeChatSDK.a' #表示依赖第三方/自己的静态库(比如libWeChatSDK.a)
    #依赖的第三方的或者自己的静态库文件必须以lib为前缀进行命名,否则会出现找不到的情况,这一点非常重要
    
    #平台信息
    s.platform      = :ios, '7.0'  #支持的平台
    s.ios.deployment_target = '7.0'
    
    #文件配置项
    s.source        = { :git => 'https://github.com/yangjie2/YJDemoSDK.git', :tag => s.version.to_s }
     #配置项目的目标路径,如果不是本地开发,pod init/update会从这个路去拉去代码
    
    s.source_files = 'YJDemoSDK/Classes/**/*.{h,m}' #你的源码位置
    s.resources     = ['YJDemoSDK/Assets/*.png'] #资源,比如图片,音频文件等
    s.public_header_files = 'YJDemoSDK/Classes/YJDemoSDK.h'   #需要对外开放的头文件
    
    #依赖的项目内容 可以多个
    s.dependency 'YYModel'
    s.dependency 'AFNetworking' '2.3'
    
    

    明白了.podspec文件是什么之后,继续往下看我们的工程目录,有个文件夹 Development Pods ,这里就是放置我们的源码和图片等资源文件的地方,要与YJDemoSDK.podspec文件中描述的一致。当你向VideoPlayerLib/Classes、VideoPlayerLib/Assets添加新的/已经存在的文件,或者更新你的.podspec时,需要运行pod install或者pod update。

    1. 打开VideoPlayerLib.podspec文件,修改自己的静态库配置,如下
    #
    # Be sure to run `pod lib lint VideoPlayerLib.podspec' to ensure this is a
    # valid spec before submitting.
    #
    # Any lines starting with a # are optional, but their use is encouraged
    # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
    #
    
    Pod::Spec.new do |s|
      s.name             = 'VideoPlayerLib'
      s.version          = '0.1.0'
      s.summary          = 'A short description of VideoPlayerLib.'
    
    # This description is used to generate tags and improve search results.
    #   * Think: What does it do? Why did you write it? What is the focus?
    #   * Try to keep it short, snappy and to the point.
    #   * Write the description between the DESC delimiters below.
    #   * Finally, don't worry about the indent, CocoaPods strips it!
    
      s.description      = <<-DESC
    TODO: Add long description of the pod here.
                           DESC
    
      s.homepage         = 'https://github.com/lzz/VideoPlayerLib'
      # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'lzz' => '18116064' }
      
      # 修改s.source。根据你的实际路径修改。
      s.source           = { :git => '/Users/suning/Desktop/架构/cocoapods打包静态库/VideoPlayerLib/VideoPlayerLib', :tag => s.version.to_s }
    
      # s.source           = { :git => 'https://github.com/lzz/VideoPlayerLib.git', :tag => s.version.to_s }
      # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
    
    
    
    # 下面配置依赖的资源、库、配置等
    
      # 工程依赖系统版本
      s.ios.deployment_target = '8.0'
      # 是否是静态库 这个地方很重要 假如不写这句打出来的包 就是动态库 不能使用 一运行会报错 image not found
      s.static_framework  =  true
      # arc和mrc选项
      s.requires_arc = true
      # 链接设置 重要
      # s.xcconfig = {'OTHER_LDFLAGS' => '-ObjC'}
    
    
      # 你的源码位置,源文件 包含 h,m
      s.source_files = 'VideoPlayerLib/Classes/**/*.{h,m}'
      # s.source_files = 'VideoPlayerLib/Classes/head/VideoPlayerLib.h'
    
      # 需要对外开放的头文件   打包只公开特定的头文件
      s.public_header_files = 'VideoPlayerLib/Classes/**/VideoPlayerLib.h'
      # 调试公开所有的头文件 这个地方下面的头文件 如果是在Example中调试 就公开全部,需要打包就只公开特定的h文件
      # s.public_header_files = 'VideoPlayerLib/Classes/**/*.h'
    
    
      # 资源,比如图片,音频文件等
      s.resource_bundles = {
         # 这是个数组,可以添加其他bundle
         'VideoPlayerLib' => ['VideoPlayerLib/Assets/*.png']
      }
    
      # 表示依赖系统的框架(多个)
      # s.frameworks = 'UIKit', 'MapKit'
    
      # 表示依赖的系统类库(多个) 注意:系统类库不需要写全名 去掉开头的lib
      # s.libraries = 'stdc++','sqlite3'
    
    
      # 依赖的第三方/自己的framework
      # s.ios.vendored_frameworks = 'VideoPlayerLib/MySDK.framework'
    
    
      # 表示依赖第三方/自己的静态库(比如libWeChatSDK.a)
      # 依赖的第三方的或者自己的静态库文件必须以lib为前缀进行命名,否则会出现找不到的情况,这一点非常重要
      # s.vendored_libraries = 'VideoPlayerLib/Classes/libWeChatSDK.a'
      # s.vendored_libraries = 'VideoPlayerLib/Classes/openssl/include/*.{a}'
    
      # 载入第三方.a头文件
      # s.xcconfig = {
      #      'USER_HEADER_SEARCH_PATHS' => 'VideoPlayerLib/Classes/openssl/include/openssl/*.{h}'
      #}
    
    
      # l依赖第三方开源框架(多个)
      # s.dependency 'AFNetworking', '~> 2.3'
      s.dependency 'MBProgressHUD'
      s.dependency 'Toast','3.0'
    
    end
    
    

    3.进入Example文件夹,执行pod install,让demo项目安装依赖项并更新配置。如果有错误,会有提示根据提示修改执行pod install,直到成功。
    在这里插入图片描述
    运行pod install,让demo程序加载新建的类。也许你已经发现了,只要新增加类/资源文件或依赖的三方库都需要重新运行pod install来应用更新。

    demo项目中调用测试。
    在这里插入图片描述
    成功打印,调用成功!

    编译静态库

    1. 验证类库
      开发完成静态类库之后,需要运行pod lib lint验证一下类库是否符合pod的要求。可以通过添加–only-errors忽略一些警告。

    cd 到含有VideoPlayerLib.podspec 文件下,然后执行

    lzz-Mac-mini:~ suning$ 
    lzz-Mac-mini:~ suning$ cd /Users/suning/Desktop/架构/cocoapods打包静态库/VideoPlayerLib/VideoPlayerLib 
    lzz-Mac-mini:VideoPlayerLib suning$ pod lib lint VideoPlayerLib.podspec
    

    可能会报错,根据错误提示修改即可!

    pod lib lint VideoPlayerLib.podspec --allow-warnings
    

    –use-libraries表示依赖了静态库,–allow-warnings忽略警告
    使用 pod spec lint VideoPlayerLib.pods --verbose 去查看详细错误
    在这里插入图片描述打包类库:需要使用一个cocoapods的插件cocoapods-packager来完成类库的打包。
    安装打包插件命令

    lzz-Mac-mini:~ suning$ sudo gem install cocoapods-packager
    Password:
    Fetching: cocoapods-packager-1.5.0.gem (100%)
    Successfully installed cocoapods-packager-1.5.0
    
    Parsing documentation for cocoapods-packager-1.5.0
    Installing ri documentation for cocoapods-packager-1.5.0
    Done installing documentation for cocoapods-packager after 0 seconds
    1 gem installed
    lzz-Mac-mini:~ suning$ 
    
    1. 提交源码,并打tag。
        git add .
        git commit -a -m 'v0.1.0'
        git tag -a 0.1.0 -m 'v0.1.0'
    

    git commit -a -m’v请换成版本号’
    git tag -a 版本号 -m’v版本号’
    记住,tag必须和.podspec文件中的 版本号一致! 同时,一旦修改了.podspec, 必须进入Example文件, 进行 pod install操作,然后退出到上级目录中 提交git

    1. 打包静态库
      // 打包静态.a 用这个
    pod package VideoPlayerLib.podspec --library --force
    

    在这里插入图片描述
    //打包静态framework 用这个,如果不修改版本号,它会把上面打包的.a 清除掉

    pod package VideoPlayerLib.podspec --force
    

    在这里插入图片描述为了保留两种静态库.a 和.framework ,编译一个版本号v0.2.0的库
    第一步:修改版本号

      s.version          = '0.2.0'
    

    第二步:提交源码,并打tag。

        git add .
        git commit -a -m 'v0.2.0'
        git tag -a 0.2.0 -m 'v0.2.0'
    

    第三步:打包静态库

    pod package VideoPlayerLib.podspec --force
    

    在这里插入图片描述
    最终得到两个版本的.a 和.framework 库
    在这里插入图片描述
    这样就完成静态库的打包了,并且打出来的包是支持 armv7 armv7s i386 x86_64 arm64 平台的,如果修改静态库代码,只需要修改版本号,执行pod install ,git add 步骤就能轻松打包了。比脚本还要简单。cocoapods不愧为打包神器!

    遗留:在配置中为了不打断静态库的编译。暂时没有依赖私有库、私有库又包含静态库。依赖了开源库Toast 没有使用。

    感谢:

    Cocoapods 打包framework或者.a静态库
    使用cocoapods打包静态库(依赖私有库,开源库,私有库又包含静态库)

    展开全文
  • Cocoapods 开发并打包静态库

    Cocoapods 作为 OS X 和iOS开发平台的类库管理工具,已经非常完善和强大。这里我们来演示如何创建使用了 CocoaPods 的静态类库以及打包的过程.

    基于 Pod 自动创建

    只需要输入 pod 的 lib 命令即可完成初始项目的搭建,下面详细说明具体步骤,以 XCLogStaticDemo 作为项目名演示。
    1 cd 到一个空文件夹
    2 执行 pod lib create XCLogStaticDemo
    期间确认问题有:

    What language do you want to use?? [ Swift / ObjC ]  
     > ObjC
    
    Would you like to include a demo application with your library? [ Yes / No ]  
     > YES
    
    Which testing frameworks will you use? [ Specta / Kiwi / None ] 
     > None
    
    Would you like to do view based testing? [ Yes / No ]
     > NO
    
    What is your class prefix? 
     > XC

    (3) 打开创建好的 XCLogStaticDemo.podspec 内容修改如下

    #
    # Be sure to run `pod lib lint XCLogStaticDemo.podspec' to ensure this is a
    # valid spec before submitting.
    #
    # Any lines starting with a # are optional, but their use is encouraged
    # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
    #
    
    Pod::Spec.new do |s|
      s.name             = 'XCLogStaticDemo'
      s.version          = '1.0.0'
      s.summary          = 'A short description of XCLogStaticDemo.'
    
    # This description is used to generate tags and improve search results.
    #   * Think: What does it do? Why did you write it? What is the focus?
    #   * Try to keep it short, snappy and to the point.
    #   * Write the description between the DESC delimiters below.
    #   * Finally, don't worry about the indent, CocoaPods strips it!
    
      s.description      = <<-DESC
    TODO: Add long description of the pod here.
                           DESC
    
      s.homepage         = 'https://github.com/name/XCCocoaPodsStaticDemo'
      # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'yourName' => 'yourEmail' }
      s.source           = { :git => 'https://github.com/name/XCCocoaPodsStaticDemo.git', :tag => s.version.to_s }
      # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
    
      # 部署的系统要求
      s.ios.deployment_target = '8.0'
    
      # source core  源码
      s.source_files = 'XCLogStaticDemo/Classes/**/*'
    
      # resource bundles 资源文件
      # s.resource_bundles = {
      #   'XCLogStaticDemo' => ['XCLogStaticDemo/Assets/*.png']
      # }
    
      # header 头文件
      # s.public_header_files = 'Pod/Classes/**/*.h'
      # dependency frameworks  依赖库
      # s.frameworks = 'UIKit', 'MapKit'
      # s.dependency 'AFNetworking', '~> 2.3'
    end

    进入Example文件夹, 执行 pod install, 让项目安装依赖并配置更新
    (5) 在 XCLogStaticDemo/Classes 文件中添加需要的代码:(对应于XCLogStaticDemo.podspec 的 source_files 目录)
    (6) 在 demo 中测试, 打印成功
    (7) 提交本地代码库到 github
    git add .
    git commit -m “install Demo”
    git push origin master
    如果遇到git错误问题,可以参考refusing to merge unrelated histories , 等上传到github上后,打标签
    git tag 1.0.0 (与 XCLogStaticDemo.podspec 的 s.version 对应)
    git push origin 1.0.0
    (9) 创建账号
    pod trunk register 邮箱 联系人 –description=”描述” –verbose
    创建成功会收到邮件,进邮箱验证
    pod trunk me 可查看trunk信息
    (10) 验证类库
    pod lib lint —allow-warnings (忽略错误)
    这里写图片描述
    出现 passed validation 验证成功.
    (11) 然后提交到pod服务器网络:出现红框内容表示成功,
    pod trunk push —allow-warnings
    这里写图片描述

    遇到的坑有:

    (1) [!] {“name”=>[“is already taken”]}, 表示已经有一个重名的公有库存在,重新创建一个公有库,CocoaPods不允许有重名的公有库存在。
    (2) 最后所有的验证都通过了也上传成功了,结果使用pod search仍然搜索不到
    解决办法:
    1、执行 pod setup
    如果最底下会输出setup completed。说明执行pod setup成功。
    2、如果pod search操作还是搜索失败,删除~/Library/Caches/CocoaPods目录下的search_index.json文件。

    rm ~/Library/Caches/CocoaPods/search_index.json

    这里写图片描述

    然后执行:

    pod search XCLogStaticDemo

    这里写图片描述

    打包类库

    需要使用一个cocoapods的插件cocoapods-packager来完成类库的打包。当然也可以手动编译打包,但是过程会相当繁琐。
    安装打包插件
    终端执行以下命令

    sudo gem install cocoapods-packager

    pod搜索
    这里写图片描述

    打包

    命令很简单,执行

    pod package XCLogStaticDemo.podspec --force

    其中–library指定打包成.a文件,如果不带上将会打包成.framework文件。–force是指强制覆盖。最终的目录结构如下
    |____XCLogStaticDemo.podspec
    |____XCLogStaticDemo-1.0.0
    • | |____ios
    • | | |_____XCLogStaticDemo.framework

    pod package XCLogStaticDemo.podspec –library –force
    或者是:
    |____XCLogStaticDemo.podspec
    |____XCLogStaticDemo-1.0.0
    • | |____ios
    • | | |_____libXCLogStaticDemo.a

    使用自己打包的静态库, 新建项目,并将打包的 framework 引入, 执行成功
    这里写图片描述
    这里写图片描述

    项目github

    参考博客:
    1. 使用CocoaPods开发并打包静态库
    2. 一步一步教你使用CocoaPods打包静态库
    3. 细聊 Cocoapods 与 Xcode 工程配置
    4. iOS之使用Cocoapods创建公有仓库踩坑记

    展开全文
  • 打包静态库--包含三方依赖

    千次阅读 2017-08-11 16:46:37
    借助cocoaPods打包有依赖的静态库

    最近公司有个新需求,要将已经写好的一个项目打包成静态库,供本公司及其他公司使用。我们的静态库可能会依赖很多三方库,把这些依赖都一并打包进静态库,包会变得很大、很笨重,同时别人在用你的静态库可能会出现三方依赖重名的冲突。显然将依赖一起打包进静态库不是一个好方式,下面给大家介绍一个不把依赖一同打入包的方式,使用静态库的工程中导入我们静态库中的依赖就可以了:

    先介绍借助Pod的方式

    1. 用Xcode新建一个工程,注意,选择 Cocoa Touch Framework





    2. 点击 TARGETS -> Build Settings -> Mach-o Type,将 Dynamic Library(动态库) 改为 Static Library(静态库)



    3. 该.h文件是自动生成的文件,可以删除



    4. 然后在这个文件夹下拖入准备打包的文件



    拖入后工程目录



    5. 用cocoaPods导入工程的三方依赖(怎么导入这里就不作详细介绍了,相信大家都已经很熟悉了),导入依赖后的工程目录如下,



    6. 配置静态库的头文件




    7. 接下来就是编译打包静态库了,打包的静态库有两种类型,Debug版和Release版,

        Debug版



    command + B 编辑一下,然后点击Products文件夹下的.framework,show in Finder



    Release版



    command + B 编辑一下,然后点击Products文件夹下的.framework,show in Finder,这时候此处就多了个文件夹




    8. 最后就是合并Debug版和Release版为一个静态库,供模拟器和真机都可以使用 

        打开终端使用合并命令:  lipo -create 静态库1路径 静态库2路径 -output 合并的静态库

      这样在桌面就生成一个TestAdHocLib文件,用这个文件替换图中Debug或者Release文件夹中的TestAdHocLib文件即可



    以后就可以将 TestAdhocLibSDK 这个文件夹拖进工程使用





    此种方式打包的静态库并没有将三方依赖一起打入库,用到该静态库的工程导入其的所有依赖,即可使用,然后在用到的地方import一下头文件

    #import <TestAdhocLib/xxxxx.h>


    下面介绍不借助Pod,传统的打包方式


    这种方式只能将静态库中的三方依赖先下载下来,手动导入要打包静态库的工程中,如果这样直接编译,就会把依赖一同打包进静态库,显然这不是我们要的方式。当我们手动导入依赖后,TARGETS -> Build Phases -> Linker Binary With Libraries 下就会有这些依赖,在编译前清空这里的选项,就不会将依赖打包进去。

    还是建议大家使用上面借助Pod的方式哦~ 原因你懂的~毕竟用Pod管理三方比起手动管理会方便很多

    到此为止整个打包静态库的过程就结束了,希望能对大家有所帮助!
    展开全文
  • XCode打包静态库文件

    千次阅读 2015-08-19 14:40:07
    这里以打包rfc3951静态库为例 创建一个静态库工程 命名为librfc3951 将文件夹librfc3951下生成的librfc3951.h、 librfc3951.m文件删除,加入 rfc3951 C++ 代码文件 修改 Product->Scheme-> Edit Scheme下 为 ...
  • 使用CocoaPods开发并打包静态库

    千次阅读 2016-04-13 18:58:19
    使用CocoaPods开发并打包静态库,并解决库类名冲突 不知道大家有没有遇到这种情况,当给一个项目中导入一个静态库的时候,会遇到静态库重复第三方库的错误,这时cocopods的这项技术就派上用场了。该技术通过对引用的...
  • iOS入门之打包静态库

    千次阅读 2017-09-09 13:56:05
    在项目开发中,或多或少的都会使用第三方库,有时候也会将自己项目中独立于业务的相关代码打包成库以...在正式讲解打包.a静态库之前,首先来看一些概念:什么是库?所谓库就是程序代码的集合,是共享程序代码的一种方式
  • 手把手教你使用CocoaPods打包静态库

    千次阅读 2016-08-03 17:46:00
    今天我们就来谈一谈如何使用CocoaPods打包静态库。一般情况下我们使用CocoaPods来管理第三方开源类库,但是我们也有可能存在这样的需求:开发一个用CocoaPods来管理依赖关系的静态库给其他人使用,但是又不想公开源...
  • iOS Xcode打包静态库framework

    千次阅读 2018-08-21 15:48:21
    iOS中.a与.framework的区别 从上面我们可以看出.a 和.framework的区别就是.a+.h+soureFile=.framework,这样的话,我们还是直接封装个.framework比较好。 封装framework步骤 1、打开xcode,新建工程 这里我...
  • 打包SDK静态库

    2019-05-09 18:12:23
    1.修改配置.podspec文件。 2.删除淘宝镜像,增加'gem sources -a https://gems.ruby-china.com/',升级cocoapods...打包.framework类型的静态库或.a类型的静态库。 3.framework类型的静态库和.a类型的静态库的优缺点。
  • 静态库自动打包合并静态库脚本

    千次阅读 2018-01-31 15:06:29
    每次更新sdk都需要重复的在真机下build,在模拟器下build,然后再合并静态库;为了解放双手,尝试着写了个脚本,一步完成以上工作。 #!/bin/bash #要build的target名 target_Name=XXX #编译模式 Release、Debug...
  • Cocoapods作为OS X和iOS开发平台的类库管理工具,已经非常完善和强大。通常我们用pod来管理第三方开源类库,但我们也极有可能会开发一个用pod管理依赖关系的静态类库给其他人使用,而又不愿意公开源...开发静态库(St
  • #linux 打包 静态库

    千次阅读 2013-01-22 20:29:01
    有几个.a的静态库,想打成一个用 先解包成o文件 ar x libaaa.a ar x libbbb.a ar rcs libccc.a *.o ar 命令 用途 维护链接编辑器使用的索引库。 语法 ar [ -c ] [ -l ] [ -g | -o ] [ -s ] [ -v ] ...
  • 一、打包静态库 创建一个名为GenerateStaticLibrary(名称可以自主命名)的静态库工程 删除自动生成的GenerateStaticLibrary.h和GenerateStaticLibrary.m文件 导入或新建静态库的代码(我这里新建了 C 文件和 C++...
  • 通常我们用pod来管理第三方开源类库,但我们也极有可能会开发一个用pod管理依赖关系的静态类库给其他人使用,而又不愿意公开源代码,比如一些SDK,那么就需要打包成.a文件。本文将以一个依赖于ASIHTTPRequest的静态...
  • iOS打包.a静态库步骤

    千次阅读 2016-06-08 14:29:15
    打包静态库流程 1.创建静态库 2.实现类 3.公开.h文件 4.打包模拟器静态库 5.打包真机静态库 6.合并模拟器 和 真机 静态库 7.测试静态库一、前期工作 1、新建.a静态库工程 2、实现需要打包的类 3、添加...
  • iOS打包framework静态库

    2018-01-19 15:15:27
    iOS打包framework静态库 环境环境 Mac: 10.12.6 Xcode: 9.1 1. 创建项目 1.1 新建工程 1.2 添加文件 * 把写好的代码文件拖入到项目里 * 主头文件中导入需要暴露的头文件 1.3 设置Headers ...
  • 一 常用脚本 1 打包脚本 ...脚本如下,下面附上ar 和 ranlib命令参考(命令来自于网络) ALLLIB=*.a FILE=`ls *.a` #原来的解压重命名 for F in $FILE do  ar x $F  OBJ=`ar t $F`  for O in $OBJ  do
  • 怎么使用ar打包静态库

    千次阅读 2016-11-22 10:35:47
    ar -r xxx.a obj/*.o 比如: ar -r libtinyxml.a tinystr.o tinyxml.o tinyxmlparser.o tinyxmlerror.o
  • 0.前言: 尝试制作ida FLIRT签名文件,需要从lib文件中抽取obj文件,于是顺带着把生成lib文件的命令也看了一边。虽然我知道不会有人傻兮兮的放着IDE不用...我们将使用这两个文件打包/解包lib。 2.制作文件: 命
  • 打包生成一个静态库&动态库

    千次阅读 2018-04-07 16:13:57
    静态库和动态库之间不同之处就在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大;动态库(共享库)的代码是在可执行程序运行时被载入...下面打包实现一下静态库: //ad...
  • 静态包,静态库打包

    千次阅读 2016-08-09 16:43:18
    打包静态报的时候需要设置other linker flags ==> 1.-Objc 2.-all_load(打包的项目和使用静态包的项目都要添加)( Xcode里-ObjC, -all_load, -force_load 最近在做一个项目的时候,需要使用到一个第三方,...
  • 强烈建议用脚本打包,这样支持模拟器和真机 第一步:.创建一个shell文件 如图:(下载链接) 第二步:在sdk 相同的文件夹下创建一个新的...第五步:终端查看静态库所支持的架构执行 lipo -info 如图 注意:...
  • 静态库打包教程

    2015-08-27 20:59:38
    1.新建  在工程中New Project,选择Framework &Libray -> CocoaTouchStaticLibray,然后命名; 2.使用lipo命令  编写类文件后,设置Scheme为release,然后分别在模拟器和真机下编译,编译成功后,会在Build/...
  • iOS架构-静态库.a的打包及使用(一) iOS架构-静态库.a的脚本化打包及使用(二) 资源文件主要包括:xib、图片以及其他文件资源(json、string等)。这里主要介绍 xib、图片。其他的资源和图片打包使用类似。 ...
  • layout: post title: pod_lib_create date: 2018-04-26 tag: - CocoaTouchStaticLibrary - CocoaPods site: ...subtitle: 采用 pod lib 开发并打包静态库,比我之前自己搭建的模板更方...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,544
精华内容 18,617
关键字:

命令打包静态库