井戸の中
2012年2月26日日曜日
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"
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を指してるのかな。
<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の起動遅すぎ。
いろいろやってみてできた結果。
とくに参考になったのは以下のページ。
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
How wonderful life is while you're in the world.
カモフラージュ
camouflage
2011年12月29日木曜日
スピンコントロールで浮動小数点の取り扱い
ダイアログでエディットボックスとスピンコントロールを作る際に、
スピンコントロールのSet Buddy IntegerをFalseにしないといけない。
これを忘れると、関連付けたエディットボックスがスピンコントロールのInt型で扱われるため、
浮動小数点にならないの注意。
あとは
float value;
m_xcSpin.SetPos32( value*10 );
とか
float value = m_xcSpin.GetPos32();
とか使えば大丈夫。
スピンコントロールのSet Buddy IntegerをFalseにしないといけない。
これを忘れると、関連付けたエディットボックスがスピンコントロールのInt型で扱われるため、
浮動小数点にならないの注意。
あとは
float value;
m_xcSpin.SetPos32( value*10 );
とか
float value = m_xcSpin.GetPos32();
とか使えば大丈夫。
登録:
投稿 (Atom)