2014年8月28日木曜日
cocos2d-xの要点だけ プロジェクトの新規作成からビルド
cocos2d-x 3.2 / OSX Mavericks。
cocos2d-xで新規にプロジェクトを作成するにはターミナルから以下のようにする。
$ cocos new MyFirstCocosApp -p jp.imho.myfirstcocosapp -l cpp -d ~/src
-p パッケージ名
-l 言語 cpp | lua | js のいずれか
-d プロジェクトの親ディレクトリ。(この中にプロジェクト名のサブディレクトリが作成され、その中にソースなどが生成される)
上記で~/src/MyFirstCocosAppが作成される。
ビルドをするには
$ cocos run -s ~/src/MyFirstCocosApp -p android
-s プロジェクトのディレクトリ
-p ターゲットのプラットフォーム。android | ios | mac のいずれか
runコマンドはアプリのビルドからデバイス転送まで行う(androidの場合)
アプリのビルドまででよければrunの代わりにcompileコマンド
MyFirstCocosAppの中にはいくつかのサブディレクトリが作成されていて、それぞれ以下のような感じ。開発には当面ClassesとResourcesを気にしていればよさそう。
Classes/ ソースコード
Resources/ 画像など
bin/ ビルドしたアプリパッケージ
proj.*/ プラットフォームごとの設定ファイル(AndroidManifest.xmlなど)
2014年6月28日土曜日
ADTを23にアップデートしたらannotations.jarが見つからなくなった時の対応の要点だけ
EclipseからAndroid SDK Toolsを23にアップデートしたときに、プロジェクト設定のannotations.jarがmissingとなってしまってビルドに失敗するようになってしまった。
どうやらファイルが移動されていて(?)パスが壊れてしまってるようなので
$ ln -s ANDROID_SDK/extras/android/support/annotations/android-support-annotations.jar ANDROID_SDK/tools/support/annotations.jar
というふうにシンボリックリンクを張ってあげればうまくいく。これ単なるバグだと思うんだけど…応急処置として。
参照:http://stackoverflow.com/questions/24438748/fail-to-find-annotations-jar-after-updating-to-adt-23
2013年1月14日月曜日
ADT Toolsのthe file dx.jar was not loaded from the SDK folderというエラーの対処の要点だけ
Android SDK Toolsをrev.21にアップデートしたら、アプリのビルドが出来なくなった。
2012年5月11日金曜日
Unity Android Java Pluginの作り方についての要点だけ
UnityでJavaを使ったAndroidプラグインの作り方について、いまいちまとまった情報がないので、要点のみまとめ。あとで追記とかはするかもしれない。
とりあえず2つのケースを想定すれば良いと思う。
- Androidとは関係なく単純にJavaクラスをUnityスクリプトから利用したい場合
例えば何かのパーサだったりとか、手持ちの便利ライブラリがJavaであるとか。これはAssets/Plugins/Androidに該当の.jarファイルを置けばOK(.dexでなく.classで良い)。その上で、Assets/Pluginsとかに置いたスクリプトから、new AndroidJavaClass("Javaクラス名")とかnew AndroidJavaObject("Javaクラス名")とかすればOK。それぞれJavaのクラス型およびインスタンス型に対応し、そこからメソッドを呼ぶ事ができる。(詳細はUnityのリファレンスを見ると良い。インスタンス変数、メンバ変数の取得、クラスメソッド、インスタンスメソッドなど行うことができる)
- Pluginを通じてAndroid OSの機能を利用する場合
Android OSの色んな機能を使うときにはContextオブジェクトを使う訳だけど、これはUnityアプリの場合、ランタイムであるUnityPlayerActivityが持っていることになるので、まずはプラグインのJavaクラスをUnityPlayerActivityを継承したActivityにする必要がある。class MyUnityPlayerActivity extends UnityPlayerAcitvityこんな感じ。
この中のメソッドは普通のAndroidJavaクラスとして作れば良い。
その上で、Unityアプリの起動クラスをこのUnityPlayerActivityを継承したMyUnityPlayerActivityにする必要がある。これはAndroidManifest.xmlファイルのカスタマイズのやり方を使う。つまり.jarファイルと同様に、Assets/Plugins/Androidのフォルダに、MyUnityPlayerActivityクラスを起動Activityに設定したAndroidManifest.xmlファイルを置く。そうするとAndroidバイナリのビルド時にこちらを使うようになってくれる。ちなみにUnityのPlayer Settingsで設定したアプリアイコンを使うには、android:iconを@drawable/app_iconに変更する必要があることに注意。
尚、このAndroidManifest.xmlを置き換えるやり方は独自のpermissionやActivityを追加したりするときにも使う。
あとは1と同様にAndroidJavaClassおよびAndroidObjectを利用してプラグインを利用するスクリプトを書けば良い。独自の注意として、Activityは直接newできないのでMyUnityPlayerActivityにpublic static な MyUnityPlayerActivityを変数として持っておいて(onCreate時にMyUnityPlayerActivity.instance = thisとかやる)、そのうえでUnityスクリプト側からaAndroidJavaClass.GetStatic<AndroidJavaObject>("instance")みたいにすればActivityインスタンスを直接取ることができる。
尚、Unity 3.5を前提に書いています。もし間違い等あれば指摘してください。
2012年3月24日土曜日
EclipseでInitializing Java Tooling Errorの時の対策の要点だけ
Androidアプリの開発でEclipseを使っていて、Eclipseの起動時に"Initializing Java Tooling"でエラーになるとか、謎のエラーに悩まされたのでその対策メモ。
環境はOSX Snow Leopard + Eclipse(Indigo)。
このエラーを消すには、Eclipseをいったん終了後、workspaceのルートにある.metadataディレクトリを消す。
その上で、Eclipseを再起動すれば良い。
そうするとProjectはワースクペースから消えてるので、インポートし直す必要はある。
それか新規にworkspacewを作るでもOKですね。
2012年3月18日日曜日
Androidデバイス上でIntentが使えるかどうかのチェック方法の要点だけ
PackageManager#queryIntentActivities (Intent intent, int flags) を利用すればOK。flagはPackageManagerの定数。
2012年3月16日金曜日
2012年3月12日月曜日
ライブ壁紙でタッチイベントを取得する方法の要点だけ
Androidのライブ壁紙でタッチイベントを取得して、何かエフェクトをかけたり、動作をさせたりしたいときのやりかた。
端的には、WallpaperService.EngineのonTouchEvent(MotionEvent event)またはonCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested)いずれかをオーバーライドすれば良い。
大きな違いとして、onTouchEventは、アプリのアイコンをタッチしたときなんかもイベントが発生してしまうのに対して、onCommandは、HOME画面中何もないところをタッチしたときだけにイベントが発生する(actionのところに"android.wallpaper.tap"というのが来て、x, yで座標が分かる)。これはHOMEアプリから発行されるイベントのようで、デフォルトのHOMEアプリ利用時に発生しないというような記述をどこかで見かけたけど、これは未確認。
なお、ライブ壁紙上の操作から何かしらIntentを発生させたい時は、通常どおり新規のIntentを作成してContext#startActivity()してやれば良いが、IntentにIntent#setFlag(Intnet.FLAG_ACTIVITY_NEW_TASK)をしてやる必要がある。これをしないとExceptionが発生するよう。
端的には、WallpaperService.EngineのonTouchEvent(MotionEvent event)またはonCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested)いずれかをオーバーライドすれば良い。
大きな違いとして、onTouchEventは、アプリのアイコンをタッチしたときなんかもイベントが発生してしまうのに対して、onCommandは、HOME画面中何もないところをタッチしたときだけにイベントが発生する(actionのところに"android.wallpaper.tap"というのが来て、x, yで座標が分かる)。これはHOMEアプリから発行されるイベントのようで、デフォルトのHOMEアプリ利用時に発生しないというような記述をどこかで見かけたけど、これは未確認。
なお、ライブ壁紙上の操作から何かしらIntentを発生させたい時は、通常どおり新規のIntentを作成してContext#startActivity()してやれば良いが、IntentにIntent#setFlag(Intnet.FLAG_ACTIVITY_NEW_TASK)をしてやる必要がある。これをしないとExceptionが発生するよう。
2012年2月15日水曜日
AndroidアプリをAntでビルドするための要点だけ
Jenkinsとかに興味が出てきたので、AndroidアプリをAntでビルドするための方法について調べた。
ドキュメントにはコマンドラインのandroidツールからプロジェクトを作成するとbuild.xml(Antの設定ファイル)が生成されるとあるけれど、
実際に必要なのは以下のgithubに置いた3ファイル。あとはEclipseで生成できる普通の(?)プロジェクトでOK。
https://github.com/hkurosawa/android_ant
(1)↑にある3ファイルをプロジェクトのルートディレクトリに展開する
(2)local.propertiesがAndroid SDKを指すように変更する
(3)ant.propertiesがkeystoreおよびalias名を指すように変更する(配布用の署名までAntで行う場合)
使い方やターゲットはプロジェクトのルートで$ antとすれば出てくる。
ところで、プロジェクトに生成されるbuild.xmlはほとんど空で、実体は{sdk}/tools/ant/build.xmlをincludeしているみたい。
[追記]
$ android update project --path /path/to/project すれば、コマンドラインから必要なファイルを生成してくれるみたいで、このエントリあんまり意味ないことに気づいた。
ドキュメントにはコマンドラインのandroidツールからプロジェクトを作成するとbuild.xml(Antの設定ファイル)が生成されるとあるけれど、
実際に必要なのは以下のgithubに置いた3ファイル。あとはEclipseで生成できる普通の(?)プロジェクトでOK。
https://github.com/hkurosawa/android_ant
(1)↑にある3ファイルをプロジェクトのルートディレクトリに展開する
(2)local.propertiesがAndroid SDKを指すように変更する
(3)ant.propertiesがkeystoreおよびalias名を指すように変更する(配布用の署名までAntで行う場合)
使い方やターゲットはプロジェクトのルートで$ antとすれば出てくる。
ところで、プロジェクトに生成されるbuild.xmlはほとんど空で、実体は{sdk}/tools/ant/build.xmlをincludeしているみたい。
[追記]
$ android update project --path /path/to/project すれば、コマンドラインから必要なファイルを生成してくれるみたいで、このエントリあんまり意味ないことに気づいた。
2012年1月4日水曜日
keytoolコマンドでapk署名用のkeystoreファイルの作成の仕方の要点だけ
<script src="https://gist.github.com/1559067.js?file=gistfile1.sh"></script>
Labels:
android,
Android Market,
develop
2011年12月12日月曜日
2011年11月23日水曜日
Androidでランチャーから起動可能なActivityの一覧を取得する方法の要点だけ
PackageManagerというクラスを指定して、特定のIntentに対応するActivityの一覧をListで取得できる。ResolveInfoからは該当Activityに関する様々な情報が参照できる。
2011年11月19日土曜日
AndEngine Wallpaper Extension Exampleが動かないので直した。
Google CodeでホストされているAndEngine Wallpaper Extension Exampleのコードには古いライブラリjarが同梱されていて、最新のライブラリだと動かないというのを発見した。
パッケージ階層が変わっていたり、deprecatedなメソッドが出来ていたりするみたい。
http://code.google.com/p/andenginelivewallpaperextensionexample/
なので、諸々直したのを以下に置きました。
http://code.google.com/r/kh99mail-andenginelivewallpaperextensionexample/
GoogleCodeもMercurialもあまり使ってないのでどうやって作者さんに知らせたら良いか分からず、直したよってメールしてみた。これで合ってるのかな。正しいやり方があったら誰か教えてください。
パッケージ階層が変わっていたり、deprecatedなメソッドが出来ていたりするみたい。
http://code.google.com/p/andenginelivewallpaperextensionexample/
なので、諸々直したのを以下に置きました。
http://code.google.com/r/kh99mail-andenginelivewallpaperextensionexample/
GoogleCodeもMercurialもあまり使ってないのでどうやって作者さんに知らせたら良いか分からず、直したよってメールしてみた。これで合ってるのかな。正しいやり方があったら誰か教えてください。
AndEngine LiveWallpaper Extensionのサンプルプロジェクト
AndEngine LiveWallpaper Extensionを使ったライブ壁紙のサンプルプロジェクトをgithubに上げました。
https://github.com/hkurosawa/imhoandenginelivewallpaperexample
2011年11月17日木曜日
AndEngine TimerHandlerの使い方の要点だけ
AndEngineはチュートリアルが充実してないので、逆引き的にsnippetを溜め込むしかなさそう。一定時間間隔でメソッドを呼び出すTimerHandlerの使い方。org.anddev.andengine.engine.handler.timer.*にあります。
AndEngine ExamplesをソースコードからビルドするHowtoの要点だけ
AndEngineのデモはAndroidMarketからも落とせるけど、やっぱりソースコードからビルドしたい、、ときのための手順をまとめました。
2011年11月15日火曜日
AndEngineのライブラリJARの入手方法の要点だけ
【2011/11/16追記】以下の記事は古いソースコードに基づく。以下のchangelogによると、examplesからライブラリは削除したみたい。詳しくは調べて後でかく。
http://code.google.com/p/andengineexamples/source/detail?r=07a5aabdd0ce738a624863ca8d18895350a23356
【2011/11/16追記2】以下のブログは参考になりそうだ。
http://andenginefromscratch.blogspot.com/2011/06/off-topic-article-how-to-stay-up-to.html
【2011/11/17追記】新しいエントリをまとめました。 http://blog.imho.jp/2011/11/andengine-exampleshowto.html
以前のエントリで書いたAndEngineのエントリでは、AndEngine Exampleをインポートするとこまで書いたけど、これだけだといざ自分でプロジェクトを始めようとしたときに、ライブラリ群をどこからインストールすれば良いのか分からなかった。
AndEngineのプロジェクトサイトでも、バイナリ形式での配布は行ってないみたい。
このときもAndEngine Exampleが役にたつ。AndEngineExampleをインポートしたフォルダで、libという名前のディレクトリを見つけて、開く。そうするとandengine*.jarというファイル群が見つかるので、自分で新規作成したプロジェクトに必要なものをコピー&ペーストする。その上で、プロジェクトのProperties>Java Build path>Libraries>Add Jars...して、コピーしたjarファイル(群)をプロジェクトに追加すれば良い。
andengine.jarがベースのライブラリとして、その他は拡張ライブラリ。ファイル名と、AndEngineExamplesのデモを見て、必要なライブラリに見当をつけると良い。
http://code.google.com/p/andengineexamples/source/detail?r=07a5aabdd0ce738a624863ca8d18895350a23356
【2011/11/16追記2】以下のブログは参考になりそうだ。
http://andenginefromscratch.blogspot.com/2011/06/off-topic-article-how-to-stay-up-to.html
【2011/11/17追記】新しいエントリをまとめました。 http://blog.imho.jp/2011/11/andengine-exampleshowto.html
以前のエントリで書いたAndEngineのエントリでは、AndEngine Exampleをインポートするとこまで書いたけど、これだけだといざ自分でプロジェクトを始めようとしたときに、ライブラリ群をどこからインストールすれば良いのか分からなかった。
AndEngineのプロジェクトサイトでも、バイナリ形式での配布は行ってないみたい。
このときもAndEngine Exampleが役にたつ。AndEngineExampleをインポートしたフォルダで、libという名前のディレクトリを見つけて、開く。そうするとandengine*.jarというファイル群が見つかるので、自分で新規作成したプロジェクトに必要なものをコピー&ペーストする。その上で、プロジェクトのProperties>Java Build path>Libraries>Add Jars...して、コピーしたjarファイル(群)をプロジェクトに追加すれば良い。
andengine.jarがベースのライブラリとして、その他は拡張ライブラリ。ファイル名と、AndEngineExamplesのデモを見て、必要なライブラリに見当をつけると良い。
2011年11月3日木曜日
Google Developer Day 2011の要点だけ<Google+ ウェブ アプリの構築>
正確でもないし網羅的でもないGoogle Developer Day 2011のメモを置いておきます。大事そうなところは掘り下げてそのうちブログにします(多分)。「Google+ ウェブ アプリの構築」というセッション。
Google Developer Day 2011の要点だけ<Android の優れたユーザーエクスペリエンス>
正確でもないし網羅的でもないGoogle Developer Day 2011のメモを置いときます。大事そうなところは掘り下げてそのうちブログにするかも。「Androidの優れたユーザエクスペリエンス」と題されたセッション。
Google Developer Day 2011 の要点だけ<基調講演>
正確でもないし網羅的でもないGoogle Developer Day 2011のメモを置いておきます。ほぼキーワードのみ羅列です。
大事そうなところは掘り下げてそのうちブログにするかも。まずは基調講演。
大事そうなところは掘り下げてそのうちブログにするかも。まずは基調講演。
登録:
投稿 (Atom)