Android

August 29, 2011

LCL-Android Application

LazarusのwikiにAndroidの情報が上がってました。
暫く動けないですが、暇になったら試してみようかな?

http://wiki.lazarus.freepascal.org/Android_Interface#Compiling_the_example_LCL-Android_Application

April 11, 2011

LazarusでAndriodアプリを開発(4)

此処で説明した形式は過去のものです、最近動向はこちらを参照してください。

http://tensei.cocolog-nifty.com/weblog/2012/12/fpclazarusandro.html

此処で紹介するデモは、

http://wiki.lazarus.freepascal.org/Android_Interface/Native_Android_GUI

です。TurboChessClock4Androidというチェスの各自の持ち時間をダウンカウントする時計アプリです。

デモソースの入手先は、

svn co https://p-tools.svn.sourceforge.net/svnroot/p-tools/turbochessclock4android turbochessclock4android

手順を順番に見ていきます。

 

1) softfloatで動くARMv5 EABI形式のファイルを生成する、arm-linuxクロスコンパイラを手に入れる。通常はArmadilloのEABIのクロスコンパイルできるLazarus環境で。

2) Android SDKをインストールする。

3) antをインストールする。ソフトウェアの追加/削除でantをインストールすることができますが、バージョンが古いと言われるかもしれません。そのときはapache-antからダウンロードします。
 例えば、

  1. apache-ant-1.8.2-bin.tar.gzをダウンロードし、/home/lazarus/androidに展開します。
  2. gedit .bashrcで以下の行を追加します。
    ANT_HOME=~/android/apache-ant-1.8.2
    JAVA_HOME=/usr/java/jdk1.6.0_21
    PATH=$ANT_HOME/bin:~/android/android-sdk-linux_x86/platform-tools:$PATH

4) Lazarusを起動しプロジェクト「~/work/lazarus/turbochessclock/turbochessclock4android.lpi」を開いて、buildします。

5) デバッグモードでAPKファイルを作成します
   $ cd   ~/work/lazarus/turbochessclock4android/android
   $ ant debug

6) Armadilloと接続します。
Network経由でArmadilloと接続するには
   $ adb kill-server
   $ adb start-server
   $ adb connect 192.168.11.6 ←ArmadilloのIP

7) adbを使うか、その他の方法でArmadilloにAPKファイルをインストールする。
   $ cd ~/work/lazarus/turbochessclock4android/android/bin
   $ adb install TurboChessClock4Android

 パッケージが既にインストールされてるときは、
   $ adb uninstall com.pascal.turbochessclock
   $ adb install TurboChessClock4Android

ArmadilloのIPが固定アドレスでなく、DHCPからもらってるときは、Armadilloniシリアルで接続し

  $ /sbin/ifconfig eth0

コマンドでIPを確認します。

(ルータから確認する方法もあります、それと機種によりますがルータでMACアドレスに応じて、固定IPを割り当てることもできます。)

ちなみに、スクリーンショットを撮るには、

   $ ddms
    メニュー Device→Screen captureで。

March 26, 2011

LazarusでAndriodアプリを開発(3)

此処で説明した形式は過去のものです、最近動向はこちらを参照してください。

http://tensei.cocolog-nifty.com/weblog/2012/12/fpclazarusandro.html

Androidと言えば、アプリの開発言語はJavaが基本です。

でも、Android NDKを使うことによって各種言語で記述したプログラムをAndroidアプリケーションパッケージ .apk に組み込むことができるようになります。

現在、世界中で各種言語でAndroidのアプリ開発ができるような努力がされてるようです。そのなかに、Lazarus&FPCでの取組があります。

FPCはC,C++のようにネイティブのコードを生成できるコンパイラで、各種CPUに対応してます。ARMにも対応し、Linux、WindwsCE、iPhoneなどの開発に使われてます。AndroidはベースはLinuxですし、FPCでARM/i386系のクロス&ネイティブコンパイルが可能ですから、ずいぶん前からLazarus&FPCでAndroid開発できないだろうか?という話題がたまに上がってました。

ネイティブコード開発は、Androidのバージョンによっても変わってきます。最新のAndroid2.3ではネイティブアクティビィティが使えますが、まだ2.3のスマートフォンはホンの少しなので、ネイティブアクティビィティを使ったアプリはまだまだこれからってとこでしょうか。

Lazarusでの取組については以下のwikiが参考になります。

http://wiki.lazarus.freepascal.org/Android_Interface

以下は概訳です。

AndroidでPascalアプリケーションを作成するには、以下のどちらかの方法があります。

  • 方法1> JNIを介してJavaアプリケーションと接続するライブラリとしてPascalアプリケーションを作成する。
  • 方法2> 実行可能形式のPascalアプリケーションを作成し、パイプまたはソケットを使ってJavaと接続する。

