この記事では、コマンドラインからアプリケーションを実行して他のプラットフォームで配布するためにアプリケーションをパッケージ化する方法を説明します!
何かコマンドラインウィザードを実行する前に、まずは有効なandroid SDKへの参照をANDROID_HOME 環境変数に設定する必要があります。
Windows: set ANDROID_HOME=C:/Path/To/Your/Android/Sdk
Linux, Mac OS X: export ANDROID_HOME=/Path/To/Your/Android/Sdk
別の方法として、 sdk.dir /Path/To/Your/Android/Sdk
という内容の "local.properties"という名前のファイルを作成することもできます。
Gradle を使うことでコマンドライン上から簡単にプロジェクトを実行できます。 gradlew コマンドを使って対象となるプラットフォームを指定し、そのプラットフォーム用のコマンドを実行するだけです。
gradlew desktop:run
このコマンドを使うとコアプロジェクトとデスクトッププロジェクトがコンパイルされ、デスクトップスターターが実行されます。 この作業ディレクトリはandroidプロジェクトの assets フォルダーです!
gradlew android:installDebug android:run
このタスクはあなたのアプリケーションのデバッグAPKを作成し、一番目に接続されているエミュレータや端末にインストールし、メインactivityを起動します。 The process is split into two tasks because the Android Gradle plugin lets you create multiple flavors of your app (e.g. debug as above, release, ...). 詳細情報については Android Gradle プラグインのサイトを参照してください。
iOS シミュレータ上や端末上で実行する前に、 あなたの無料 RoboVM キーを有効化しているか確認してください。 端末上で実行する場合は、アプリを配置できるように端末のプロビジョニングを行う必要があります!
gradlew ios:launchIPhoneSimulator
gradlew ios:launchIPadSimulator
gradlew ios:launchIOSDevice
最初の二つのコマンドではiPhoneシミュレータや iPad シミュレータを起動させ、最後のコマンドでは接続された設定された端末上でiosプロジェクトを起動させます 端末の設定方法についてはAppleのドキュメントを参照してください。初回のiOSプロジェクトの実行では、コンパイルに長く時間がかかるので注意してください。 以降の実行時にはコンパイル時間はかなり短くなります!
gradlew html:superDev
このコマンドではあなたのアプリをJava コードをJavascriptにコンパイルする GWT Super Dev Modeで起動し、javaコードを直接ブラウザ上でデバッグできるようになります。
シェル上に Next, visit: http://localhost:9876
というメッセージが表示された場合は、ブラウザを開いてそのアドレスへ移動してください。
開いたページをあなたのブラウザのブックマークバーにドラッグし、"Dev Mode On" ブックマークとして保存してください。
次にhttp://localhost:8080/htmlを開きます。このページでは、あなたのアプリケーションがブラウザ上で動作しています!
コアプロジェクトのJavaコードを変更した場合は、先ほどのブックマークをクリックして "Compile"をクリックするだけです。
すると変更が即座に反映されます。ゲーム素材を変更した場合は、上記のコマンドを使ってサーバを再起動する必要があります。
全てのフォーマットはそれぞれ異なった配布形式を持っています。この項目では、Gradleを使った各回配布形式の作成方法を説明します。
gradlew desktop:dist
このコマンドでは実行可能なJARファイルを作成してdesktop/build/libs/
フォルダに配置します。
このファイルには必要な全てのコードとandroid/assetsフォルダ内の全てのゲーム素材が含まれており、ダブルクリックかコマンドライン上からjava -jar jar-file-name.jar
と実行して起動できます。
プレイヤーはこれが動作するためのJVM をインストールしなければなりません。
この JAR ファイルは Windows、 Linux 、 Mac OS X上で動作します!
JARと一緒にJVMもパッケージ化して配布したい場合は、packr toolを使うことができます! これを使うと、ダウンロードサイズが23MB-30MB以上増える代わりにプレイヤーはJVM をインストールする必要がなくなります。
gradlew android:assembleRelease
このコマンドでは、署名なし APK ファイルを android/build/outputs/apk
フォルダに作成します。
このAPKのインストールや公開をする前に、 署名する必要があります。
上記のコマンドでビルドされたAPK は既にリリースモードになっているので、リンク先ページにあるkeytool とjarsignerの手順を行えば完了です。
身元不明のアプリのインストールが許可されているAndroid 端末にインストールできます。
gradlew ios:createIPA
このコマンドでは、Apple App Storeに公開するためのIPA ファイルを ios/build/robovm
フォルダに作成します。
app store でのアプリ公開に記載されているAppleのガイドラインに従ってください。
gradlew html:dist
このコマンドではあなたのアプリをJavascript にコンパイルし、出力された Javascriptファイル・ HTMLファイル・ゲーム素材のファイルを html/build/dist/
フォルダに配置します。
このフォルダの中身を Apache や Nginxのようなウェブサーバにアップする必要があります。
このコンテンツは他の静的HTML/Javascript サイトのように扱います。Java や Java Applets 関連のものは含まれていません!
Python がインストールされている場合は、html/build/dist
フォルダ内で以下のコマンドを実行することで公開するゲームをテストできます。:
Python 2.x
python -m SimpleHTTPServer
Python 3.x
python -m http.server 8000
ブラウザで http://localhost:8000 を開いてプロジェクトの動作確認を行えます。
Node.js を使用している場合は、npm install http-server -g
を実行してからhttp-server html/build/dist
を実行して、ブラウザで http://localhost:8080を開きます。参考ドキュメント
PHP を使用している場合は php -S localhost:8000
と入力してブラウザで http://localhost:8080を開きます。
参考ドキュメント
gradle起動時にビルドやリフレッシュが失敗した場合、詳細な情報を取得するには--debug 引数を追加した同じコマンドを再度実行します。
例:./gradlew tasks --debug
。
これによりスタックトレースが提供され、なぜgradle が失敗したのかを調べるためのより多くの情報を得られます。
(確認済み) AVG - gradlew desktop:dist を実行する場合、アンチウィルスソフトによってこのコマンドがエラーになることがあります。あなたのアンチウィルスソフトにアクセス許可の例外を追加してください。
You may be like me and wish to have the output jar from the dist task. Gradle seems to name it as the name of the directory and a version number, which is in my case, desktop-1.0. You may also wish to have each build have a unique version/build date of some kind, do as follows:
ルートプロジェクトの build.gradle、以下を追加します:
def getDate() {
def date = new Date()
def formattedDate = date.format('yyyyMMddHHmmss')
return formattedDate
}
(at top level)
Within allprojects{}, add: 'version = "0.1-build-" + getDate()'
Within the desktop target add this within task dist(type: Jar) { }...
'baseName = "myproject"'
I'm sure there are better ways, but it took me a while to get together that info and then get it to work/figure out where to put it. You will now have a jar file in your desktop/libs, named something like 'project-0.1-build-20150120033412.jar' which makes distribution a lot easier and more trackable, less conflicts etc.