メモログ

塵が積もって山とならないメモのログ

AppIcon40x40とAppIcon60x60がないというエラー

Cordovaで作成したアプリでアイコンをasset catalogsに変換したら、iTunes Connectで申請したときに下記のようなエラーが発生しました。

1
2
3
4
Icon specified in the Info.plist not found under the top level app wrapper: AppIcon40x40

<!-- more -->
Icon specified in the Info.plist not found under the top level app wrapper: AppIcon60x60

エラーの内容を理解するのに時間がかかりましたが、どうやらビルドしたipaファイルのtop levelにAppIcon40x40とAppIcon60x60がないということらしい。

なので、ipaファイルの展開して中身を確認してみる。

1
2
3
4
mv Foobar.ipa Foobar.zip
unzip Foobar.zip
cd Payload/Foobar.app/
ls -al

たしかに存在しない。AppIcon40x40@2x.pngはあるけど、AppIcon40x40はない…

そして、asset catalogsでアサインしたアイコン(AppIcon)は、ビルドしたipaファイルのInfo.plistの「CFBundleIconFiles」に「AppIcon40x40」のように値が追加される。ゆえに、上述のエラーが返ってくると。

しかし、AppIcon40x40を追加したくても、asset catalogsではRetina用の2xのアイコンしかアサインできない。AppIcon60x60も同じ。asset catalogsにアサインされていないアイコンは、ビルドしたipaファイルには入ってこないので、どうしようもない。

うーん。Deployment Targetも7.0にしているし、AppIcon40x40.pngの出番はないはずなのだけど、何か見落としているのか…

asset catalogsを使ってAppIcon40x40.pngというファイル名でリソースを追加する方法が見つからなかったので、AppIcon40x40.pngファイルを作成して、プロジェクトのResourcesに追加して回避することに…

Cordovaで作成したプロジェクトでasset catalogsに変換した場合は、Resourcesの下に「icons」フォルダ(変換前に使用していたアイコンファイル)が残っているので、icon-40.pngをAppIcon40x40.pngに変更しても回避できます。

うーん。

まあとにかく、これでビルドしたipaファイル(appファイル)にAppIcon40x40.pngが含まれるようになったので、問題を回避することができました。良い方法とは思えないけど。同様の手順でAppIcon60x60の問題も回避できます。

というメモ。

Cordovaプロジェクトをアーカイブしたときにエラー

Cordova/PhoneGapで作成したXcodeのプロジェクトをアーカイブしようとしたときに下記のようなエラーが発生するようになりまして。

1
2
3
4
5
6
7
8
9
10
Stripping /Users/me/Library/Developer/Xcode/DerivedData/AppName-fiikgzftwgndirfiyeacmuhhgnft/Build/Intermediates/ArchiveIntermediates/AppName/IntermediateBuildFilesPath/UninstalledProducts/libCordova.a

<!-- more -->
cd /Users/me/path/to/AppName/platforms/ios/CordovaLib
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -S /Users/me/Library/Developer/Xcode/DerivedData/AppName-fiikgzftwgndirfiyeacmuhhgnft/Build/Intermediates/ArchiveIntermediates/AppName/IntermediateBuildFilesPath/UninstalledProducts/libCordova.a

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip: can't open temporary file: (null) (Bad address)
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip failed with exit code 1

どうもCordovaLibのStrip Linked Productのプロセスで、Strippingするときにtemporary fileを開くところで失敗しているみたい。なので、CordovaLibの「Strip Linked Product」を「No」に設定すると回避できる。

根本的にはtmpディレクトリにアクセスできないのが原因のようなので、/private/tmpのディレクトリのパーミッションを変更すればエラーが発生しなくなる。tmpディレクトリのパーミションを変更した記憶はないのだけど…

1
2
3
cd /private
sudo chmod 777 tmp
sudo chmod +t tmp

ほかの人や他のMacではこのパーミッションであったので、設定自体は問題ないと思いますけど、変えた記憶はないんだよなあ。

というメモ。

input typeで表示されるキーボード

iOSではinputフォームのtypeでキーボードの配置が変わります(Androidは4.2のstock browserでは変わらなかったけど、網羅的には調べていない)。その配置を覚えてるようであまり覚えてない。ので、忘れた時のリファレンスとして。

📖 続きを読む

brew update でエラー

brew updateしたら下記のようなエラーになった。

1
2
3
4
5
6
7
8
9
10
error: Your local changes to the following files would be overwritten by merge:

<!-- more -->
Library/Contributions/brew_bash_completion.sh
Library/Contributions/brew_fish_completion.fish
Library/Contributions/manpages/brew.1.md
Library/ENV/4.3/cc
Library/Formula/ace.rb
Library/Formula/afflib.rb
Library/Formula/android-sdk.rb

調べてみたらhomebrewのbrew updateでこけた件 - CubicLouveと同じことで、homebrewで内部的に使用しているgitに変更がはいっていて、エラーになっている。特に変更した記憶はないけど。snez commentedの内容に従うのがよさそう。

1
2
3
4
cd /usr/local
git reset head --hard
git clean -f
brew update

わたしは何となくstashでしましたけど。homebrew関連ファイルの場所は brew --prefix で分かります。

cd `brew --prefix`
sudo git stash --include-untracked
sudo brew update
sudo git stash clear

というメモ。

Date.parseとタイムゾーン

Date.parse(‘1999-07-07’)を実行すると、値は931305600000とUTCのタイムゾーンで解釈されるのに対して、Date.parse(‘1999/07/07’)を実行すると、値は931273200000とJSTのタイムゾーンで解釈される。あ、ローカルの時間がJSTの場合。現時点(Firefox 24、Chrome 31)

📖 続きを読む