2012年2月10日金曜日

android ndk on eclipse

サンプルプログラムでエラー。

hellojni

cygwinからプロジェクトをビルドしようとしたところ、
ndk-buildで
Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !
とエラーが表示される。

参考:
http://d.hatena.ne.jp/none53/20111205/1323077921


gawk.exeはcygwin\binに入ってて、同フォルダ内のawkが、gawkへのリンクになってる。

それで、はじめに読み込まれていたandroid-ndk-r7\prebuilt\windows\binの中のawk.exeは使わずに、cygwin\binのgawkを使うべきだったらしい。

ということで、android-ndk-r7のawk.exeの名前を変えればいいということらしい。
awk.exe -> awk_.exe
のようにする。


これで終わり。

設定完了後、hello-jniフォルダで
ndk-build -B
を実行。
そうすると、libsフォルダが作られて、.soファイルが中にコピーされる。

-------------------------------
さらに、eclipseで自動でndk-buildを実行できるようにする。

参考
http://blog.cnu.jp/2011/07/05/build-ndk-in-eclipse/ これはMac用でちょっと違うらしい。
http://mobilepearls.com/labs/ndk-builder-in-eclipse/
を参照。ただし、これだけではうまくできない。
windows用で.batファイルを使うことで解決。
http://blog.malrone.info/archives/1535

この中で、処理が遅いから、-loginを使わないと書いてあるけど、-loginしないとmakeとか使えなくて、コンパイルできず。
ということで、Cygwin.batを以下のように記述。
ちょっと長いけど、フォルダを変更することなく、実行可能。
それと、cygwin環境だと、"c:/"が"/cygdrive/c/"と表されるけど、どちらでもいいみたい。

c:/cygwin/bin/bash -login -c "c:/programming_environment/android-ndk-r7/ndk-build -C c:/programming_environment/android-ndk-r7/samples/hello-jni"

2012年2月9日木曜日

android on eclipse

Manifest.xmlファイル内で、
  <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10"/>

  <manifest **>の中で
  <application ***>
の前にないといけないらしい。


また、エミュレータにインストールできないときに、
adb経由でアンインストールする必要があることも。
これは、eclipseのコンソール上で、表示されている通りにコマンドプロンプトで
adb uninstall ***(パッケージ名)
と実行すればよい。


minSdkVersionは10。
これは、インストールしてあるplatformを指してるのかな。

eclipse + android

visual studio上で、アプリを実機に転送するには、有料のソフトが要るみたいだったから、eclipseを使ってみる。

参考


<eclipse>
インストール
  好きなフォルダへ入れる
<pleiades>
eclipseの日本語化
  安定版のインストール(all in oneじゃなくて、その下にあるリンクから取得)と書いてあるとこもあるけど、
  いったんSVNから入れたら、安定版で上書きしても動かなかった。
  安定版の問題なのか、一旦起動してから上書きしたからなのか不明だけど、今はSVN版で動かしてる。
  cleanを実行すればいいのかも。

vs-android

<インストール>
いろいろやってみてできた結果。
とくに参考になったのは以下のページ。

1. http://www.atinfinity.info/wiki/index.php?Android%2FUsage%20of%20vs-android
2. http://joevtyler.blog.fc2.com/blog-entry-5.html

vs-androidのページ

http://code.google.com/p/vs-android/wiki/Installation





1の参考ページの中で、
 vs-android_samples\bitmap-plasma\AndroidApk\project.properties
内で
target=android-14
と書き直す
とある。でも、ちゃんと動かなかった。<-原因が分からないけど。


同じ点について
2. http://joevtyler.blog.fc2.com/blog-entry-5.html
では、コマンドプロンプトから
android update project -t 1 -p .
を実行と書いてあった。
やってることは同じっぽい。コマンドプロンプトで事前に
android list target
を実行すると、インストールされているplatformの情報がでてきて、そこにidが割り振られる。
この結果は以下のようになった

Available Android targets:
----------
id: 1 or "android-10"
     Name: Android 2.3.3
     Type: Platform
     API level: 10
     Revision: 2
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
     ABIs : armeabi
----------
id: 2 or "android-13"
     Name: Android 3.2
     Type: Platform
     API level: 13
     Revision: 1
     Skins: WXGA (default)
     ABIs : armeabi
----------
id: 3 or "android-14"
     Name: Android 4.0
     Type: Platform
     API level: 14
     Revision: 3
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, W
XGA720, WXGA800
     ABIs : armeabi-v7a
----------
id: 4 or "android-15"
     Name: Android 4.0.3
     Type: Platform
     API level: 15
     Revision: 2
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, W
XGA720, WXGA800
     ABIs : armeabi-v7a
----------



開発したいplatformのidと、ソースコードのあるパスを指定しているわけ。
android update project -t (id) -p (  AndroidApk フォルダのパス)
idは、2でも"android-13"でもどちらでもok。

これを実行すると
project.propertiesとlocal.propertiesが更新されて、proguard.cfgというファイルが追加された。
ただし、更新といっても次の点のみ。
project.properties
   target=android-13
local.properties
   sdk.dir=C:\\Program Files (x86)\\Android\\android-sdk

だから、処理は、上でandroidのplatformを変えたのと同じっぽい。
cfgにはクラスが宣言されてるけど、バージョン依存の感じはない。分からないけど、消してもアプリは動いた。

プロジェクトの「構成プロパティ」の設定は
Target Android API level を"android-13"にするといいのかもしれないけど、選択肢になくて、"android-9"にした。
Target Architecture を"ARM Architecture v7-a (armv7-a)"にすると、emulatorと同じになるけど、"ARM Architecture v5te (armv5te)"でも動いた。


それと、emulatorを2つ以上同時には動かせなさそう。


android-10,13は動いたけど、android-14,15は動かない。コンパイルは通ってる。
なんで?


-------------
それにしても、emulatorの起動遅すぎ。

2012年1月21日土曜日

英語に親しむ

"Your Song" by Elton John
     How wonderful life is while you're in the world.

カモフラージュ
camouflage