「署名されていないapkファイル」を「GooglePlayに登録する」までの手順

googleplay20141006

外部で開発してもらったapkファイルをGooglePlayにアップロードしようと思ったら弾かれたのでその対処法をメモ。
納品されたapkは署名無しだったのでそのあたりから。環境はWindows7です。

※署名無しのapkは端末側で提供元不明アプリのインストールが許可されていてもインストールできません。

1.証明書(キーストア)を作る
2.apkファイルに署名する
3.zipalignなるものを行う

手順はここに書いてあったものを参考にしました。
http://developer.android.com/intl/ja/tools/publishing/app-signing.html#signing-manually
>>Signing Your App Manually

1.証明書(キーストア)を作る

証明書(.keystoreというファイル)を作るにはjavaのkeytool.exeで行うので、JavaJDKをインストールします。
(以下Pathは通っているものとします)

コマンドラインから

keytool -genkey -v -keystore c:\myapp.keystore -alias myapp -keyalg RSA -keysize 2048 -validity 10000

-alias 部分で入力した myapp(エイリアス名) は後で使うので忘れないように。

コマンドを実行すると何度か入力を求められるので埋めます。

キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
姓名を入力してください。
[Unknown]:myname
組織単位名を入力してください。
[Unknown]:hogehoge-bu fugafuga-ka
組織名を入力してください。
[Unknown]:hogehoge.Inc
都市名または地域名を入力してください。
[Unknown]:sibuyaku
都道府県名を入力してください。
[Unknown]:tokyo
この単位に該当する2文字の国コードを入力してください。
[Unknown]: JP
CN=myname, OU=hogehoge-bu fugafuga-ka, O=hogehoge.Inc, L=sibuyaku, ST
=tokyo, C=JPでよろしいですか。
[いいえ]: はい

ちなみに自分は日本語の環境だったせいか、最後の「yes」の部分を「はい」と入力しループに陥りました。

問題なければ -keystore で指定したキーストアが生成されます。

【重要】このキーストアはアプリをアップデートする際に必要になります。絶対に無くさないようにしましょう。

2.apkファイルに署名する

署名は jarsigner.exe を使います。

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore myapp.keystore -verbose myapp.apk myapp

一番最後の myapp は keytool の -alias で指定した名前を入力します。

これで apkファイルに署名が行われます(上書き)

3.zipalignなるものを行う

zipalign は AndroidSDK に含まれるのですが、どうやら新しいSDKには入っていない様です。

※zipalign を追加する作業でハマりました。詳しくはこちら

zipalign -v 4 myapp.apk myapp_aligned.apk

これでapkの中身がファイルサイズの小さい順に並べ替えられて誰かが(メモリが?)得をするみたい。

ソフトウェア技術ドキュメントを勝手に翻訳 – zipalign

ストアへの登録も上手くいきました。

zipalignが無いので追加>見つからず>あった

これまでは [AndroidSDK]/tools に zipalign.exe が入っていたようなのですが、最新のSDKには入ってないみたい。

zipalignがなくてビルド出来ないようです。

「手動で追加」とあるもののどう追加すれば書いてなかったので探す。

http://stackoverflow.com/questions/24442213/cannot-find-zip-align-when-publishing-app

In Eclipse → Pull Down Menu → Window → Android SDK Manager, check Android SDK Build-tools Rev. 20, then click the Install n package(s)… button to start installing.

とあるので SDK Manager で SDK Build-tools Rev. 20 をインストール。

AndroidSDK/tools を確認・・・無い → ハマる。

別のバージョンいれたり小一時間ごにょごにょした後、ここ↓に追加るのに気づく(汗)

[AndroidSDK]\build-tools\20.0.0\zipalign.exe
※zipalign は Rev.19.1.0 以降に入ってるみたいです

いっそ [AndroidSDK]/tools に移動しようかなと思ったのですが、

Don’t copy the exe from another directory. Use the SDK Manager to install SDK Build tools v20

自分の理解力だと「コピー(移動)するな」なのか「コピーするならSDKから」なのかわからなかったのでとりあえずそのまま使うことにしました。

iPhoneとAndroid両対応で動画配信

iPhoneとAndroid両方で再生できると思っていた動画が
手元のIS03と003SHで再生出来ませんでした。

いくつか試してみたところ、どうやら容量が大きいと
再生できない
ようなので、2MB以下に画質を落としたら
再生出来るようになりました

結局何MB以上がNGなのかわかりませんが、ファイルサイズが
2MB以下であれば今のところIS03や003SHでも再生できています

動画変換は「すーぱー連続動画変換」を使ってます
(アスペクト非3:2の動画を横320pixでトランスコード、約1分半尺)

Transcoding.iniに以下の設定を作成
Command0=””<%AppPath%>\cores\ffmpeg” -y -i “<%InputFile%>” -s 320×214 -vcodec libx264 -r 20 -b 128k -acodec libfaac -ac 1 -ar 44100 -ab 56k -f mp4 “<%OutputFile%>_mid.mp4″”