AppInventorで作成したアプリをAndroid Marketに公開する方法



ついにAppInvenorで作成したアプリをAndroid Marketに公開する方法をGetしました。
コマンドプロンプトを開けるぐらいのスキルしかない自分レベルでもわかるように(努力し)書いてみましたのでどうぞ。

popos
ついにAppInventorで作成したアプリがAndroid Marketに公開し全世界デビュー!?

追記:コマンドプロンプトを使わずワンクリックで変換できるツールを発見しました。
AppInventorで作成したAPKを簡単にAndroid Marketに変換できるTool発見「Automating conversion of App Inventor apk to Android Market」

1・必要なもののインストールおよびPATHの設定

いるものをダウンロードするのと、コマンドプロンプトだからPATHの設定がいりますので設定を。

<いるもの>
・JAVA JDKJRE (2ついるから注意してください。JDKは何もないタイプで良いとおもいます)
Android SDK (installerのタイプでOK)
APK Tool (Win環境ならapktool_install_windowsとapktool xxxの2つをダウンロード)
・AppInventorで作成したアプリ(apk拡張子で、Download to PCボタンで出力したやつ)
・コマンドプロンプト

<インストール>
JDK/JRE/Android SDKはインストーラーどおりにしたがってください。
APKTOOLはフォルダを作成し、2つのファイルを解答し同一フォルダに入れてください。

<PATHの設定>
マイコンピュータ右クリック→システムのプロパティから詳細設定タブの環境変数を選択してください。
システム環境変数のPATH変数に対象のディレクトリ書きこんでください。(複数入れることになるので、「;」を入れて次のディレクトリを入れてください)

JRE(Binのディレクトリを):C:\Program Files (x86)\Java\jre6\bin
JDK(Binのディレクトリを):C:\Program Files (x86)\Java\jdk1.6.0_23\bin
AndroidSDK(toolsのディレクトリを):C:\Program Files (x86)\Android\android-sdk-windows\tools
APKTOOL(APktoolのあるディレクトリ):C:\apktool

※当方の環境なのでUserによって異なります。ApktoolはCディスクにフォルダをつくってみました。

なので、全部つなげるとこんな感じですね。
C:\apktool;C:\Program Files (x86)\Android\android-sdk-windows\tools;C:\Program Files (x86)\Java\jdk1.6.0_23\bin;C:\Program Files (x86)\Java\jre6\bin

あと、今回AppInventorで作成したアプリの場所は「C:\popo」内に置いた・AppInventorで作成したアプリ名はNENPI.apkとして説明します。

それとコマンドプロンプトを入力したときに
「hogehogeは、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
がでた場合、PATHの設定が違っている可能性大です!

2・全体の流れ

(1)デコンパイルする。

(2)AndroidManifest.xmlを修正する。

(3)コンパイルする。

(4)署名をつける

(5)Android Marketに公開できるAPKに修正する

ぽ・ぽ・ぽ・ぽ~んの4ステップで完成します。

また、署名ファイル(keystore)を作成していない方は、自分のアプリだ!という証明となるkeystoreを作成する必要がありますのでご注意を。→つくりかたを解説したページはこちらから

3・デコンパイルする。

AppInventorで作成したアプリは、manifest.xmlの内容がMarketに公開するには不足している部分があります。デコンパイルすることにより作られたアプリの中身が出てくる。

まず、デコンパイルするためにコマンドプロンプト(cmd)を開く。

Appinventorで作成したアプリの場所を指定します。「cd C:\popo 」

apktoolで対象のファイルを指定「apktool d -s NENPI.apk」(apktool <Action> -s  <apkの場所>)
※dはDecodeのdです。

そうすると、popoフォルダ内に、NENPIというフォルダが作られます。
このフォルダの中身がデコンパイルされた内容=アプリの中身を示す。

4・AndroidManidest.xmlを修正する。

デコンパイルされたフォルダの中に、AndroidManifest.xmlが存在します。
これの中身をMarketで公開できるように修正しましょう!。
今回はとりあえず公開するのを目的とするため、最低限の修正内容とします。

AndroidManifest.xmlを開く(メモ帳で多分OK。ダメならお好きなNotePadで!)

<元内容>

