iOS创建大量类似的渠道包
何为渠道包
同一个项目源码,但是名字,启动图,bundleid等不一样。同样请求里面也是根据不同bundleid不同的,但是这个在服务器作处理。总体说来,渠道包仅仅是资源不一样,样式相同,源码一致的app。
如何管理
第一种,创建target,给每一个渠道包一个target
一致用到二十来个target的时候,发现这种工作量太大,并不真正合适大量渠道包。如果在target比较少的时候,用这个十分棒。教程附上:玄书
正如他博客中写道的:
优点:
- 直观
一目了然, 可以看到所有已创建的Target醒目的列在Build列表中。每一个Target都有对应的Tagret配置界面可以看到每一个项目配置图标以及Info.plist对应信息。 - 灵活性高
可以根据项目需要Link需要的类, 根据Target来指定链接不同的类和资源文件, 而不用一口气全部都Link进来。
缺点:
配置相当麻烦,如果希望减少包体积,许多资源文件要重复选择target。新建一些源文件可能随手没勾选options,后面又要找到源码勾选target。
多人协作开发的时候,project.pbxproj会有极大的冲突需要修改。
第二种,使用config来管理每个渠道包
经过了第一种方法的洗礼,在重构的时候我调研了config配置的形式,解决几乎所有我的所有问题,现在已经用入重构和新项目中。
config文件的简单使用教程:(pod依赖管理环境下的使用)
1.新建一个config文件,假设我在config文件中加入如下代码
#include "../../Pods/Target Support Files/Pods-shop/Pods-shop.debug.xcconfig"
DISPLAY_NAME = hello
IDENTIFIER = .hello
APP_ID = hello
LaunchImage = hello_LaunchImage
AppIcon = hello_AppIcon
//:configuration = Debug
//PROVISIONING_PROFILE = 22f0006a-d829-41a2-934f-b789b3b0e7bc
//:configuration = Release
PROVISIONING_PROFILE = 9598b567-999c-465e-b377-757bb5e63db4
从上面的字面意思可以理解:
- 先引入了pod的config,因为pod的config在依赖中会被用到
- 修改显示的名字为hello
- 修改bundleid为后面加.hello
- app_id 为hello
- launchimage和appicon
- 证书
2.引入到项目
image3.使用
首先我们build setting里面可以看到 User-Defined的里面出现了我们定义的这些东西。
修改bundleid:在buildsetting里面PRODUCT_BUNDLE_IDENTIFIER栏目改成xxx.xxx.com${IDENTIFIER} = xxx.xxx.com.hello,其它类似
修改launchimage:bundle setting里面搜索launchimage,替换为${LaunchImage}
修改证书:自动被修改
直接运行即可
4.最后脚本打包
xcodebuild -workspace cheniu_shop.xcworkspace -sdk iphoneos -scheme scheme_your_name -xcconfig "相对目录下的某个.config" -configuration "Release Adhoc" SYMROOT='$(PWD)/build'
xcrun -sdk iphoneos PackageApplication -v "build/Release-iphoneos/scheme_your_name.app" -o "$PWD/build/release-iphoneos/your_name.ipa"
第一个build一个.app出来,第二个打包成.ipa
5.如果需要修改里面style,比如文字颜色,背景图片,可以根据appid或者自己定义的渠道号去加载一个style源文件,读取里面自己定义的参数。
总结:
渠道包在很多公司都会用到,经常被放在一些分发平台上,提供给别人测试或者进行少量分发使用。这里我介绍了有关使用config创建大量渠道包的方式,有问题可以联系我。有更好的方法也希望能提出来学习学习。
网友评论