Android (日本語) - ArchWiki

# Android (日本語)

関連記事

- Android Notifier
- Android テザリング

## Android デバイスの操作

MTP を使ってファイルマネージャと統合して Android デバイスのストレージの中身を表示するには、MTP#インストール を参照してください。

adb や fastboot でスマートフォンに接続したい場合は、#実機に接続 - Android Debug Bridge (ADB) までスキップしてください。

## Android 開発

Arch Linux で Android アプリケーションを開発できるようにするためには3つの手順を踏む必要があります:

1. Android SDK コアコンポーネントのインストール
2. Android SDK プラットフォームパッケージのインストール
3. Android SDK に対応している IDE のインストール

### Android SDK コアコンポーネント

Note: 64ビット環境を使っている場合は、最初に pacman.conf で multilib リポジトリを有効にしてください。

Android アプリケーションの開発を始める前に、Android SDK をインストールしてください。3つのパッケージに別れており、すべて AUR からインストールできます:

1. android-sdk
2. android-sdk-platform-tools
3. android-sdk-build-tools

Android-sdk は `/opt/android-sdk` にインストールされます。このフォルダは root パーミッションになるので、sdk マネージャは root で実行してください。root でないと `/opt/android-sdk` 上のものをインストール・アップデート・修正することができません。通常ユーザーで使いたい場合は、以下の手順に従って下さい。

Android sdk ユーザーグループを作成 (名前は何でもいいです):

    # groupadd sdkusers

ユーザーをグループに追加:

    # gpasswd -a <user> sdkusers

フォルダの所有者とグループを変更:

    # chown -R <user>:sdkusers /opt/android-sdk/

フォルダのパーミッションを変更して読み書き実行を可能にする:

    # chmod -R 0774 /opt/android-sdk/

Note: AUR のパッケージを使って全てのユーザー共通でインストールする代わりに、上流の手順に従って SDK をユーザーのホームディレクトリにインストールすることもできます。

### Android SDK プラットフォーム API

必要な Android SDK Platform パッケージを AUR からインストールしてください:

- android-platform (最新)
- android-platform-21
- android-platform-20
- android-platform-19
- android-platform-18
- android-platform-17
- android-platform-16
- android-platform-15
- android-platform-14
- android-platform-13
- android-platform-12
- android-platform-11
- android-platform-10
- android-platform-9
- android-platform-8
- android-platform-7
- android-platform-7
- android-platform-6
- android-platform-5
- android-platform-4
- android-platform-3
- android-platform-2

### 開発環境

Android Studio は IntelliJ IDEA がベースの新しい (実験的な) Android 開発環境です。伝統的な IDE としては Eclipse に ADT プラグインと関連するパッケージを加えたものがあります。もしくは、下に記述しているプラグインをインストールした後 Netbeans を使って開発することもできます。

#### Android Studio

ADT プラグインのある Eclipse のように、Android Studio も開発とデバッグのための統合された Android 開発者ツールを提供しています。

Android Studio は AUR の android-studio パッケージでダウンロード・インストールすることが可能です。SDK が存在しないというエラーが表示された場合は、上記の Android SDK プラットフォーム API に関するセクションを見て下さい。

タイル型ウィンドウマネージャを使っている場合、この issue ページに書かれているフィックスを適用する必要があります。

#### Eclipse

Eclipse で Android 開発を行うためのものは大体 AUR でパッケージ化されています:

Google の公式プラグイン – Eclipse ADT:

1. eclipse-android

依存パッケージ:

1. eclipse-emf
2. eclipse-gef
3. eclipse-wtp

Note:

- 依存関係が解決できないというメッセージが表示される場合は、Java を手動でインストールして再度試して下さい。
- 別の方法として、eclipse の "add new software" コマンドから ADT をインストールすることもできます (ADT のサイトに書かれている手順を参照)。
- 問題が発生する場合は、Android SDK をダウンロードして、それにバンドルされている Eclipse を使用することもできます。これは基本的に問題なく動作するはずです。
- AUR にない SDK プラグインを追加でインストールしたい場合は、まず `/opt/android-sdk` ファイルの所有者を変更する必要があります。`# chgrp -R users /opt/android-sdk ; chmod -R 0775 /opt/android-sdk` で変更できます (詳しくは File Permissions を参照)。

Android SDK の場所のパスを設定で入力してください:

    Windows -> Preferences -> Android

Note: AUR のパッケージをアップグレードした後、Eclipse にプラグインが表示されなくなった場合、おそらく eclipse が昔のキャッシュを保持してしまっています。`sudo eclipse -clean` を実行すればキャッシュが削除されます。問題が直らないときは、eclipse とプラグインを全てアンインストールして、`/usr/share/eclipse` を削除し、それから全てを再インストールしてください。

#### Netbeans

IDE として Netbeans を使って Android アプリケーションを開発したい場合は、以下から nbandroid をダウンロードしてください:

    Tools -> Plugins -> Settings