<?xml version=”1.0″ encoding=”UTF-8″?>
<manifest package=”appinventor.ai_rairaiken.NENPI”
xmlns:android=”http://schemas.android.com/apk/res/android”>
<uses-permission android:name=”android.permission.INTERNET” />
<uses-sdk android:minSdkVersion=”3″ />
<application android:label=”NENPI” android:icon=”@drawable/ya” android:debuggable=”true”>
<activity android:name=”.Screen1″ android:configChanges=”keyboardHidden|orientation”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”com.google.devtools.simple.runtime.components.android.ListPickerActivity” android:configChanges=”keyboardHidden|orientation” />
<activity android:name=”com.google.devtools.simple.runtime.components.android.WebViewActivity” android:configChanges=”keyboardHidden|orientation”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
</intent-filter>
</activity>
</application>
</manifest>

もともとの内容に対し、以下の内容を修正・追記してください
1・android:debuggable=”true”の部分を消去する。
2・android:versionCode = “1″ android:versionName = “1.0
を追加してください。

<変更後>

<?xml version=”1.0″ encoding=”UTF-8″?>
<manifest package=”appinventor.ai_rairaiken.NENPI”
android:versionCode = “1″
android:versionName = “1.0

xmlns:android=”http://schemas.android.com/apk/res/android”>
<uses-permission android:name=”android.permission.INTERNET” />
<uses-sdk android:minSdkVersion=”3″ />
<application android:label=”NENPI” android:icon=”@drawable/ya”>
<activity android:name=”.Screen1″ android:configChanges=”keyboardHidden|orientation”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”com.google.devtools.simple.runtime.components.android.ListPickerActivity” android:configChanges=”keyboardHidden|orientation” />
<activity android:name=”com.google.devtools.simple.runtime.components.android.WebViewActivity” android:configChanges=”keyboardHidden|orientation”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
</intent-filter>
</activity>
</application>
</manifest>

保存して完了です!

5・コンパイルする。

それではもう一度コマンドプロンプト(cmd)を開きます。

Appinventorで作成したアプリの場所を指定します。「cd C:\popo 」

apktoolで対象のファイルを指定と保存先名を入力します。
「apktool b NENPI new_NENPI.apk」
(apktool <Action> <中身のディレクトリ名><コンパイルされたapkの保存名称>)
※bはbuildのbです。

そうするコンパイルされたapkファイル(new_NENPI.apk)が生成されます。

6・署名をくっつける

keystoreファイルを「popo」フォルダと同じ場所に置きます。
※今回はmy-release-key.keystoreをkeystoreファイルとします。

コマンドプロンプト(cmd)を開く。

Appinventorで作成したアプリの場所を指定します。「cd C:\popo 」

署名をApkファイルにくっつけます
jarsigner.exe -verbose -signedjar new_nenpi_signed.apk -keystore my-release-key.keystore new_nenpi.apk  aliasname

(jarsigner.exe -verbose -signedjar <署名付ファイルの名前> -keystore <keystoreのファイル名> <署名をひっつけるapkファイル名> aliasname)

ちょっと難しいけどこんな感じです。

7・Android Marketに公開できるAPKに修正する

さいごにこの処理を行えばできるようになります。

またまたコマンドプロンプト(cmd)を開きます。

Appinventorで作成したアプリの場所を指定します。「cd C:\popo 」zipalign -v 4 new_nenpi_signed.apk new_nenpi_signed_aligned.apk

「zipalign -v 4 <署名をくっつけたAPK名> <最後の処理を行ったあと保存するAPKのファイル名>」

これで生成されたファイル(new_nenpi_signed_aligned.apk)をAndroid Marketに公開すればOKです。

長かったけど公開できるAPKファイルになりました~、これでアップロードを完了させれば念願のAndroidMarketデビューです!!やったね!

Android Marketへの公開方法(アップロード・設定)はこちらのページがわかりやすいです
http://www.taosoftware.co.jp/android/market/market_start.html

//元ページはこちらです。
http://www.androidworld.it/forum/app-inventor-91/%5Bhow-%5D-publish-app-created-app-inventor-android-market-4597/

そして、名古屋Androidつくる部 部長の@gabuさん やりかたを教えていただき本当にありがとうございました。

特集:AppInventorをつかいこなすへ

あわせて読みたいっ♩:

1 Comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>