美文网首页IOS开发OC&iOS
iOS 动态framework资源替换(可用于自动打包)

iOS 动态framework资源替换(可用于自动打包)

作者: 6a948902fef0 | 来源:发表于2015-12-28 14:41 被阅读1186次

    用于iOS8以上的appStore、越狱包的动态资源替换自动打包。可以免去重复性的源文件编译打包过程。

    • 参数说明

    dynamic 动态库项目
    dynamic.framework 动态库
    demo demo项目

    • 动态framework Build Settings设置说明

    dynamic的Build Settings:
    1.Dynamic Library Install Name Base: @rpath
    2.Dynamic Library Install Name:
    $(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)
    会显示为:@rpath/dynamic.framework/dynamic
    作用为编译生成的动态库文件中,会保存对应的install name信息。
    3.Link With Standard LibrariesYes;该项可以让dynamic无需引入基础官方库,但是需要在dynamic项目中引入其他动态库
    4.Mach-O Type: Dynamic Library
    ** demo的Build Settings:**
    1.Run Path search paths:@executable_path/Frameworks
    编译完成后,会将path参数的信息保存到demo的目标文件的RPATH中, 程序运行的时候,会在RPATH指定的路径下,查找动态库的install name,并加载对应binary。
    2.将dynamic.framework加入到demo->General->Embedded Binaries,编译后会将dynamic.framework作为资源添加到@executable_path/Frameworks中。

    • app包中需要替换及修改的资源

    1.dynamic.framework :Payload/demo.app/Frameworks/
    2.GYSDK配置文件SDKData:Payload/demo.app/
    3.删除原渠道的bundle包:Payload/demo.app/
    4.添加当前渠道的bundle包::Payload/demo.app/
    5.替换开始图片及游戏图标
    6.修改Info.plist中的相关内容为当前渠道信息:

    Bundle display name --- CFBundleDisplayName 设置程序安装后显示的名称。应⽤程序名称限制在10-12个字符,如果超出,将被显示缩写名称。
    Executaule dile -- CFBundleExecutable 程序安装包的名称
    Bundle identidier --- CFBundleIdentidier 应用唯一标识字符串
    Bundle name --- CFBundleName 产品名称
    Bundle versions string, short --- CFBundleShortVersionString ⾯向用户市场的版本字符串
    Bundle version --- CFBundleVersion 应⽤程序版本号,每次部署应用程序的一个新版本时, 将会增加这个编号,在app store上用的。
    
    #shell plist操作
    #添加
    /usr/libexec/PlistBuddy -c 'Add :Software:Gallery:Version string "1.0"' ~/Desktop/com.sample.plist
    #输出
    /usr/libexec/PlistBuddy -c "Print" ~/Desktop/com.sample.plist
    #修改
    /usr/libexec/PlistBuddy -c 'Set :Software:Gallery:Version "1.1"' ~/Desktop/com.sample.plist
    #删除
    /usr/libexec/PlistBuddy -c 'Delete :Software:Gallery:Version' ~/Desktop/com.sample.plist
    #合并
    /usr/libexec/PlistBuddy -c "Merge ~/Desktop/Global.plist :Software:Gallery" ~/Desktop/com.sample.plist
    
    • 打包工具替换思路

    由配置文件记录每个渠道的资源文件
    打包工具读取app包中SDKData的旧渠道标识
    用旧渠道标识读取配置文件获取该渠道的所有资源
    删除app包中旧渠道资源
    创建新渠道的app图标和启动图片
    将新渠道的资源文件复制到app包中
    修改app包中的Info.plist为新渠道信息

    • 参考资料

    @rpath,@loader_path,@executable_path说明

    相关文章

      网友评论

        本文标题:iOS 动态framework资源替换(可用于自动打包)

        本文链接:https://www.haomeiwen.com/subject/imkyhttx.html