LCLアプリケーションをライブラリとして走らせ、JNIを介してJavaとやりとりできるようなネイティブインターフェースを生成するのは、いくつかの深刻な問題が発生します。

  1. Androidアプリ毎に個別のメインプロジェクトファイルが必要となる。
  2. Free PascalはDLLに関していくつかの問題を抱えている。
  3. Javaネイティブインターフェースは非常に複雑で、扱うのに骨が折れる。さらに悪いことに、ほとんどC++用として用意されており、限定的である。

これらの問題を避けるためには、Lazarusアプリケーションとしてネイティブな実行可能形式なものの代わりに、必要最低限な事だけを補助するJavaアプリケーションとやりとりする方がよかったのです。

その上、両方の方法には、2つの基本的なGUI手法があります。どちらの手法も魅力的で、現時点では両方とも使われておりますが、将来はどちらかの方がベストであると自ずから分かるでしょう。

  • Android Interface/Native Android GUI
    • 開発が素早くできる手法である。
    • 欠点として、widgetsetが完全にAndroid専用であるため、Androidのプラットフォームが大幅に変更されたり、Android自身が市場から廃れてしまったとき徒労になってしまう。
    • グラフィック描画能力が低い。
  • Android Interface/OpenGL ES GUI
    • 末長く続く手法であるが、開発し、安定するまでに時間を要する。
    • システムに適度に統合されてるとはいえない。
    • グラフィック描画能力が高い。

March 25, 2011

LazarusでAndriodアプリを開発(2)

此処で説明した形式は過去のものです、最近動向はこちらを参照してください。

http://tensei.cocolog-nifty.com/weblog/2012/12/fpclazarusandro.html

最初に、Armadillo-500FXにAndroidをインストールします。

アットマークテクノのサイトに解説があります。一通り目を通しておきます。

http://armadillo.atmark-techno.com/howto/try-android-on-armadillo

今回は、2.2(Froyo)を使いたかったので、別のサイトを参考にしました。

http://code.google.com/p/android-development-environment/wiki/FroyoOnArmadillo500FX

通常Armadillo-500FXではatde2を使用しますが、ここではeabiにするためatde3を使います。

atde3にはgitとrepoが入ってませんので、事前にインストールしておきます。

$ sudo apt-get install git-core

$ cd ~
$ mkdir bin
$ gedit ~/.bashrc
2行追加します
  PATH=$PATH:~/bin
  ANDROID=/home/○○○/android/armadillo-500fx-droid
  (ANDROIDはソースコードのダウンロード先)

$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo

後の手順は、上記サイトの「2.Androidソースコードのダウンロード」以降を実行します。

「7.Armadillo-500FXにkernel/ユーザランドを書き込む」ですが、これは自分の開発環境によって合わせます。

例として、EPSONのノートPCの CentOS上のVMPlayerでatde3を動かした場合です。
ゲストOS(atde3)で、SDカードが認識されないためちょっと手順が面倒になってます。

[カーネルの書き込み]

$ sudo hermit download --input-file $ANDROID/kernel/linux.bin.gz
--region kernel --port /dev/ttyS0

(PCのUSBポートにRS232C変換アダプタを付けてArmadilloと接続した場合、
CentOS側ではttyUSB0となる。VMPlayerを起動する前に、USB変換アダプタを
接続しておかないと/dev/ttyS0として認識されない)


[microSDにユーザランドを書き込む]

(ゲストOS側、atde3)
$ cd
$ANDROID/vendor/sola/a500fx/image/android/
$ tar czvf ../a500fx-android-froyo.tgz
ホストOSが読み込みできる場所に、コピーする

(ホストOS側、CentOS)
SDをスロットに差し込むと「/media/disk」にマウントされるので、
フォーマットが必要な場合はGPartedなどのパーティション編集ツールなどを使う。


$ cd /media/disk
$ tar xzvf ゲストOS(atde3)で保存したファイル
$ chmod 1000:1000 lost+found



March 24, 2011

LazarusでAndroidアプリを開発(1)

此処で説明した形式は過去のものです、最近動向はこちらを参照してください。

http://tensei.cocolog-nifty.com/weblog/2012/12/fpclazarusandro.html

iPhoneアプリをLazarusで開発することができます。iPhoneアプリとして登録されているものもあるようです。

iPhone関連はこちらを参照してください。

http://wiki.lazarus.freepascal.org/iPhone/iPod_development

http://wiki.lazarus.freepascal.org/iPhone_Laz_Extension

Lazarusを使ってAndroid開発するための参考となるLazarus wikiがありましたので、実際にそのアプリを動かしてみました。

最初はArmadillo-500FXでAndroid 2.2を動かしました。

Device

それから、Lazarusを 0.9.31にアップデートし、Debian/lennyと同様eabiで動くようにしました。

そして、動かしたサンプルです。(コンパイルしただけです(汗;)

1) adb install TurboChessClock4Android-debug.apkしてインストール
Device_3

2) Turbo Chess Clock起動画面

 

Device_5

3) Felipe氏がLazarus and Free Pascalで開発したAbout表示。

Device_6

 



詳細は後ほど・・・
(debian/lennyの解説も途中でした・・・)

November 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

大規模災害に備える

他のアカウント

無料ブログはココログ

Recent Trackbacks