投稿

ラベル(Android)が付いた投稿を表示しています

Libgdx Grable project import error on the Mac OS X 10.9

The Eclipse 4.3 for mac os x said: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable. But, I have written ANDROID_HOME environment variable in .bash_profile of the Mac OS X 10.9, and also ANDROID_SDK. SOLVED: put the local.properties file in your root of grable project. local.properties --------------------------------------------------------------------------------- # Location of the Android SDK. This is only used by Gradle. sdk.dir= android your sdk path --------------------------------------------------------------------------------- Note:The  local.properties is not included in the repository, so it is written in .gitignored. P.S. It is to be noted that only set the environment variable of ANDROID_HOME in Ubuntu14.04LTS, is working well. P.S. Also, you need the local.propertoes in Windows. You must use / for path. It likes linux path.

Libgdx:If your model was rendered like this. Enable GL20.

イメージ
Tip for Libgdx new 3d api. When you forget this, it is hard to notice later.  If your model was rendered like below image. This is wrong to the coordinate system and the animation does not operate.   Enable GL20. E.g. Android: AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration(); cfg.useGL20 = true ; Desktop: LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration(); cfg.title = "StudyChangeTexture"; cfg.useGL20 = true ; cfg.width = 480; cfg.height = 320;

libgdx/new3dapi Naxus oneでもskinアニメーションが高速化?

まだ試していませんが libgdx  ( branch new3dapi )昨夜のアップデートで高速化され、モバイルでも使い物になるようにチューンされた様子。一度、4月にmasterへmergeされる予定だったのですがモバイルで重いため、延期されていた。TwitterをみるとNexus oneでも速いらしい。これでmasterへmergeされるのも時間の問題となったかもしれません。 自分のプログラムもnew3dapiで動作しているため、注目しているbranchなのです。 PS パッと確かめたところInverder, Bullet samplesはローカル座標がワールドになってしまい。動作しないバグがある気がします。 Update 動作するのを確認しました。記事は ここ 。

あと一ヶ月で発売OUYA

イメージ
http://www.ouya.tv/ ご存知かもしれませんが、OUYA。いずれ登場すると思われたA ndroidゲームコンソール機。本体とコントローラ込みで$9 9。OSはAndroid4.1ベース。 あと1ヶ月(下旬に延期)でUSなどで発売です。ちなみにlibgdxもソースコードを 読む限り、 コントローラへ対応している様子。 デザインがいいのと 安価なのでouya本家からソフトウェア・ テスト目的で予約しました。送料は$25でした。 なお、www.amazon.comからは日本へは発送不可能でした。 Ouyaは毎年、コンソールの新型を発売する予定です。これによって、常に最新のハードを楽しむようにようです。多く売れればライバルになるSonyやNintendoなどにアドバンテージを持つことになるでしょう。 PS Sonyは過去に音楽の著作権問題や資産をまもるためにセコセコやっている間にWalkmanがApple iPodに市場を奪われました。SonyやNintendoが中途半端なことをやっていると、また再現となるかも? PS ODKの説明 http://www.youtube.com/watch?v=z2PNMybZWRw ICONは決められた名前 res/drawable-xhdpi/ouya_icon.png OUYAは固定された解像度(1080p)のためICON sizeは732px by 412px https://github.com/ouya/docs/blob/master/content-review-guidelines.md https://github.com/ouya/docs/blob/master/interface-guidelines.md https://github.com/ouya/docs/blob/master/purchasing.md https://github.com/ouya/docs/blob/master/storage.md

Coding on a tablet.

