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の修正は下記のようにしました。
<!-- <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ファイルが完成しました。防備録はここまでてす。