六发左轮修改可以用plist修改吗?

iOS-用PlistBuddy修改Plist文件
用PlistBuddy修改Plist文件
Plist文件是以.plist为结尾的文件的总称. 众所周知, Plist在Mac
OSX系统中起着举足轻重的作用,就如同Windows里面的Registry一样,系统和程序使用Plist文件来存储自己的***/配置/属性等信息。正如可以使用命令行命令来处理大多数系统管理一样,操作Plist文件也是系统提供的。
所幸有PlistBuddy工具,这个工具通过它的简单语法就可以操作嵌套的键值。如果你的系统没有PlistBudy可以***苹果的开发工具。
基本的使用可以查看man文档或者是在线帮助:
$ plistbuddy -h
Command Format:
- Prints this information
- Exits the program, changes are not saved to the file
- Saves the current changes to the file
&&&&Revert
- Reloads the last saved version of the file
[&&/code&Type&]
- Clears out all existing entries, and creates root of
[&&/code&Entry&]
- Prints value of Entry.& Otherwise, prints
&&/code&Entry&
&&/code&Value&
- Sets the value at Entry to Value
&&/code&Entry&
&&/code&Type&
[&&/code&Value&]
- Adds Entry to the plist, with value
&&/code&EntrySrc&
&&/code&EntryDst&
- Copies the EntrySrc property to
&&&&Delete
&&/code&Entry&
- Deletes Entry from the plist
&&/code&file.plist&
[&&/code&Entry&]
- Adds the contents of file.plist to
&&&&Import
&&/code&Entry&
&&/code&file&
- Creates or sets Entry the contents of
&&&&&&&&&&&&&&&
Entry Format:
&&&&Entries
consist of property key names delimited by
colons.& Array items
specified by a zero-based integer index.&
&&&&&&&&:CFBundleShortVersionString
&&&&&&&&:CFBundleDocumentTypes:2:CFBundleTypeExtensions
&&&&&&&&&&&&&&&
&&&&string
&&&&integer
&&&&&&&&&&&&&&&
:CFBundleIdentifier com.apple.plistbuddy
&&&&&&&&Sets
the CFBundleIdentifier property to
com.apple.plistbuddy
:CFBundleGetInfoString string "App version 1.0.1"
&&&&&&&&Adds
the CFBundleGetInfoString property to the plist
:CFBundleDocumentTypes: dict
&&&&&&&&Adds
a new item of type dict to the CFBundleDocumentTypes
:CFBundleDocumentTypes:0 dict
&&&&&&&&Adds
the new item to the beginning of the array
&&&&Delete
:CFBundleDocumentTypes:0 dict
&&&&&&&&Deletes
the FIRST item in the array
&&&&Delete
:CFBundleDocumentTypes
&&&&&&&&Deletes
the ENTIRE CFBundleDocumentTypes array
这里主要解释一下PlistBuddy的几个关键点.
如何定义嵌套的键值:
正如前面说的它使用一种简单的描述方式,上一层的键值在前面,而每个键值之间使用":"符号分隔,比如:本文最初的例子中Software-&Gallery-&OnlineMarketplace表述为:":Software:Gallery:OnlineMarketplace",
第一个":"表示根.
而如果键值的名称包含空格等特殊字符的时候,如同命令行的转义字符一样,使用"/"来转义,比如:
":Software:Gallery:Online/ Marketplace".
PlistBuddy如果不使用"-c"参数,则进入人机交互模式,
"-c"的意思就是执行它后面的命令列表,而命令如果有参数,需要把它们包含在引号中,
plistbuddy -c 'Add :Software:Gallery:Version string "1.0"'
~/Desktop/com.sample.plist
plistbuddy -c "Print" ~/Desktop/com.sample.plist
plistbuddy -c 'Set :Software:Gallery:Version "1.1"'
~/Desktop/com.sample.plist
plistbuddy -c 'Delete :Software:Gallery:Version'
~/Desktop/com.sample.plist
plistbuddy -c "Merge ~/Desktop/Global.plist :Software:Gallery"
~/Desktop/com.sample.plist
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。iOS 脚本修改plist文件 - CSDN博客
iOS 脚本修改plist文件
iOS 项目中多个target编译前修改plist文件某个值
&&&& 目前我的项目是由一份Project多个Target多个shema构成的。因为代码逻辑都是一样的,仅仅是里面的资源和请求接口不一样,所以添加了多个Target.
&&&&&& 项目中用到了JPush, 但是Jpush很坑爹,有一个PushConfig.plist文件,程序运行的时候会读取此文件中的值:
&&&&&& 内容如下:
&&&&&&& 最主要的 APP_KEY 因为不同的Target , APP_KEY值不一样。这样一来每次编译打包的时候,都需要更改此文件.
&&&&&&& 太麻烦了。
&&&&&& 步骤如下:
&&&&&&&&&&&&&&&&&& 1. 存放所有Jpush AppKey的文件,如:JPUSHKEY
&&&&&&&&&&&&&&&&&&&&& 里面存放的key按照 $PRODUCTNAME=$APPKEY这种格式排列
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& 2. shell 脚本一份.& modifyJPushKey.sh
&&&&&&&&&&&&&&&&&& 3. 项目中点中TARGETS,右边选择 Build Phases
&&&&&&&&&&&&&&&&&&& 点击 + (NEW Run Script Build Phase)
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& 点击 Run Script 一栏,下拉展开:
&&&&&&&&&&&&&&&&&&&& 里面可以填写脚本:
&&&&&&&&&&&&&&&&&&& (我为了编写修改脚本便,脚本我拿出来单独写成一份文件。这个 Run Script 里面,就去执行这个写出来的脚本。)
&&&&&&&&&&&&&&&&&&&&& SHELL_PATH=$PROJECT_DIR/modifyJPushKey.sh
&&&&&&&&&&&&&&&&&&&&& chmod +x ${SHELL_PATH}
&&&&&&&&&&&&&&&&&&&&& sh ${SHELL_PATH}
&&&&&&&&&&&&&&&&&&&
&&&&&&&& 展开 Run Script 如图:
&&&&&&&&&&&&&&&&&&& 这时候可以把它(Run Script 这一栏)拖动到前面,以便脚本在合适的时候执行.
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& 1. JPUSHKEY文件如下:& = 号左右的是 PRODUCTNAME
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& =号右边的就是 key值
A_HD=8031cffad446b************
B_HD=0f4f8ff111ba38************
C_HD=e2ef1b1560833******
D_HD=e2******
E_HD=d7c******
F_HD=9b7a1d141e97f0******
G_HD=13c75c512e3feaaf******
2. modifyJPushKey.sh
#!/bin/bash
#productName
PRODUCTNAME=${PRODUCT_NAME}
#JPUSHKEY文件 绝对路径
JPUSHKEY_FILE_PATH=$PROJECT_DIR/******/*******/JPUSHKEY
#PushConfig.plist文件 绝对路径
PushConfig_FILE_PATH=$PROJECT_DIR/******/******/PushConfig.plist
#存放AppKey值
keyString=&&
#根据PRODUCTNAME 查找JPUSHKEY文件中 对应的keyString值
cat ${JPUSHKEY_FILE_PATH} | while read line
productName=${line%%=*}
if [ &${PRODUCTNAME}& == &${productName}& ]; then
keyString=${line#*=}
echo $productName
$keyString
#替换 PushConfig.plist 文件中 appkey的值
sed -i '' &/&key&APP_KEY&\/key&/{ s/\(&string&\).*\(&\/string&\)/\1${keyString}\2/;}& ${PushConfig_FILE_PATH}
就是这样的。
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
本文已收录于以下专栏:
相关文章推荐
#获取 info.plist 文件的版本号
shotBundlRow=$(awk '/CFBundleShortVersionString/ { print}' $infoPlist...
Version:在plist文件中的key是“CFBundleShortVersionString”,和AppStore上的版本号保持一致;
Build:在plist中的key是“CFBund...
终端输入:/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" /Users/achen/Desktop/testBundle/testBundl...
这篇文章是自己通过实践获取,在网上查过很多资料,也走了不上的弯路,由于刚开始学子不久,只是把自己遇到的问题贡献给大家
一,创建文件
//获取路径对象
iOS的存储方式之一----属性列表plist,还是经常见到的,可以很方便的用来管理一些有序的批量数据,特别是用来显示固定的内容到表单上时,不需要在代码中反复地繁琐编写数组,而可以在plist属性列表中进...
这篇文章是自己通过实践获取,在网上查过很多资料,也走了不上的弯路,由于刚开始学子不久,只是把自己遇到的问题贡献给大家
一,创建文件
//获取路径对象
plist文件字典转模型
1.首先定义一个成员变量,存放所需的数据. 即:NSArray *apps
#pragma mark - 重写apps的getter方法
-(NSArray *)apps{
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

参考资料

 

随机推荐