京都GTUG主催のAndroid Hackathonですが、若干名空きが出ているようです。
先着順のうえに8/26の晩に締め切ってしまうそうなので、申し込みはお早めに!
京都GTUG主催のAndroid Hackathonですが、若干名空きが出ているようです。
先着順のうえに8/26の晩に締め切ってしまうそうなので、申し込みはお早めに!
京都GTUG主催のAndroid Hackathonですが、若干名空きが出ているようです。
先着順のうえに8/26の晩に締め切ってしまうそうなので、申し込みはお早めに!
8月上旬に予定されていた、Android Developer Challenge 2、略してADC2のサブミッションサイトがオープンしました。
オープンの予定は遅れましたが、締め切りは変わらず、カリフォルニア時間の8月31日の11時59分までということです。
英語での解説が必須なのと、すでに作成されている方でないと難しいと思いますが、
腕に覚えのある方はチャレンジしてみては?
8月上旬に予定されていた、Android Developer Challenge 2、略してADC2のサブミッションサイトがオープンしました。
オープンの予定は遅れましたが、締め切りは変わらず、カリフォルニア時間の8月31日の11時59分までということです。
英語での解説が必須なのと、すでに作成されている方でないと難しいと思いますが、
腕に覚えのある方はチャレンジしてみては?
Androidのフレームワークのソースコードを日々コンパイルされているみなさん、お元気ですか?
今回はコンパイルする時間を短縮する為のTipsを紹介します。
もちろんAndroid以外にも有効です。
Ubuntuのカーネルの最適化
デフォルトのカーネルでは最近主流のCPUのCore2Duoには最適化されていません。
その為、カーネルをCore2Duo向けに最適化されたコンパイルをしてカーネルを入れ替えてしまいましょう。
VMWareの場合
この方法はVMWare上のUbuntuでも可能ですが、
VMWare上でCore2Duoを有効にするには、手順の一番初めに
vmxファイルに
numvcpus = "2"
の記述を追加して再起動しておいてください。
これだけでも
make -j4
などでのコンパイルが速くなります。
コンパイルに必要なツールのインストール
まずは下記のコマンドで、apt-getを情報を最新の状態にします。
sudo apt-get updateそしてカーネルコンパイルに必要なツールをインストールします。
sudo apt-get install kernel-package libncurses-dev ncurses-dev libqt3-mt-dev最新カーネルのソースコードの取得とコンパイル
最新カーネルのソースコードを取得します。
sudo apt-get install linux-source取得できたら、/usr/srcに移動します。
$ cd /usr/srcそして先ほど取得したカーネルのソースコードを解凍しましょう。
$ sudo tar xjvf linux-source-2.6.**.tar.bz2※**の部分は取得した時点のカーネルのヴァージョンに依存します。
解凍したディレクトリに移動します。
$ cd /user/src/linux-source-2.6.**※**の部分は取得した時点のカーネルのヴァージョンに依存します。
現在のカーネルのconfigをコピーしておきます。
$ sudo cp /boot/config-2.6.**-**-generic .config※**の部分は現在のカーネルのヴァージョンに依存します。
/boot以下にある、最も新しいカーネルのconfigファイルを指定してください。
コピーしたconfigファイルの設定を反映させます。
$ sudo make oldconfig現在のカーネルと最新のカーネルの間でコンパイルオプションが追加されている場合はいくつか質問されますが、Enterを押してデフォルト値で構いません。
xconfigでGUIでカーネルのconfigを変更します。
$ sudo make xconfig※xを使っていない場合はmenuconfigで。
以下の項目を変更します。
Processor type and features->Processor family->Core 2/newer Xeon
Processor type and features->Preemptible Kernel(Low-Latency Desktop)
Processor type and features->Timer frequency->1000Hz
変更したらCtrl+Sで保存してウインドウを閉じます。
変更したカーネルを識別できるようにEXTRAVERSIONを変更しておきます。
$ sudo vi Makefile
EXTRAVERSION = -**-core2duo※**は最新カーネルのヴァージョンに依存します。
「-core2duo」は任意の文字列で構いません。カーネルのヴァージョン番号の最後に付加されます。
コンパイルします。
$ sudo make-kpkg --initrd kernel_imageコンパイルが完了したら、カーネルパッケージをインストールします。
#ひとつ上のディレクトリにカーネルのdebパッケージが作成されているはずです。
$ cd ..
$ sudo dpkg -i linux-image-2.6.**-**-core2duo_2.6.**-**-core2duo-10.00.Custom_i386.deb※**の部分は取得した時点のカーネルのヴァージョンに依存します。
成功していれば、OS再起動後に起動するカーネルを選択できるようになっているはずです。
適用されているかどうかは「uname -r」か「uname -a」で確認できます。
$ uname -r
2.6.**.**-core2duo
Android自体にはあまり関係ないですが、少しでもお役に立てば幸いです。
Androidのフレームワークのソースコードを日々コンパイルされているみなさん、お元気ですか?
今回はコンパイルする時間を短縮する為のTipsを紹介します。
もちろんAndroid以外にも有効です。
Ubuntuのカーネルの最適化
デフォルトのカーネルでは最近主流のCPUのCore2Duoには最適化されていません。
その為、カーネルをCore2Duo向けに最適化されたコンパイルをしてカーネルを入れ替えてしまいましょう。
VMWareの場合
この方法はVMWare上のUbuntuでも可能ですが、
VMWare上でCore2Duoを有効にするには、手順の一番初めに
vmxファイルに
numvcpus = "2"
の記述を追加して再起動しておいてください。
これだけでも
make -j4
などでのコンパイルが速くなります。
コンパイルに必要なツールのインストール
まずは下記のコマンドで、apt-getを情報を最新の状態にします。
sudo apt-get updateそしてカーネルコンパイルに必要なツールをインストールします。
sudo apt-get install kernel-package libncurses-dev ncurses-dev libqt3-mt-dev最新カーネルのソースコードの取得とコンパイル
最新カーネルのソースコードを取得します。
sudo apt-get install linux-source取得できたら、/usr/srcに移動します。
$ cd /usr/srcそして先ほど取得したカーネルのソースコードを解凍しましょう。
$ sudo tar xjvf linux-source-2.6.**.tar.bz2※**の部分は取得した時点のカーネルのヴァージョンに依存します。
解凍したディレクトリに移動します。
$ cd /user/src/linux-source-2.6.**※**の部分は取得した時点のカーネルのヴァージョンに依存します。
現在のカーネルのconfigをコピーしておきます。
$ sudo cp /boot/config-2.6.**-**-generic .config※**の部分は現在のカーネルのヴァージョンに依存します。
/boot以下にある、最も新しいカーネルのconfigファイルを指定してください。
コピーしたconfigファイルの設定を反映させます。
$ sudo make oldconfig現在のカーネルと最新のカーネルの間でコンパイルオプションが追加されている場合はいくつか質問されますが、Enterを押してデフォルト値で構いません。
xconfigでGUIでカーネルのconfigを変更します。
$ sudo make xconfig※xを使っていない場合はmenuconfigで。
以下の項目を変更します。
Processor type and features->Processor family->Core 2/newer Xeon
Processor type and features->Preemptible Kernel(Low-Latency Desktop)
Processor type and features->Timer frequency->1000Hz
変更したらCtrl+Sで保存してウインドウを閉じます。
変更したカーネルを識別できるようにEXTRAVERSIONを変更しておきます。
$ sudo vi Makefile
EXTRAVERSION = -**-core2duo※**は最新カーネルのヴァージョンに依存します。
「-core2duo」は任意の文字列で構いません。カーネルのヴァージョン番号の最後に付加されます。
コンパイルします。
$ sudo make-kpkg --initrd kernel_imageコンパイルが完了したら、カーネルパッケージをインストールします。
#ひとつ上のディレクトリにカーネルのdebパッケージが作成されているはずです。
$ cd ..
$ sudo dpkg -i linux-image-2.6.**-**-core2duo_2.6.**-**-core2duo-10.00.Custom_i386.deb※**の部分は取得した時点のカーネルのヴァージョンに依存します。
成功していれば、OS再起動後に起動するカーネルを選択できるようになっているはずです。
適用されているかどうかは「uname -r」か「uname -a」で確認できます。
$ uname -r
2.6.**.**-core2duo
Android自体にはあまり関係ないですが、少しでもお役に立てば幸いです。
http://www.ospn.jp/osc2009-nagoya/
てづくりAndroidケータイを展示します。
2009年8月22日(土) 10:00-18:15
名古屋市立大学 山の畑キャンパス 教養教育棟(2号館) 2階
(地下鉄桜通線『桜山』徒歩15分)
無料
セミナでも登壇します。
209教室(108名) 17:10~
手作りAndroidケータイでんわ。
http://www.ospn.jp/osc2009-nagoya/
てづくりAndroidケータイを展示します。
2009年8月22日(土) 10:00-18:15
名古屋市立大学 山の畑キャンパス 教養教育棟(2号館) 2階
(地下鉄桜通線『桜山』徒歩15分)
無料
セミナでも登壇します。
209教室(108名) 17:10~
手作りAndroidケータイでんわ。
2009年8月21日 18:30~
京都リサーチパークの4号館 2F 2A会議室です。
JR嵯峨野線(山陰線)丹波口駅下車 西へ徒歩5分
タイムテーブルは以下の通り
18:30 | 受付設置(- 19:15) |
19:00 - 19:10 | 挨拶 |
19:10~19:35 | 位置情報、加速度センサ 有限会社シーリス 有山さん |
19:35~20:00 | OpenGL 日本Androidの会宮川さん |
20:00~20:05 | 休憩 |
20:05~20:35 | 待受けウィジェットの作り方 日本Androidの会宮川さん |
20:35~21:00 | メディア再生 ブリリアントサービス 杉本 |
メディアの再生系をやります。Androidのver1.5は1.1と同じやりかたでは、videoの再生が出来ないようになっています。
そのあたりのお話しをします。
2009年8月21日 18:30~
京都リサーチパークの4号館 2F 2A会議室です。
JR嵯峨野線(山陰線)丹波口駅下車 西へ徒歩5分
タイムテーブルは以下の通り
18:30 | 受付設置(- 19:15) |
19:00 - 19:10 | 挨拶 |
19:10~19:35 | 位置情報、加速度センサ 有限会社シーリス 有山さん |
19:35~20:00 | OpenGL 日本Androidの会宮川さん |
20:00~20:05 | 休憩 |
20:05~20:35 | 待受けウィジェットの作り方 日本Androidの会宮川さん |
20:35~21:00 | メディア再生 ブリリアントサービス 杉本 |
メディアの再生系をやります。Androidのver1.5は1.1と同じやりかたでは、videoの再生が出来ないようになっています。
そのあたりのお話しをします。
Androidの現時点での最新環境であるdonutブランチを、Android Dev Phone 1で実際に動作させる手順を公開します。
現在のgit環境では、下記urlに掲載されている公式の手順ではビルドが出来なくなっているので、解決方法も合わせて掲載します。
Building For Dream – Android Open Source Project
http://source.android.com/documentation/building-for-dream
本ドキュメントに記載した手順は、以下の環境で確認しました。
ビルド環境その1 | Ubuntu Linux 8.04LTS (日本語版) をインストール済みのPC(Pentium M 1.5GHz / MEMORY:1GB ) |
---|---|
ビルド環境その2 | Ubuntu Linux 8.04LTS (日本語版) + VMware(ホストPC:Windows)( Core2Duo 3.0GHz / MEMORY:4GB ) |
実機 | Android Dev Phone 1 (Firmware Version 1.5) |
本ドキュメントに記載の手順で作成したイメージは、本ドキュメント作成時点(2009/7/30)では無線LANが動作しません。
本ドキュメントは、実際に作業を進め、動作確認も行った上で公開しておりますが、その内容について、一切保証しないものとします。
万が一、Dev Phone 1 が起動しなくなった場合・故障してしまった場合等、本ドキュメントに記載の手順を実施した結果生じた損害について、弊社ではその責を一切負わないものとします。
弊社ブログ記事 Android のコンパイル環境を整える方法 を参考に環境構築を行います。
ただし、P.71に記載されているソースファイル取得の初期化 repo init を実行する際に以下のコマンドを実行し、ブランチにdonutを指定した上、ソース取得まで行います。
この際、makeはまだ行わないで下さい。
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b donut
$ repo sync
以降の手順では、ビルド環境の構築を以下の構成で行うものとします。
ビルドホーム | /home/bs/mydroid |
---|
Note: local_manifest.xmlの扱いについて
Building For Dreamでは、実機ビルド用ソースを取得するために、local_manifest.xml を編集の上、/home/mydroid/.repo フォルダに配置する手順が記載されています。
しかし、本ドキュメントを作成時点(2009/7/30)では、実機ビルド用のソース取得定義がmanifest.xmlに含まれており、実機カーネルを再構築しない限り、local_manifest.xmlを作成・編集する必要はありません。
Dev Phone 1から、機種固有ドライバ等、ソース公開が行われていない、プロプライエタリなドライバ/ライブラリを取得します。
なお、取得する前に、必ずDev Phone 1のファームウェアを1.5にアップデートしておいてください。
Flashing your Android Dev Phone with a Factory System Image - htc
http://www.htc.com/www/support/android/adp.html
Dev Phone 1をPCに接続するため、以下のurlを参考に、Dev Phone 1用のデバイスファイルを作成します。
Developing on a Device - Android Developers
http://developer.android.com/intl/ja/guide/developing/device.html
を参考に、ルート権限で以下のデバイスファイルを 50-android.rules という名前で作成し、
/etc/udev/rules.d/ に配置します。
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
上記ファイル作成後、Dev Phone 1を接続します。
以下のコマンドを実行し、Dev Phone 1がPC上で認識している事を確認します。
$ adb devices
List of devices attached
HTxxxxxxxxxx device
ディレクトリ /home/bs/mydroid/vendor/htc/dream-open/ に存在する、extract-files.sh を実行し、Dev Phone 1 からプロプライエタリファイルの取得を行います・・・が、このまま取得すると、Dev Phone 1に書き込んだ際に音が鳴りません。不足ファイルを取得するために、以下のファイルに対し、追加修正します。
adb pull /system/lib/libhtc_acoustic.so proprietary/libhtc_acoustic.so
PRODUCT_COPY_FILES += \
$(proprietary)/libhtc_acoustic.so:system/lib/libhtc_acoustic.so
上記ファイルの追加修正後、以下のコマンドを実行して、プロプライエタリファイルを取得します。
$ cd /home/bs/mydroid/vendor/htc/dream-open
$ ./extract-files.sh
以下の内容のファイルを buildspec.mk というファイル名で作成し、ビルドホーム /home/bs/mydroidに配置します。
TARGET_PRODUCT:=htc_dream
ビルドホームに移動して、ビルドを行います。
$ cd /home/bs/mydroid
$ make
ビルドが無事に成功すると、ディレクトリ /home/bs/mydroid/out/target/products/dream-open に、以下のイメージファイルが作成されます。
ブートイメージ | boot.img |
---|---|
システムイメージ | system.img |
リカバリイメージ | recovery.img |
ユーザーデータ | userdata.img |
Dev Phone 1へ書き込むためのツール fastboot が ディレクトリ /home/mydroid/out/host/linuxx86/
bin/ にあるので、~/bin 等、パスの通ったディレクトリにコピーしておきます。
$ cp /home/bs/mydroid/out/host/linux-x86/bin/fastboot ~/bin
Vmware上では、Linux版fastbootが動作しないため、Dev Phone 1のファームウェアダウンロードサイト(以下のurl)にて、Windows版fastboot(fastboot.exe)のダウンロードを行います。
Flashing your Android Dev Phone with a Factory System Image - htc
http://www.htc.com/www/support/android/adp.html
ダウンロード後、パスの通ったディレクトリにコピーしておきます。
ディレクトリ /home/bs/mydroid/out/target/dream-open に生成された各ビルドイメージファイルをfastbootで Dev Phone 1に書き込みます。
Dev Phone 1の電源をOFFにした状態で、backキーを押しながら電源ON します。
Serial0 という文字列が表示される事を確認し、USBケーブルでPCに接続します。
その際、FASTBOOT という文字列に変わる事を確認します。
以下のコマンドを実行し、Dev Phone 1に書き込みます。
$ fastboot flash recovery recovery.img
$ fastboot flash system system.img
$ fastboot flash boot boot.img
$ fastboot flash userdata userdata.img
Dev Phone 1を以下のコマンドでリブートします。
$ fastboot reboot
Dev Phone 1を再起動後、ランチャーから、Setting アプリを起動し、 About phone を選択します。
Firmware version で “Donut” の表示を確認してください。
Note:端末がロックされてしまった場合の対処方法
Dev Phone 1を起動後、SIMカードを挿入していない場合は、端末がロックされ緊急発呼しか行えない場合があります。この状態を回避し、Menuキーを有効にする方法は以下の通りです。
参考url:
Not able to enter full phone functionality when no SIM - why?
http://groups.google.com/group/android-porting/browse_thread/thread/4f0fdc5c2b1fd9fa
1. adb shell コマンドを実行し、Dev Phone 1上のシェルを起動します。
$ adb shell2. 以下のコマンドを実行し、/data/local.prop を生成後、リブートを行います。
# echo "keyguard.no_require_sim=1" > /data/local.prop
# sync
# reboot
本手順で作成したイメージには、Maps、Gmail、Android Marketが含まれない等、制約が多いですが、実機で動作させつつ、ネイティブフレームワーク部のログ出力等、コアなデバッグを行う上で有用なのではないかと考えています。
また、弊社では、自社製作のAndroid端末を開発していますが、個人レベルでハードウェアまで製作することは非常に困難だと思います。しかし、ソフトウェアレベルであれば、世界に一つだけの端末を作る…等とった事も可能です。
Androidの現時点での最新環境であるdonutブランチを、Android Dev Phone 1で実際に動作させる手順を公開します。
現在のgit環境では、下記urlに掲載されている公式の手順ではビルドが出来なくなっているので、解決方法も合わせて掲載します。
Building For Dream – Android Open Source Project
http://source.android.com/documentation/building-for-dream
本ドキュメントに記載した手順は、以下の環境で確認しました。
ビルド環境その1 | Ubuntu Linux 8.04LTS (日本語版) をインストール済みのPC(Pentium M 1.5GHz / MEMORY:1GB ) |
---|---|
ビルド環境その2 | Ubuntu Linux 8.04LTS (日本語版) + VMware(ホストPC:Windows)( Core2Duo 3.0GHz / MEMORY:4GB ) |
実機 | Android Dev Phone 1 (Firmware Version 1.5) |
本ドキュメントに記載の手順で作成したイメージは、本ドキュメント作成時点(2009/7/30)では無線LANが動作しません。
本ドキュメントは、実際に作業を進め、動作確認も行った上で公開しておりますが、その内容について、一切保証しないものとします。
万が一、Dev Phone 1 が起動しなくなった場合・故障してしまった場合等、本ドキュメントに記載の手順を実施した結果生じた損害について、弊社ではその責を一切負わないものとします。
弊社ブログ記事 Android のコンパイル環境を整える方法 を参考に環境構築を行います。
ただし、P.71に記載されているソースファイル取得の初期化 repo init を実行する際に以下のコマンドを実行し、ブランチにdonutを指定した上、ソース取得まで行います。
この際、makeはまだ行わないで下さい。
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b donut
$ repo sync
以降の手順では、ビルド環境の構築を以下の構成で行うものとします。
ビルドホーム | /home/bs/mydroid |
---|
Note: local_manifest.xmlの扱いについて
Building For Dreamでは、実機ビルド用ソースを取得するために、local_manifest.xml を編集の上、/home/mydroid/.repo フォルダに配置する手順が記載されています。
しかし、本ドキュメントを作成時点(2009/7/30)では、実機ビルド用のソース取得定義がmanifest.xmlに含まれており、実機カーネルを再構築しない限り、local_manifest.xmlを作成・編集する必要はありません。
Dev Phone 1から、機種固有ドライバ等、ソース公開が行われていない、プロプライエタリなドライバ/ライブラリを取得します。
なお、取得する前に、必ずDev Phone 1のファームウェアを1.5にアップデートしておいてください。
Flashing your Android Dev Phone with a Factory System Image - htc
http://www.htc.com/www/support/android/adp.html
Dev Phone 1をPCに接続するため、以下のurlを参考に、Dev Phone 1用のデバイスファイルを作成します。
Developing on a Device - Android Developers
http://developer.android.com/intl/ja/guide/developing/device.html
を参考に、ルート権限で以下のデバイスファイルを 50-android.rules という名前で作成し、
/etc/udev/rules.d/ に配置します。
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
上記ファイル作成後、Dev Phone 1を接続します。
以下のコマンドを実行し、Dev Phone 1がPC上で認識している事を確認します。
$ adb devices
List of devices attached
HTxxxxxxxxxx device
ディレクトリ /home/bs/mydroid/vendor/htc/dream-open/ に存在する、extract-files.sh を実行し、Dev Phone 1 からプロプライエタリファイルの取得を行います・・・が、このまま取得すると、Dev Phone 1に書き込んだ際に音が鳴りません。不足ファイルを取得するために、以下のファイルに対し、追加修正します。
adb pull /system/lib/libhtc_acoustic.so proprietary/libhtc_acoustic.so
PRODUCT_COPY_FILES += \
$(proprietary)/libhtc_acoustic.so:system/lib/libhtc_acoustic.so
上記ファイルの追加修正後、以下のコマンドを実行して、プロプライエタリファイルを取得します。
$ cd /home/bs/mydroid/vendor/htc/dream-open
$ ./extract-files.sh
以下の内容のファイルを buildspec.mk というファイル名で作成し、ビルドホーム /home/bs/mydroidに配置します。
TARGET_PRODUCT:=htc_dream
ビルドホームに移動して、ビルドを行います。
$ cd /home/bs/mydroid
$ make
ビルドが無事に成功すると、ディレクトリ /home/bs/mydroid/out/target/products/dream-open に、以下のイメージファイルが作成されます。
ブートイメージ | boot.img |
---|---|
システムイメージ | system.img |
リカバリイメージ | recovery.img |
ユーザーデータ | userdata.img |
Dev Phone 1へ書き込むためのツール fastboot が ディレクトリ /home/mydroid/out/host/linuxx86/
bin/ にあるので、~/bin 等、パスの通ったディレクトリにコピーしておきます。
$ cp /home/bs/mydroid/out/host/linux-x86/bin/fastboot ~/bin
Vmware上では、Linux版fastbootが動作しないため、Dev Phone 1のファームウェアダウンロードサイト(以下のurl)にて、Windows版fastboot(fastboot.exe)のダウンロードを行います。
Flashing your Android Dev Phone with a Factory System Image - htc
http://www.htc.com/www/support/android/adp.html
ダウンロード後、パスの通ったディレクトリにコピーしておきます。
ディレクトリ /home/bs/mydroid/out/target/dream-open に生成された各ビルドイメージファイルをfastbootで Dev Phone 1に書き込みます。
Dev Phone 1の電源をOFFにした状態で、backキーを押しながら電源ON します。
Serial0 という文字列が表示される事を確認し、USBケーブルでPCに接続します。
その際、FASTBOOT という文字列に変わる事を確認します。
以下のコマンドを実行し、Dev Phone 1に書き込みます。
$ fastboot flash recovery recovery.img
$ fastboot flash system system.img
$ fastboot flash boot boot.img
$ fastboot flash userdata userdata.img
Dev Phone 1を以下のコマンドでリブートします。
$ fastboot reboot
Dev Phone 1を再起動後、ランチャーから、Setting アプリを起動し、 About phone を選択します。
Firmware version で “Donut” の表示を確認してください。
Note:端末がロックされてしまった場合の対処方法
Dev Phone 1を起動後、SIMカードを挿入していない場合は、端末がロックされ緊急発呼しか行えない場合があります。この状態を回避し、Menuキーを有効にする方法は以下の通りです。
参考url:
Not able to enter full phone functionality when no SIM - why?
http://groups.google.com/group/android-porting/browse_thread/thread/4f0fdc5c2b1fd9fa
1. adb shell コマンドを実行し、Dev Phone 1上のシェルを起動します。
$ adb shell2. 以下のコマンドを実行し、/data/local.prop を生成後、リブートを行います。
# echo "keyguard.no_require_sim=1" > /data/local.prop
# sync
# reboot
本手順で作成したイメージには、Maps、Gmail、Android Marketが含まれない等、制約が多いですが、実機で動作させつつ、ネイティブフレームワーク部のログ出力等、コアなデバッグを行う上で有用なのではないかと考えています。
また、弊社では、自社製作のAndroid端末を開発していますが、個人レベルでハードウェアまで製作することは非常に困難だと思います。しかし、ソフトウェアレベルであれば、世界に一つだけの端末を作る…等とった事も可能です。
Android KitKat Hacks プロが教えるテクニック & ツール
株式会社ブリリアントサービス 著
NFC Hacks プロが教えるテクニック&ツール
株式会社ブリリアントサービス 著
Androidプログラミングの教科書
藤田 竜史、要 徳幸、住友 孝郎、日高 正博、小林 慎治、木村 尭海 著
入門Androidアプリケーションテスト
瀬戸 直喜/株式会社ブリリアントサービス 著
実践スマートフォンアプリケーション開発
株式会社ブリリアントサービス、八木 俊広、原 昇平、かわかみ ひろき 著
ジオモバイルプログラミング
郷田まり子/宅間俊志/近藤昭雄 著
ANDROID HACKS プロが教えるテクニック&ツール
株式会社ブリリアントサービス 著