在制作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"
- #define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME] #define MYBUNDLE [NSBundle bundleWithPath: MYBUNDLE_PATH]
- NSString * getMyBundlePath( NSString * filename);
[/pre]编辑Utils.m:
[pre]
- #import "Utils.h"
- NSString* getMyBundlePath( NSString * filename) {
- NSBundle * libBundle = MYBUNDLE ; if ( libBundle && filename ){
- NSString * s=[[libBundle resourcePath ] stringByAppendingPathComponent : filename]; NSLog ( @"%@" ,s);
- return s; }
- return nil ; }
[/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
**这种做法缺点:通用静态库太大
相关推荐
在压缩包文件"iphone-build"中,可能包含了预编译好的针对iOS设备的libjpeg .a静态库,以及可能的头文件和其他相关资源。为了使用这些库,开发者需要将它们添加到自己的Xcode项目中,并确保项目的架构设置与库相匹配...
1. **编写源代码**:首先,你需要编写或获取要制作成静态库的源代码。这可以是一个C、C++或其他支持静态库的语言的项目。 2. **预处理与编译**:使用编译器(如GCC或Clang)对源代码进行预处理和编译,生成目标文件...
1. 在Xcode项目中引入讯飞SDK的.a静态库文件和相关的资源文件。 2. 在Info.plist文件中添加必要的权限,比如使用麦克风的权限,通常需要添加NSMicrophoneUsageDescription键,并设置相应的描述。 3. 初始化讯飞SDK,...
在iOS开发中,有时我们需要将一组相关功能封装成一个库,以便在...此外,你还可以参考相关文章了解更多关于`.a`静态库、`.framework`静态库以及`.bundle`资源包的创建和使用方法,以及静态库和动态库的区别和使用场景。
【标题】:“81、jQuery模拟iPhone获取WiFi网络列表代码”这一主题主要涉及的是使用JavaScript库jQuery来模拟iOS设备上获取WiFi网络列表的功能。在Web应用中,有时我们需要模拟原生移动设备的一些特性,比如在网页上...
- **商用许可**:允许开发者在iOS平台上使用静态库或直接使用源代码进行商业开发,无需公开自己的源代码。 - **实际案例**:目前已经有超过100款基于Cocos2D-iPhone的游戏在App Store上成功发布。 #### 八、移动...
- 链接库:在"Link Binary With Libraries"部分,添加FFmpeg的动态库或者静态库。 - 头文件搜索路径:设置"Header Search Paths",使Xcode能找到FFmpeg的头文件。 4. 使用FFmpeg API: 通过引入FFmpeg的头文件,...
1. **更新静态库**:联系库的作者,获取最新版本,确保与Xcode 15.3兼容。 2. **配置Project Settings**:检查项目的Build Settings,确保 Architectures 和 Valid Architectures 设置正确,兼容目标设备。 3. **...
1. **SDK框架**:通常会有一个动态库(.dylib)或静态库(.a)文件,这是实际运行在iOS应用中的微博功能核心。 2. **头文件(.h)**:提供了对外的API接口,开发者通过导入这些头文件来调用SDK提供的功能。 3. **...
- **静态库**:将库的代码直接链接到应用程序中,生成的可执行文件体积较大,但运行时不需要额外的库文件,适合资源有限的移动设备。 - **动态库**:运行时才加载到内存,多个应用程序可以共享同一份库,节省存储...
首先,从项目名称"iphone-app-master"我们可以推测,这是一个主分支的iOS应用程序项目,通常包含了完整的源代码、资源文件以及项目的配置信息。这为我们分析和学习iOS开发提供了全面的视角,可以了解从项目结构到...
其次,丰富的壁纸库提供了海量高清壁纸,无论是静态还是动态,都能满足用户对视觉效果的追求。再者,图标重绘功能让原始的App图标变得更具个性,可以随心所欲地改变应用程序的外观。最后,小部件设计则为用户提供了...
第16章 iPhone照相机和照片库 386 16.1 使用图像选取器和UIImagePicker-Controller 386 16.2 实现图像选取器控制器委托 387 16.3 实际测试照相机和库 389 16.3.1 设计界面 390 16.3.2 实现照相机视图控制器 390 16.4...
4. **编译源码**:运行`make`命令,编译源代码,这将生成所需的静态或动态库文件。 5. **链接应用**:将编译好的live555库链接到你的应用程序中,以便使用其提供的功能。 6. **测试和调试**:运行测试用例以确保...
1. **libzbar.a**:这是一个静态库文件,通常用于链接到 Delphi 项目中。ZBar 是一个开源的二维码解码库,它提供了读取多种条形码和二维码格式的能力,包括 QR Code、Code 128、Code 39 等。 2. **Barcode....
这将生成适用于iOS的静态库或动态库文件。 5. **集成到你的应用**:将编译好的PJSIP库添加到你的iOS项目中,设置链接器路径,确保所有依赖项都被正确引用。你可能还需要配置项目的Info.plist文件,以允许网络访问和...
7. `Resources`目录:图片、音频文件、本地化字符串等静态资源。 8. `Pods`或`Frameworks`:依赖的第三方库或系统框架。 9. `Tests`目录:单元测试代码,用于验证代码功能的正确性。 10. `Assets.xcassets`:图标和...