コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

eclipseプロジェクトをコマンドラインからビルドする方法

LuaridaのスクリプトAndroidマーケットに登録するために、assetsフォルダに登録したスクリプトをLuaridaにintentするだけのアプリを作りました。このアプリ自体は一回作ったら変更することなく、変更するのは、assetsフォルダに登録するスクリプトファイルだけなので、いちいちeclipseを立ち上げなくてもapkビルドを行う方法を防備録として書いておきます。
文章中のPath名はインストールした場所によって違うので、適当に置き換えて判断してください。

Android update project --path

eclipseを起動しないでapkを作るということは、antコマンドを打ってapkを作成することになります。しかしながら、eclipseのプロジェクトには、antコマンドが必要とするbuild.xmlなどの設定ファイルが存在しません。
そこで、先ずこれらの設定ファイルを作成する必要があります。これに使用するのが、Android update projectです。
eclipseのプロジェクトフォルダに入って、Android updateコマンドを実行します。実行時には--path引数が必要です。これはプロジェクトフォルダ名になります。ですので、eclipseのプロジェクトフォルダ内にcdしてきているのであれば、下記のように . でもOKです。

>Android update project --path .

これで、プロジェクトフォルダ内に、build.xml、local.properties、proguard.cfg が自動生成されたはずです。

ant release

ant用の設定ファイルができたので、コマンドラインからantが使えます。今回はantを別にダウンロードしてきました。Apache Antのサイトからapache-ant-1.8.2をダウンロードして解凍し、android-sdk-windowsを入れている同じフォルダに置きました。そして、Pathをapache-ant-1.8.2\binに通して、コマンドラインからantが実行できるように設定しました。
次に、日本語に対応させる必要があります。javaのソースに日本語を使っていると、このままではビルド時に警告がでます。これを無くすためにはmain_rules.xmlを修正する必要があります。mian_rules.xmlは、android-sdk-windows\tools\antのフォルダにありました。
mian_rules.xmlの修正は下記のようにしました。 とasciiが設定されているので、Windowsの場合Shift JISで保存されるため、value="Shift_JIS"に変更しました。

<!--    <property name="java.encoding" value="ascii" />	-->
<property name="java.encoding" value="Shift_JIS" />

これで、警告無しにantが走ります。プロジェクトのフォルダでant releaseするとapkが生成されます。デバッグ用には、ant debugでも良いです。

>ant release

ant relesaeすると、binフォルダに、<名称>-unsigned.apkというapkファイルができています。このままでは名前の通りサインが入っていないので、サインを入れます。

keytool

先ず、サインするための署名が必要なので、keytoolを用いて書名を作ります。既にeclipse方で署名ファイルを作成しているときには、そのファイルを使えばいいので、keytoolを使う必要はありません。
下記のような引数で署名ファイルを作りました。-validityが12000というのは、12000日のことで、約33年です。keyパスワードとstoreパスワードは違ってもかまいませんが、面倒なので、私は同じにしています。

>keytool -genkey -dname "c=JP" -keypass <keyパスワード> -keystore <署名ファイル名>.key -storepass <storeパスワード> -validity 12000 -alias <プロジェクト名> -keyalg RSA

keytoolを使うためには、C:\Program Files\Java\jdk1.6.0_23\binにPathを通す必要があります。

jarsigner

jarsignerを用いて、apkファイルにサインを書き込みます。下記のような引数で、署名ファイルとパスワードを書いて実行します。

>jarsigner -keystore <署名ファイル名>.key -keypass <keyパスワード> -storepass <storeパスワード> <名称>-unsigned.apk <プロジェクト名>

そうすると、<名称>-unsigned.apkが、署名入りに書き換わります。jarsignerコマンドにもPathを通す必要がありますが、keytoolと同じ場所なので、先ほどのPathが有効です。

zipalign

Androidマーケットに登録するためには、apkの中身のデータをサイズ順に並べ替える必要があります。そこで、zipalignコマンドでこれを行います。
下記の引数で、並び替えができます。既に、<名称>.apkファイルが存在するときにはエラーがでますので、先に、<名称>.apkファイルを削除してください。

>zipalign -v 4 <名称>-unsigned.apk <名称>.apk

これで、apkファイルが完成しました。防備録はここまでてす。