やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

圧縮されたplistファイルをPythonで読む方法

事の発端は、iOSアプリのAdHocビルドをOTA配布するためのplistファイルを作って欲しいというリクエスト。

複数のビルドターゲットxコンフィギュレーションを使っているプロジェクトなのでbundle-identifierはbuildディレクトリ下のターゲット名.app/Info.plistから取得するしかなく、これが圧縮されていてplistLibで読めなかったのです*1

plutil を使う

OSXにはplutilというコマンドがあり、

$ plutil -convert xml1 -o xmlファイルパス 圧縮plistファイルパス

とすると、-oで指定したファイルにxml形式に展開されたplistファイルが出力されます。あとはこれをplistLibで読むだけ。

ビルドスクリプトへの反映

これを組み込んだビルドスクリプトはGitHubに晒してあります。くやしかったのでTestFlight Upload APIでアップロードするスクリプトも書きました。

nowsprinting/ios-build · GitHub

このスクリプトで扱っている複数のビルドターゲットxコンフィギュレーションの扱いについては、次の記事に書いてありますのでご参考になれば。

複数のTarget/Configurationを持つiOSプロジェクトの構成Tips - やらなイカ?

参考

圧縮されたまま読む方法をググっていたためplutilに辿りつけなかったのですが*2、GitHubのコード検索で見つけたこのプロジェクトのおかげで解決しました

jfoucry/xcodebuild-wrapper · GitHub

*1:plistLibのドキュメントに"sometimes compressed"って書いてあるのに、それをどう回避するかは書かれてなかったのです

*2:老害ですね!