iOS开发技术分享iOS 开发 iOS开发记录

iOS创建大量类似的渠道包

2016-01-22  本文已影响2602人  黄成

iOS创建大量类似的渠道包

何为渠道包

同一个项目源码,但是名字,启动图,bundleid等不一样。同样请求里面也是根据不同bundleid不同的,但是这个在服务器作处理。总体说来,渠道包仅仅是资源不一样,样式相同,源码一致的app。

如何管理

第一种,创建target,给每一个渠道包一个target

一致用到二十来个target的时候,发现这种工作量太大,并不真正合适大量渠道包。如果在target比较少的时候,用这个十分棒。教程附上:玄书

正如他博客中写道的:


优点:

  1. 直观
    一目了然, 可以看到所有已创建的Target醒目的列在Build列表中。每一个Target都有对应的Tagret配置界面可以看到每一个项目配置图标以及Info.plist对应信息。
  2. 灵活性高
    可以根据项目需要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

从上面的字面意思可以理解:

  1. 先引入了pod的config,因为pod的config在依赖中会被用到
  2. 修改显示的名字为hello
  3. 修改bundleid为后面加.hello
  4. app_id 为hello
  5. launchimage和appicon
  6. 证书

2.引入到项目

image

3.使用

首先我们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创建大量渠道包的方式,有问题可以联系我。有更好的方法也希望能提出来学习学习。

github

上一篇 下一篇

猜你喜欢

热点阅读