昨日はスーパーな17inchが欲しいと書きました。しかし、矛盾ではありますが軽いtabletで仕事をしたいときがあります。 そう考える人は多いようで、試験的ではありますが環境が整いつつあります。その一例です。 http://bergie.iki.fi/blog/working-on-android/ なぜtablet? ボーとしながら、codeの難しい箇所を眺めているとわかることあります。ボーとしならはtabletが向いているのではないかとおもうからです。今はその役割はペーパーが担っていますが便利ではありますが大量にプリントすると読みたい場所を探すのが大変です。 Tabletでcodingするため、ぜひ欲しい機能が自分のgit repositoryを本格的に扱えるか? です。これによって最新のコードをtabletで気楽にみることが可能になるからです。 以前、1,2個アプリを試したのですがよくありませんでした。それからいろいろアプリが登場したようなので時間があるときにまた試そうと考えています。

Qt for Android and iOS.

http://necessitas.kde.org/ http://www.h-online.com/open/ news/item/ The-first-Qt-5-1-alpha-arrives- with-Android-and-iOS-support-1 837368.html Android版はBogDan Vatra氏が3年かけて開発してきた成果です。 1,2年ほど前に BBSで 彼からアドバイスをもらい、助けてもら ったことがあったので、嬉しいです。

ASUS

I recently became a fan of ASUS, they make a good product. http://reviews.cnet.com/cell-phones/asus-padfone-infinity/4505-6454_7-35619201.html http://usa.asus.com/Display/LCD_Monitors/MX279H/ http://usa.asus.com/Notebooks/Gaming_Powerhouse/G75VW/

Libgdx IOSサポート!

イメージ
LibgdxがついにiOS正式サポート版を0.9.8リリースした。 http://www.badlogicgames.com/wordpress/?p=2791 HTML5+WebGL版はGWT2.5を使う必要がある。

CCACHEメモ

Android-ndk-r7でも正式にサポートされたccache. コンパイル結果がキャッシュされ、2回目以降は高速になる。プリコンパイルヘッダーよりも安定して使いやすい。 書くまでもないがLinux nativeでも当然使える。そのインストールメモ 以下から取得 http://ccache.samba.org/ tar xzvf <filename> cd <folder> ./configure make sudo make installで終わり manページと /usr/local/binへインストールされる。 あとは以下のシンボルリンクをはればOK ln -s ccache /usr/local/bin/gcc ln -s ccache /usr/local/bin/g++ ln -s ccache /usr/local/bin/cc ln -s ccache /usr/local/bin/c++ 以上でコンパイルはCacheされ、高速になる。 ただし当たり前だがリンカは遅い。 アンインストールは 上のシンボルリンクを消し、 rm /usr/local/bin/ccacheでOK

Android NDK r7

Android 4.0に対応したNDK. http://developer.android.com/sdk/ndk/index.html OpenMAXなどの対応や、GLなどの強化が含まれる。 一番、嬉しいのは 環境変数を設定するだけで、自動にCCacheに対応したこと。   http://ccache.samba.org export NDK_CCACHE=ccache 僕の場合、nativeファイルが多いだけにコンパイルの高速化は大歓迎である。 コンパイル時間 (*.ccが335 ヘッダが400ぐらい) CCacheなしの場合 約8分40秒 CCacheが効いた場合 30秒 その他、細かだが現実的に嬉しいのは。。。 LOCAL_CPP_EXTENSION := .cc .cpp と複数の拡張子に対応になったことである。 いままではひとつだったので少々不便だった。(とはいえ、コード管理上ひとつにするのが望ましい) その他、stlがRTTIに対応した(例外は未対応だが、僕らはC++ではRTTIや例外を使わないため、あまり気にならない @see google c++ style) 残念なのはgdbがいまだに6.6。 pythonマクロが使えないのは不便である。手作業でgdbを7.3にするのが面倒だし、サポートの点で不満だ。 またSequoyahを使ってeclipseに対応して欲しい。

Androidとsvg (アプリケーション用)

