您的位置:首页 > 移动开发 > IOS开发

IOS插件化开发之bundle

2013-03-05 11:32 169 查看
IOS插件开发最重要的一个技术点就是bundle的应用。一共有两种方式来完成这个目的,分别是直接构建bundle工程和在普通IOS工程中添加bundle target。【以下内容以xcode3为例】

一、构建工程

1、直接构建bundle工程

根据网上资料,没有提到bundle用于IOS(用于MAC),并且在新建工程时也没有IOS bundle的选项。因而,要直接构建,需要先选择构建MAC bundle,然后修改配置来达到这一目的。

首先,构建一个MAC bundle工程,如下所示:



步骤完成后,进入工程主界面。双击target,打开构建配置界面,将使用的SDK由MAC的变为IOS的(别忘了将Configuration项改为“All Configurations”):



关闭此界面,删除External Frameworks and Libraries下面的framework,添加UIKit.framework和Foundation.framework。

然后向工程中添加自己所需的源文件就可以了。

2、在普通IOS工程中添加bundle target

新建一个IOS工程,在主界面右击Groups&Files中的任一项,如下选择:





完成后,xcode会自动打开配置界面,搜索“app”,将“other linker flags”和"GCC_PREFIX_HEADER"的值删除(很好找,粗体)。

关闭配置界面,将bundle希望包含的资源拖入Copy Bundle Resources,将希望编译的源文件拖入Compile Sources,将希望链接的库拖入Link Binary With Libraries。完成。

二、一些细节

1、principalClass

由于插件外对于插件的内部实现应该尽量少的了解,达到较好的封装,因而,根据上一篇文章已经论述的,插件内外通过协议进行通信。而principalClass无疑是一个很好的媒介。代码如下:

Class aClass = [aBundle principalClass];

id anInstance = [[aClass alloc] init];


关于这个类的设置,只要找到bundle的plist,添加一个Key,在下拉列表中找到Principal class,并将你所希望的类名设为value就可以了。

2、证书

在模拟器上跑时,以上步骤足够了。但是,当在iphone真机上下载bundle并运行时,程序会coreDump。这是因为xcode3无法正确给bundle打入证书(xcode4 不详)。通过以下步骤对其进行更正:

在bundle的target上点击右键-Add-New Build Phase->New Run Script Build Phase

添加如下命令:

codesign -fs "iPhone Developer" ${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}

其中,iPhone Developer即为打包证书使用者。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: