p_chinのおっぱいブログ

UnityとPerlなど

TestFlightにapkをアップロードする時にInfo.plistやAndroidManifestに日本語が含まれてるから失敗した話

今回はアプリ名を日本語に設定(UnityのPlayerSettingsのProductName欄で)したapkをTestFlightのAPIcurlコマンドで叩いてアップロードしようとして、その事件が起きたのでメモ

具体的にどういう失敗なのか?

  • 試しに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とは

気になったので少し調べた

@kanonjiさんの旧ブログが引っかかった

*UTF-8 (CJK) : CJK (中国語、日本語、韓国語) 用の文字幅に対応している UTF-8 *

という事らしい。