現在、svgのライブラリはandroidの標準ライブラリには存在しないため、 以下のライブラリを使うことになる。  svg-android (java) nativeではLICENSEや依存関係が多く、使いかっての良いものは、みつからなかった。 libsvg for android ひょとすると良いかも(調査中) Anti Grain Geometry.   http://www.antigrain.com 希望としては librsvg(libxml, libart) を使いたいがAndroid版のポートはみつからなかった。 参考 http://www.codeproject.com/KB/android/AndroidImageViewSVG.aspx ( http://horribile.blogspot.com/2011/10/android-imageview-with-svg-support.html ) http://www.codeproject.com/KB/android/Android_SVG_support.aspx

Android NDK Tips Links

Google http://developer.android.com/guide/practices/design/jni.html Etc. http://www.netmite.com/android/mydroid/2.0/dalvik/docs/jni-tips.html

Android ICSとJNIのバグ管理強化

Android ndk(JNI)を使って、nativeのプログラムを作成(移植)するとき、一番、神経質に考えているのがメモリ管理である。 Ice cream sandwatchはメモリ管理のバグを発見する機能がディフォルトで追加されているようだ。 以下のblogに書いてある http://android-developers.blogspot.com/2011/11/jni-local-reference-changes-in-ics.html 詳細は上の記事に述べてあるが、項目を列挙すると。 A quick primer on JNI referencesからOld AndroidではJNIEnv*が単なるポインターであり、Delete系を呼んだあとでも使えてしまう。 そのため、バグが見つかりにくい欠点があるし、誤解を招く原因にもなる。 JNIはグローバルとローカルでJNIEnv*があり、スレッドがそれぞれ持っているが、グローバルは他のスレッドから利用可能だ。 AndroidではJNIEnv*は1スレッド専用であり、ほかのスレッドでは使えない。  ICSではそのバグを監視する機能がディフォルト(debug指定時)でONになっている。 例から env->NewStringUTFはローカルリファレンスを返すので、グローバルとしては使えない。 env->NewGlobalRef(s)はグローバルとして使えるが、env->DeleteGlobalRef(s);を呼ぶことを忘れてはならない。 FindClass() はローカルリファレンスを返す。グローバルとしては使えない。 DeleteLocalRef()  を使うべきではない。 呼んだあとでもAndroid場合使えてしまうのでバグが発見しづらい。  PopLocalFrame()以後のPushLocalFrame()で割り当てたリファレンスは使えない。

最新のndk6b用、ツールチェーンDownload

android ndkでgdb7.3などを使いたい場合は以下のサイトから取得すると便利 mingw-and-ndk android-ndk-r6b-gdb-7.3.50.20110709-linux-x86.7zをダウロードすると、オフィシャルではないが、最新のgnu tool-chainを使うことができる。

SequoyahとAndroid nativeプロジェクトとgdb

Sequoyah plug-in(シクウォイア)を使えばeclipse上でnativeの管理が簡単になりそうである。 Eclipse Indigo(3.7)では以下のサイトが参考になった。 Ubuntu 11.4+eclipse3.7で動作確認できた。   Windows+cygwin+eclipse IndigoにSequoyahをインストールする例   http://www.permadi.com/blog/2011/09/setting-up-android-jni-projects-in-windows-eclipse-and-sequoyah/ eclipse Sequoyah wiki http://wiki.eclipse.org/Sequoyah eclipse native debug http://www.eclipse.org/sequoyah/documentation/native_debug.php eclipse native debugの補足 実際、ボクが試しのはndk-r6bとeclipse3.7+Android3.1実機(Toshiba)。 実は微妙に設定が異なるので注意が必要(Ubuntu11.4で検証) Debug Configurationsの記述中 GDB debuggerは ndkのルート/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gdb GDB command fileは プロジェクトローカル/obj/local/armeabi/gdb2.setup これは存在しないファイルですが、効率よくするためにこの名前を使う。 後でgdb.setupをrenameする。 Conclusion: ndkのデバッカ起動は非常に面倒であるが、gdbのuiモードが日本語表示非対応なため、eclipse上でdebug出来るのは非常に助かる(変数の文字列は読めないことがあるがソースのコメントが読める)。  とはいえndkも対応になったADTがあれば、こんな手間はいらないのだが。 PS.1 Samsung Galaxy Tab10.1(And...

