TestFlightにapkをアップロードする時にInfo.plistやAndroidManifestに日本語が含まれてるから失敗した話
今回はアプリ名を日本語に設定(UnityのPlayerSettingsのProductName欄で)したapkをTestFlightのAPIをcurlコマンドで叩いてアップロードしようとして、その事件が起きたのでメモ
具体的にどういう失敗なのか?
- 試しにAndroidManifestに日本語が含まれてるapkをcurlコマンドに-vオプションを付けて実行してみたログが以下になる(少しハショってる)
curl -v http://testflightapp.com/api/builds.json \ -F file=@/Users/pchin/oppai/dekai/fugu.apk \ -F api_token='fugufugufugufugufugufugufugufugufug' \ -F team_token='oppaioppaioppaioppaioppaioppaioppai' \ -F notes="build by fugu" \ -F notify=True \ -F distribution_lists='macopy' * About to connect() to testflightapp.com port 80 (#0) * Trying 110.173.143.147... connected * Connected to testflightapp.com (110.173.143.147) port 80 (#0) > POST /api/builds.json HTTP/1.1 > Host: testflightapp.com > Accept: */* > Expect: 100-continue > Content-Type: multipart/form-data; boundary=----------------------------dbee02dceeab > < HTTP/1.1 100 Continue < HTTP/1.1 400 BAD REQUEST < Server: nginx < Date: Wed, 18 Sep 2013 13:11:57 GMT < Content-Type: text/plain < Transfer-Encoding: chunked < Connection: keep-alive < Vary: Authorization, Cookie < * Connection #0 to host testflightapp.com left intact * Closing connection #0 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)%
'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)%
このエラーは何なのか
- エラー自体をぐぐると、pythonのエラーの記事しか出て来ない(Testflight側のpythonのエラー?)
- 0xe3はUTF-8のCJKの1バイト目らしい
- 2013年の8月中旬からtestflightでInfo.plistまたはAndroidManifestに日本語が含まれるとアップロードがこける事象が良く起こってるらしい
というのを@acidlemon先生から助言頂いて、何とか解決出来た。
UTF-8のCJKとは
気になったので少し調べた
*UTF-8 (CJK) : CJK (中国語、日本語、韓国語) 用の文字幅に対応している UTF-8 *
という事らしい。