zoukankan      html  css  js  c++  java
  • ios开发之生成,合成通用静态库

    1 最初在做基于ios系统开发时使用静态库必须单独使用适合于模拟器的静态库 适合于真机的静态库,两个静态库要频繁切换,

    现在,可以使用命令行工具lipo将适用于真机与模拟器的静态库合二为一,操作如下

    user#lipo -create /ospath/libname.a /simulatorpath/libname.a -output /allInOnelibName.a 即可

    用如下命令可以看到合并后静态库支持的cpu架构信息

    user#lipo -info /allInOnelibName.a

    Architectures in the fat file: /Users/ipi/Desktop/libDemoLib_1.a are: armv7 i386

    **这种做法缺点:通用静态库太大

    2 为静态库添加资源:

       在生成静态库时将资源文件放到静态库工程下resources目录下,然后进行编译,但此时不会将资源文件与源码进行打包

       

      两种解决办法:

       a 生成静态库后直接在调用静态库的工程中加入静态库和资源文件,然后一同编译即可

       b 单独建立一个束(bundle),添加所需资源,编译,

       以下代码从自建bundle中提取资源文件:
       

    #define BUNDLE_NAME @ "BundleForLib.bundle"

    #define BUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: BUNDLE_NAME]

    #define BUNDLE [NSBundle bundleWithPath: BUNDLE_PATH]

    NSString * getMyBundlePath( NSString * filename);//获取资源名对应的资源

    NSString* getMyBundlePath( NSString * filename)

    {

       NSBundle * libBundle = BUNDLE ;

      if ( libBundle && filename ){

        NSString * s=[[libBundle resourcePath ] stringByAppendingPathComponent : filename];

        NSLog ( @"%@" ,s);

        return s;

      }

      return nil ;

    }

     **然后替换静态库工程中对应的资源名称为此处定义的函数即可

     **在调用静态库的项目中只需加入静态库,资源束,头文件即可

  • 相关阅读:
    [通信] C# TCP实现多个客户端与服务端 数据 与 文件的传输
    [压缩]C#下使用SevenZipSharp压缩解压文本
    [通信] C#多线程Socket-文件传输
    [算法] N 皇后
    【算法】N Queens Problem
    [Eclipse]
    [C/C++] String Reverse 字符串 反转
    [SQL] 获取 Microsoft SQL Server 2008 的数据表结构
    [WIFI] WIFI 破解(初级)
    Unable to extract 64-bitimage. Run Process Explorer from a writeable directory
  • 原文地址:https://www.cnblogs.com/xuvw/p/2556322.html
Copyright © 2011-2022 走看看