使用脚本.sh加速 App 开发
2017-08-08 本文已影响38人
BlessNeo
1.iOS 在系统设置中展示 App 版本,Build 等信息
某日闲的无聊,玩儿手机无意间发现一件在 iOS 系统设置中有趣的事儿。别人家的 App 都是这个样子的
简书是这个样子

好奇下面这些信息是怎么来的。我又看了其他的 App,发现有的更是强大。
|
|
|
---|
Google 了一下,原来是 Setting.bundle
的作用。下面就介绍一下如何简单的使用 Setting.bundle
实现简书的效果。
1.在项目中添加 Setting.bundle
文件


New File...
的时候注意下添加的路径,下面编写脚本需要用到,建议直接根目录即可。
2.编辑 Root.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Title</key>
<string>版本信息</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<string>-</string>
<key>Key</key>
<string>version_preference</string>
<key>Title</key>
<string>Version</string>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
</dict>
<dict>
<key>DefaultValue</key>
<string>-</string>
<key>Key</key>
<string>build_preference</string>
<key>Title</key>
<string>Build</string>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
3.修改 Version 和 Build 的值
有两种方法,一种是通过代码的方法。
在
AppDelegare.m
didFinishLaunchingWithOptions
方法或者需要的地方添加以下代码
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
[[NSUserDefaults standardUserDefaults] setObject:version
forKey:@"version_preference"];
NSString *build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
[[NSUserDefaults standardUserDefaults] setObject:build
forKey:@"build_preference"];
推荐使用脚本自动设置 Version 和 Build 的值。
4.编辑脚本
#获取Bundle Version
version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}")
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue ${version}" "${PROJECT_DIR}/${PROJECT_NAME}/Settings.bundle/Root.plist"
#获取Build
Build=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:2:DefaultValue ${Build}" "${PROJECT_DIR}/${PROJECT_NAME}/Settings.bundle/Root.plist"
5.配置脚本
如下图所示添加一个 Run Script

复制脚本内容到如下位置

运行工程,然后去 iOS 系统设置查看变化(可能会出现延迟,可以尝试杀掉系统设置重新查看)。