`
zxs19861202
  • 浏览: 915603 次
  • 性别: Icon_minigender_1
  • 来自: 湖北—》上海
社区版块
存档分类
最新评论

iphone 静态库读取资源文件

    博客分类:
  • ios
阅读更多

在制作iphone静态库中并不能包含资源文件,虽然我们将资源文件(.png文件)拷贝到静态库工程中,但实际上这些.png是不会添加到target的,也就是说编译结果中并不包含这些资源,因此如果此时调用静态库,所有的资源(字符串、图片)都是缺失的。
我们可以把资源建立成单独的束(Bundle)。
新建工程“ Mac OS X -> Framework & Library -> Bundle ”,命名为:yhyLibraryBundle。
然后把上面.png文件拷进Resouces中去。编译,生成yhyLibraryBundle.bundle文件。
返回静态库工程,新建一个类:Utils 。
编辑Utils.h:
[pre]

    #define MYBUNDLE_NAME @ "yhyLibraryBundle.bundle"  
  1. #define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME]  
  2. #define MYBUNDLE [NSBundle bundleWithPath: MYBUNDLE_PATH]  
  3. NSString * getMyBundlePath( NSString * filename);  

[/pre]编辑Utils.m:
[pre]

    #import "Utils.h"  
  1. NSString* getMyBundlePath( NSString * filename)  
  2. {  
  3. NSBundle * libBundle = MYBUNDLE ;  
  4. if ( libBundle && filename ){  
  5. NSString * s=[[libBundle resourcePath ] stringByAppendingPathComponent : filename];  
  6. NSLog ( @"%@" ,s);  
  7. return s;  
  8. }  
  9. return nil ;  
  10. }  

[/pre]函数getMyBundlePath可以取得束yhyLibraryBundle中具体资源的绝对文件路径,如:
[pre]

    /Users/kmyhy/Library/Application Support/iPhone Simulator/4.2/Applications/8213652F-A47E-456A-A7BB-4CD40892B66D/yhyLibTest.app/    yhyLibraryBundle.bundle/Contents/Resources/radio.png  

[/pre]同时,修改CheckButton.m中的代码,导入Utils.h头文件,把其中获取图片的代码由imageNamed修改为imageWithContentsOfFile,如:
[pre]

    [ icon setImage :[ UIImage imageWithContentsOfFile : getMyBundlePath ( checkname )]];  

[/pre]即通过绝对路径读取图片资源。

 

在运行生成.a文件之后不能通用模拟器和真机,通用的做法为:

 

可以使用命令行工具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

 

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

分享到:
评论

相关推荐

    ios libjpeg .a静态库

    在压缩包文件"iphone-build"中,可能包含了预编译好的针对iOS设备的libjpeg .a静态库,以及可能的头文件和其他相关资源。为了使用这些库,开发者需要将它们添加到自己的Xcode项目中,并确保项目的架构设置与库相匹配...

    【转】如何制作,编译,使用静态编译库

    1. **编写源代码**:首先,你需要编写或获取要制作成静态库的源代码。这可以是一个C、C++或其他支持静态库的语言的项目。 2. **预处理与编译**:使用编译器(如GCC或Clang)对源代码进行预处理和编译,生成目标文件...

    iphone之使用讯飞sdk写的一个语音识别功能

    1. 在Xcode项目中引入讯飞SDK的.a静态库文件和相关的资源文件。 2. 在Info.plist文件中添加必要的权限,比如使用麦克风的权限,通常需要添加NSMicrophoneUsageDescription键,并设置相应的描述。 3. 初始化讯飞SDK,...

    iOS制作framework静态库图文教程

    在iOS开发中,有时我们需要将一组相关功能封装成一个库,以便在...此外,你还可以参考相关文章了解更多关于`.a`静态库、`.framework`静态库以及`.bundle`资源包的创建和使用方法,以及静态库和动态库的区别和使用场景。

    81、jQuery模拟iPhone获取WiFi网络列表代码

    【标题】:“81、jQuery模拟iPhone获取WiFi网络列表代码”这一主题主要涉及的是使用JavaScript库jQuery来模拟iOS设备上获取WiFi网络列表的功能。在Web应用中,有时我们需要模拟原生移动设备的一些特性,比如在网页上...

    iphone游戏可发

    - **商用许可**:允许开发者在iOS平台上使用静态库或直接使用源代码进行商业开发,无需公开自己的源代码。 - **实际案例**:目前已经有超过100款基于Cocos2D-iPhone的游戏在App Store上成功发布。 #### 八、移动...

    ffmpeg ios 编译好的 库文件 支持i386 arm7 arm6

    - 链接库:在"Link Binary With Libraries"部分,添加FFmpeg的动态库或者静态库。 - 头文件搜索路径:设置"Header Search Paths",使Xcode能找到FFmpeg的头文件。 4. 使用FFmpeg API: 通过引入FFmpeg的头文件,...

    XCode 15.3 编译私有库 报错问题

    1. **更新静态库**:联系库的作者,获取最新版本,确保与Xcode 15.3兼容。 2. **配置Project Settings**:检查项目的Build Settings,确保 Architectures 和 Valid Architectures 设置正确,兼容目标设备。 3. **...

    新浪微博 iPhone 源码

    1. **SDK框架**:通常会有一个动态库(.dylib)或静态库(.a)文件,这是实际运行在iOS应用中的微博功能核心。 2. **头文件(.h)**:提供了对外的API接口,开发者通过导入这些头文件来调用SDK提供的功能。 3. **...

    ffmpeg 2.3.2 for iOS i386/armv7/armv7s

    - **静态库**:将库的代码直接链接到应用程序中,生成的可执行文件体积较大,但运行时不需要额外的库文件,适合资源有限的移动设备。 - **动态库**:运行时才加载到内存,多个应用程序可以共享同一份库,节省存储...

    iphone-app-master.zip

    首先,从项目名称"iphone-app-master"我们可以推测,这是一个主分支的iOS应用程序项目,通常包含了完整的源代码、资源文件以及项目的配置信息。这为我们分析和学习iOS开发提供了全面的视角,可以了解从项目结构到...

    iPhone 美化软件 iBeauty v2013.7.26.0

    其次,丰富的壁纸库提供了海量高清壁纸,无论是静态还是动态,都能满足用户对视觉效果的追求。再者,图标重绘功能让原始的App图标变得更具个性,可以随心所欲地改变应用程序的外观。最后,小部件设计则为用户提供了...

    iphone3开发基础教程

    第16章 iPhone照相机和照片库 386 16.1 使用图像选取器和UIImagePicker-Controller 386 16.2 实现图像选取器控制器委托 387 16.3 实际测试照相机和库 389 16.3.1 设计界面 390 16.3.2 实现照相机视图控制器 390 16.4...

    live555编译需要的文件

    4. **编译源码**:运行`make`命令,编译源代码,这将生成所需的静态或动态库文件。 5. **链接应用**:将编译好的live555库链接到你的应用程序中,以便使用其提供的功能。 6. **测试和调试**:运行测试用例以确保...

    DELPHI 扫二维码 FOR IOS

    1. **libzbar.a**:这是一个静态库文件,通常用于链接到 Delphi 项目中。ZBar 是一个开源的二维码解码库,它提供了读取多种条形码和二维码格式的能力,包括 QR Code、Code 128、Code 39 等。 2. **Barcode....

    PJSip2.9的编译文件

    这将生成适用于iOS的静态库或动态库文件。 5. **集成到你的应用**:将编译好的PJSIP库添加到你的iOS项目中,设置链接器路径,确保所有依赖项都被正确引用。你可能还需要配置项目的Info.plist文件,以允许网络访问和...

    ios源码Last.fm的官方iPhone应用程序:支持500多万首音乐.zip

    7. `Resources`目录:图片、音频文件、本地化字符串等静态资源。 8. `Pods`或`Frameworks`:依赖的第三方库或系统框架。 9. `Tests`目录:单元测试代码,用于验证代码功能的正确性。 10. `Assets.xcassets`:图标和...

Global site tag (gtag.js) - Google Analytics