setHasOptionsMenu、ActionBar,SearchViewそしてFocus

ActionBarにSearchViewを入れて以下のようなActiviteに2つのFragmentが入っていると。。。 [action bar(searchview)] [ListFragment][WebView+Fragment ]  action barのSearchViewに検索キーを打つ入れるたびに、 下の2つのfragmentがリアルタイムに変化するコードの場合を考える。 WebView+Fragment 内にsetHasOptionsMenu(true);の呼び出しが あると(これはよくあるパターンだと思う) そのコール時にAction Barを作り直すため、SearchViewの、 Focusが失われてしまう。 そのため、IUは最悪になってしまう。 これを回避するには2つの解決策が思い浮かぶ。 1. setHasOptionsMenu(true);を呼ばない 2. [WebView+Fragment ]、setHasOptionsMenu(true);から呼ばれるonCreateOptionsMenu内でSearchViewが生成された後、SearchView.requestFocus()を呼ぶ。 尚、requestFocus()は呼ぶコードの位置によってはFocusが移動しないことがある。 1はFragment個別のメニューが設定できないため、使いやすさが失われる 2は検索キーのRestore等もあるのでこの方法をとるのがいい ということで2を採用

Activite + ndk (naitive) Open GL ESを使って開放する際の注意点

GLSurfaceViewを使っているActivityをfinishする(閉じる)とき、TextureをGLSurfaceView側でクリアするため、naitive内で作ったTextureでも、native側でglDeleteTextures()を使ってクリアすると、GLSurfaceView側でもクリアするため、conflictが発生するようである。 したがって、glDeleteTextureはnativeで呼ぶ必要はなさそうである。 もし、glDeleteTexture等をつかうと、他のActiviteでフォントが黒ぬき(黒豆腐?)になり壊れてしまうという現象が発生した。 (TableとPhone両方, osはAndroid 3.1とAndroid2.2.2) Crashはしなかった。

2週間の夏休みはActionBarとFragmentにどっぷり

正直な話、一度きれいに動作した多くのActivityだけでできたアプリをFragment化することは億劫なことで、やる気もなかなか出てきません。 しかたがなく、夏休みの夜はこれに対応することにしました。  いやいやなのでなかなかFragmentとActionBarのことは頭にはいらなくて、苦労しましたが、亀のような遅さで、2週間かけて移植しました。 が、できたコードは美しくなく、混乱もかなりありました。 その後、1週間かけてリファクタリングしてどうにか、馴染めるコードになってきましたが、Android Compatibility Package(androdi-support-v4.jar)を使っているため、Tabletで動かしてみてはPhone動かすという2重手間であまり楽しくないのが現状です。 ボクから観て、複雑さを嫌うGoogle System設計者は、今後Androidはまだまだ改良されるのでは?と思っています。 まぁ、これによって、さらに混乱しそうですが前進を止めることはないでしょう。

match_parentを使うのは"8"以降

ご存知のようにレイアウトの"fill_parent"はLevel 8 APIで"match_parent"へrenameされた。 これはAndroid2.2以降だが、すぐに"match_parent"を使うかは微妙で、現在作成中のアプリがlevel 7対応なのでfill_parentを使うことにしている。 これはGoogleオフィシャルのアプリを見たところそうなっているためで、Leve7非対応になった時点で"match_parent"へ変更する予定。 しなくていいリスクは避けるべきである。

Cannot cast from Fragment to X

例えば FragmentManager fm = getSupportFragmentManager(); mMyListFragment =  (MyListFragment)fm.findFragmentById(R.id.my_list_fragment); と書き、 Cannot cast from Fragment to MyListFragment. とエラーが発生したときは、Android Compatibility PackageとAndroid3.0以降のFragmentを混在してしまっている可能性がある。 どちらかにすべて統一しなければならない。 Android1.6からAndroid3.0未満でも動作させるならば、Android Compatibility Package。