Android
目次
Android デバイスの操作
MTP を使ってファイルマネージャと統合して Android デバイスのストレージの中身を表示するには、MTP#インストール を参照してください。
adb や fastboot でスマートフォンに接続したい場合は、#Android Debug Bridge (ADB) までスキップしてください。
Android 開発
Arch Linux で Android アプリケーションを開発できるようにするためには3つの手順を踏む必要があります:
- Android SDK コアコンポーネントのインストール
- Android SDK プラットフォームパッケージのインストール
- Android SDK に対応している IDE のインストール
Android SDK コアコンポーネント
Android アプリケーションの開発を始める前に、Android SDK をインストールしてください。3つのパッケージに別れており、すべて AUR からインストールできます:
Android-sdk は /opt/android-sdk
にインストールされます。このフォルダは root パーミッションになるので、sdk マネージャは root で実行してください。root でないと /opt/android-sdk
上のものをインストール・アップデート・修正することができません。通常ユーザーで使いたい場合は、以下の手順に従って下さい。
Android sdk ユーザーグループを作成 (名前は何でもいいです):
# groupadd sdkusers
ユーザーをグループに追加:
# gpasswd -a <user> sdkusers
フォルダの所有者とグループを変更:
# chown -R :sdkusers /opt/android-sdk/
フォルダのパーミッションを変更して読み書き実行を可能にする:
# chmod -R g+w /opt/android-sdk/
再ログインあるいは <user> として新しく作成したグループでターミナルにログイン:
$ newgrp sdkusers
Android SDK プラットフォーム API
必要な Android SDK Platform パッケージを AUR からインストールしてください:
- android-platformAUR (最新)
- android-platform-23AUR
- android-platform-22AUR
- android-platform-21AUR
- android-platform-20AUR
- android-platform-19AUR
- android-platform-18AUR
- android-platform-17AUR
- android-platform-16AUR
- android-platform-15AUR
- android-platform-14AUR
- android-platform-13AUR
- android-platform-12AUR
- android-platform-11AUR
- android-platform-10AUR
- android-platform-9AUR
- android-platform-8AUR
- android-platform-7AUR
- android-platform-6AUR
- android-platform-5AUR
- android-platform-4AUR
- android-platform-3AUR
- android-platform-2AUR
開発環境
Android Studio は IntelliJ IDEA がベースの新しい (実験的な) Android 開発環境です。伝統的な IDE としては Eclipse に ADT プラグインと関連するパッケージを加えたものがあります。もしくは、下に記述しているプラグインをインストールした後 Netbeans を使って開発することもできます。
Android Studio
ADT プラグインのある Eclipse のように、Android Studio も開発とデバッグのための統合された Android 開発者ツールを提供しています。
Android Studio は AUR の android-studioAUR パッケージでダウンロード・インストールすることが可能です。SDK が存在しないというエラーが表示された場合は、上記の Android SDK プラットフォーム API に関するセクションを見て下さい。
通常、アプリは Android Studio の GUI からビルドします。コマンドラインからアプリをビルドするには (例: ./gradlew assembleDebug
)、以下を ~/.bashrc
に追加してください:
export ANDROID_HOME=/opt/android-sdk
Eclipse
Eclipse で Android 開発を行うためのものは大体 AUR でパッケージ化されています:
Google の公式プラグイン – Eclipse ADT:
依存パッケージ:
- eclipse-emfAUR
- eclipse-gefAUR
- eclipse-wtpAUR
Android SDK の場所のパスを設定で入力してください:
Windows -> Preferences -> Android
Netbeans
IDE として Netbeans を使って Android アプリケーションを開発したい場合は、以下から NBAndroid をダウンロードしてください:
Tools -> Plugins -> Settings
次の URL を追加: http://nbandroid.org/release81/updates/updates.xml
Available Plugins から Android と JUnit プラグインをインストールしてください。インストールしたら:
Tools -> Options -> Miscellaneous -> Android
から SDK をインストールしたパスを選択します (デフォルトは /opt/android-sdk
)。これで完了です。Netbeans を使って新しい Android プロジェクトを作成して開発を始めることができます。
Android Debug Bridge (ADB)
実機に接続
ADB で Arch 下の実機やスマートフォンに接続するには、以下を実行する必要があります:
- android-tools をインストール。適当な
/dev/
エントリにデバイスを接続するには android-udev もインストールする必要があります。 - スマートフォンやデバイスで USB デバッグを有効にする。
- Jelly Bean (4.2) 以降:
設定 --> 端末情報
を開いてデベロッパーになったというポップアップが表示されるまで “Build Number” をタップ (約10回連打)。そして設定 --> 開発者向けオプション --> USB デバッグ
から USB デバッグを有効にする。 - 古いバージョン:
設定 --> アプリケーション --> 開発 --> USB デバッグ
から有効にできます。このオプションにチェックを入れた後はスマートフォンを再起動して USB デバッグを有効にしてください。
- Jelly Bean (4.2) 以降:
- ユーザーを adbusers グループに追加します (
# gpasswd -a username adbusers
)。
ADB がデバイスを認識したら (IDE からアクセスできる状態)、完了です。認識しない場合は以下を見て下さい。
デバイス ID を確かめる
それぞれの Android デバイスには USB ベンダー・プロダクト ID が存在します。例えば HTC Evo なら:
vendor id: 0bb4 product id: 0c8d
デバイスを接続して次を実行してください:
$ lsusb
以下のように表示されるはずです:
Bus 002 Device 006: ID 0bb4:0c8d High Tech Computer Corp.
udev ルールを追加する
Android developer のルールを使うか以下のテンプレートを使って udev ルールを作って下さい。[VENDOR ID] と [PRODUCT ID] はあなたの ID に置き換えて下さい。ルールを /etc/udev/rules.d/51-android.rules
にコピー:
/etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE="0666", GROUP="adbusers" SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_adb" SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_fastboot"
そして、新しい udev ルールをリロードするために、次を実行:
# udevadm control --reload-rules
adb の設定
udev ルールを使う代わりにベンダー id のリストを記述する ~/.android/adb_usb.ini
を作成・編集することができます。
$ cat ~/.android/adb_usb.ini
0x27e8
動作するか確認
udev ルールを設定したら、デバイスのプラグを一度抜いてから再接続してください。
次のコマンドを実行すれば:
$ adb devices
以下のように表示されるはずです:
List of devices attached HT07VHL00676 device
adb を使ってデバイスとコンピュータ間でファイルを転送することができます。ファイルをデバイスに送信するには次のコマンドを使用:
$ adb push <what-to-copy> <where-to-place>
ファイルを受信するには:
$ adb pull <what-to-pull> <where-to-place>
adb プログラムがない場合 (通常は /opt/android-sdk/platform-tools/
にあります)、プラットフォームツールがインストールされていません。空のリストが表示される (デバイスがない) 場合、デバイスの USB デバッグが有効になっていません。
adb がデバイスの下に ???????? no permissions
と表示する問題が起こる場合、adb サーバーを root で再起動してみてください:
# adb kill-server # adb start-server
NVIDIA Tegra プラットフォーム
あなたのアプリケーションが NVIDIA の Tegra プラットフォームを対象にする場合、NVIDIA によって提供されているツールやサンプル、ドキュメントなどをインストールすると良いでしょう。NVIDIA Developer Zone for Mobile には2つのツールが存在します:
- Tegra Android Development Pack には Eclipse ADT に関連するツール (NVIDIA Debug Manager) とそのドキュメントが入っています。
- Tegra Toolkit にはツール (ほとんどは CPU と GPU の最適化に関するもの) とサンプル、ドキュメントが入っています。
どちらも AUR からはインストールできません、ダウンロードするのに NVIDIA のサイトで登録・ログインが必要だからです。
Android のビルド
以下の手順は 公式の AOSP のビルド手順 を元にしています。CyanogenMod などの Android 派生環境の場合、大抵は追加のステップが必要になります。
OS のビット数
32ビット環境でビルドできる Android は Android 2.2.x (Froyo) 以下の古いバージョンだけです。2.3.x (Gingerbread) 以上では、64ビット環境が必要になります。
必要なパッケージ
どのバージョンの Android でも、ビルドするには以下のパッケージをインストールする必要があります:
- 32ビットと64ビット環境で共通: gcc git gnupg flex bison gperf sdl wxgtk squashfs-tools curl ncurses zlib schedtool perl-switch zip unzip libxslt python2-virtualenv bc
- 64ビット環境でのみ必須: gcc-multilib lib32-zlib lib32-ncurses lib32-readline
- AUR パッケージ: libtinfoAUR ncurses5-compat-libsAUR
Android 6 以上をビルドするには、以下のパッケージもインストールする必要があります:
- 32ビット環境と64ビット環境で共通: rsync
Java Development Kit
Android 5 以前では、ビルド環境に Sun/Oracle JDK をインストールする必要があります。OpenJDK ではビルドできません。
2.3.x 以上では、jdk6AUR が使えます。2.2.x 以前では、バージョン5の JDK が必要です。
Android 5 Lollipop の場合、jdk7-openjdk が必要になります。ビルドのときにチェックが行われ Oracle JDK は弾かれます。また、JAVA_HOME
を /usr/lib/jvm/java-7-openjdk/
に設定して /usr/lib/jvm/java-7-openjdk/bin
がパスの最初にくるようにする必要があります。
ビルド環境の設定
$ mkdir ~/bin $ export PATH=~/bin:$PATH $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo
ビルドのためのディレクトリを作成:
$ mkdir ~/android $ cd ~/android
デフォルトの Python をバージョン3からバージョン2に変更する必要があります:
$ virtualenv2 venv # Creates a directory, venv/, containing the Virtualenv
Virtualenv を有効にして、$PATH を Python 2 に更新します。
$ source venv/bin/activate
ソースコードのダウンロード
リポジトリの複製を行います。Android を初めてビルドするときや、ブランチを切り替えたいときに必要です。
repo
には-j
スイッチがありmake
で使用するのと意味は同じです。同時ダウンロードの数を決めるので、ダウンロードのネットワーク帯域に合わせて調整してください。
-b
スイッチでチェックアウトするブランチ (Android のリリース) を指定する必要があります。スイッチを付けなかった場合、マスターブランチが取得されます。
$ repo init -u https://android.googlesource.com/platform/manifest -b master $ repo sync -j4
しばらく待って下さい。未コンパイルのソースコードと、.repo
と .git
ディレクトリで、10 GB を軽く超えます。
コードのビルド
AOSP のために実行する必要があること:
$ source build/envsetup.sh $ lunch full-eng $ make -j4
lunch に引数を付けないで実行すると、どのビルドを作成するか聞かれます。-j は並列実行するジョブの数を指定します。コア・スレッド数の1倍から2倍の間で設定します。
ビルドには非常に長い時間がかかります。
ビルドのテスト
完了したら、完成したイメージを実行・テストしてください:
$ emulator
書き込みイメージの作成
書き込みできるイメージを作成するには:
$ make -j8 updatepackage
out/target/product/hammerhead
に書き込みできる zip イメージが作成されます (hammerhead はデバイスの名前に置き換えて下さい)。
Android の復元
ときには、Android 携帯端末にカスタム ROM を書き込んだ後に、標準の Android に戻したいという場合もあるでしょう。端末への書き込みについては、XDA フォーラム を参照するようにしてください。
Fastboot
Fastboot (と ADB) は公式リポジトリの android-tools パッケージに付属しています。
Samsung 端末
Samsung の端末は Fastboot ツールを使って書き込みを行うことができません。Heimdall か Odin (Windows と VirtualBox を使用) を利用するのが唯一の方法です。
Heimdall
Heimdall は Samsung の携帯電話にファームウェア (ROM) を書き込むのに使われるクロスプラットフォームのオープンソースツールスイートです。Odin の代わりとして使えるツールとして知られています。Heimdall は heimdall や heimdall-gitAUR でインストールすることが可能です。
実際に書き込みを行う手順は Heimdall の GitHub ページ や XDA フォーラム を参照してください。
Odin (Virtualbox)
Odin を使うことで Samsung のデバイスに標準の Android をリストアさせることができます。ただし VirtualBox が必須です。詳しくは、XDA のスレッド を見てください。
Arch Linux による手順:
- VirtualBox をインストールしてください。エクステンションパックと guest additions も必要です。
- VirtualBox の仮想ハードドライブに Windows オペレーティングシステム (と VirtualBox の guest additions) をインストールしてください。Odin が動くのであればどういうふうにインストールしてもかまいません。
- Windows オペレーティングシステムの VirtualBox 設定を開いて、USB から Enable USB 2.0 (EHCI) Controller にチェックを入れてください。
- Windows オペレーティングシステムが動作している VirtualBox で、メニューバーの Devices をクリックして、USB Devices から USB でコンピュータに接続している Samsung の携帯電話をクリックしてください。
Windows 関連リンク:
- Samsung のドライバーは こちら からダウンロードできます。
- Odin は こちら からダウンロードできます。
- Samsung の Android ファームウェアは こちら からダウンロードできます。
全てが問題ないことを確認するには、Samsung デバイスを接続してダウンロードモードにして、Odin を開いてください。Message という名前の白いボックス (左下) に、以下のように表示されているはずです:
<ID:0/003> Added!!
上記のメッセージは Odin からデバイスが認識されていて、書き込みの準備が整ったことを意味しています。
他の接続方法
adb-sync
adb-sync (adb-sync-gitAUR でインストールできます) は ADB を使って PC と Android デバイスのファイルを同期するツールです。
AirDroid
AirDroid はウェブブラウザからファイルにアクセスするための Android アプリです。
FTP
Arch で FTP サーバーを動作させて携帯からサーバーに接続したり、携帯で FTP サーバーを動作させて Arch から接続することができます。
アプリケーション一覧/インターネット#FTP を見て下さい。Anroid で使える FTP クライアント/サーバーは多数存在します。
SSH サーバー
Android で使える SSH サーバーは多数存在します。scp
コマンドでファイルを転送できるようになります。SSH を参照。
Samba
Samba を参照。
Tips & Tricks
デバッグ中に "Source not found"
大抵はデバッガが Java コードにステップインしたがっています。Android SDK には Android のソースコードは付属していないため、このようなエラーが発生します。ステップフィルターを利用して Java ソースコードにジャンプしないようにするのが解決法としてはベストです。デフォルトではステップフィルターは有効になっていません。有効化するには:
Window -> Preferences -> Java -> Debug -> Step Filtering
全てのアイテムを選択してください。必要であれば android.* パッケージを追加することができます。詳しくは次のフォーラムの投稿を見てください: http://www.eclipsezone.com/eclipse/forums/t83338.rhtml
SD カード上に Linux ディストリビューション
このスレッド に書かれているように Debian をインストールすることができます。chroot で Arch をインストールするガイドが archlinuxarm.org フォーラム にあります。
トラブルシューティング
Android Studio: Android Virtual Devices show 'failed to load'.
#Android Studio に書いているように ANDROID_HOME
変数をエクスポートしてください。
aapt: No such file or directory
ビルドツールには32ビットのバイナリが含まれているため、32ビットのライブラリを必要とします。SDK を手動でインストールする場合、multilib/lib32-libstdc++5 と multilib/lib32-zlib をインストールしなくてはなりません。
ValueError: unsupported pickle protocol
次のコマンドで解決できます:
$ rm ~/.repopickle_.gitconfig
上記のコマンドで解決しない場合、次のコマンドを実行してみてください:
$ rm `find /path/to/android-root -name .repopickle_config`