次の URL を追加: http://nbandroid.org/updates/updates.xml

Available Plugins から Android と JUnit プラグインをインストールしてください。インストールしたら:

    Tools -> Options -> Miscellaneous -> Android

から SDK をインストールしたパスを選択します (デフォルトは `/opt/android-sdk`)。これで完了です。Netbeans を使って新しい Android プロジェクトを作成して開発を始めることができます。

### 実機に接続 - Android Debug Bridge (ADB)

Tip: デバイスによっては、ADB を動作させる前に、デバイスの MTP を有効にする必要があります。

ADB で Arch 下の実機やスマートフォンに接続するには、以下を実行する必要があります:

- android-tools をインストール。
- スマートフォンやデバイスで USB デバッグを有効にする。
  - Jelly Bean (4.2) 以降: `設定 --> 端末情報` を開いてデベロッパーになったというポップアップが表示されるまで “Build Number” をタップ (約10回連打)。そして `設定 --> 開発者向けオプション --> USB デバッグ` から USB デバッグを有効にする。
  - 古いバージョン: `設定 --> アプリケーション --> 開発 --> USB デバッグ` から有効にできます。このオプションにチェックを入れた後はスマートフォンを再起動して USB デバッグを有効にしてください。
- android-udev をインストールして適当な `/dev/` エントリにデバイスを接続します。
- ユーザーを 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"
    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 プログラムがない場合 (通常は `/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つのツールが存在します:

1. Tegra Android Development Pack には Eclipse ADT に関連するツール (NVIDIA Debug Manager) とそのドキュメントが入っています。
2. 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

- 64ビット環境でのみ必須: gcc-multilib lib32-zlib lib32-ncurses lib32-readline

### Java Development Kit

Android 5 以前では、ビルド環境に Sun/Oracle JDK をインストールする必要があります。OpenJDK ではビルドできません。

2.3.x 以上では、jdk6 が使えます。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` がパスの最初にくるようにする必要があります。

### ビルド環境の設定

`repo` ユーティリティをダウンロード:

    $ mkdir ~/bin
    $ export PATH=~/bin:$PATH
    $ curl http://commondatastorage.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

Note: During build you may receive error pertaining to missing python modules. A quick and dirty fix is to symlink /usr/lib/python2.7/* to ~/android/venv/python2.7/ (Change ~/android to reflect your build directory if different than above).

例:

    $ ln -s /usr/lib/python2.7/* /Data/Android_Build/venv/python2.7/

Virtualenv を有効にして、$PATH を Python 2 に更新します。

Note: this activation is only active for the current terminal session.

    $ 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 を軽く超えます。

Note: あとで Android ソースのローカルコピーを更新したい場合は、ビルドディレクトリに移動して、Virtualenv をロードして、再同期してください:

    $ repo sync

### コードのビルド

AOSP のために実行する必要があること:

    $ source build/envsetup.sh
    $ lunch full-eng
    $ make -j4

lunch に引数を付けないで実行すると、どのビルドを作成するか聞かれます。-j は並列実行するジョブの数を指定します。コア・スレッド数の1倍から2倍の間で設定します。

ビルドには非常に長い時間がかかります。

Note: 十分な RAM があることを確認してください。Android は /tmp ディレクトリを重度に使用します。デフォルトでは /tmp フォルダがマウントされるパーティションのサイズは RAM の半分になっています。/tmp が満杯になると、ビルドは失敗します。RAM は 4GB 以上あることが推奨されます。もしくは、fstab から tmpfs を完全に削除してください。

### ビルドのテスト

完了したら、完成したイメージを実行・テストしてください:

    $ emulator

### 書き込みイメージの作成

書き込みできるイメージを作成するには:

    $ make -j8 updatepackage

`out/target/product/hammerhead` に書き込みできる zip イメージが作成されます (hammerhead はデバイスの名前に置き換えて下さい)。

## Tips & Tricks

### During Debugging "Source not found"

Most probably the debugger wants to step into the Java code. As the source code of Android does not come with the Android SDK, this leads to an error. The best solution is to use step filters to not jump into the Java source code. Step filters are not activated by default. To activate them:

    Window -> Preferences -> Java -> Debug -> Step Filtering

Consider to select them all. If appropriate you can add the android.* package. See the forum post for more information: http://www.eclipsezone.com/eclipse/forums/t83338.rhtml

### Linux distribution on the sdcard

You can install Debian like in this thread. Excellent guide to installing Arch in chroot (in parallel with Android) can be found on archlinuxarm.org forum.

### Arch 64 の Android SDK

64ビット環境で Android SDK と Eclipse プラグインを使用したときに、'emulator' が segfault でクラッシュする場合、次を実行してください: `/usr/share/zoneinfo/localtime` に localtime ファイルをコピーする、例:

    # cp /usr/share/zoneinfo/Asia/Tokyo /usr/share/zoneinfo/localtime

Categories:

- Development (日本語)
- Mobile devices (日本語)