「Android」の版間の差分
細 (ADBについて英語wikiから当wikiへリンク変更) |
|||
(5人の利用者による、間の17版が非表示) | |||
1行目: | 1行目: | ||
+ | [[Category:Android]] |
||
[[Category:開発]] |
[[Category:開発]] |
||
− | [[Category:携帯端末]] |
||
[[en:Android]] |
[[en:Android]] |
||
+ | [[es:Android]] |
||
[[it:Android]] |
[[it:Android]] |
||
− | [[ |
+ | [[zh-hans:Android]] |
− | [[zh-CN:Android]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
− | {{Related|Android Notifier}} |
||
{{Related|Android テザリング}} |
{{Related|Android テザリング}} |
||
+ | {{Related|Android Debug Bridge}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | == |
+ | == ファイル転送 == |
− | + | コンピュータと Android デバイス間でファイルを転送する方法にはいくつかあります: |
|
+ | * USB ケーブル |
||
− | adb や fastboot でスマートフォンに接続したい場合は、[[#実機に接続 - Android Debug Bridge (ADB)]] までスキップしてください。 |
||
+ | ** [[MTP]]: 新しい Android デバイス |
||
+ | ** [[Wikipedia:USB Mass Storage|USB mass storage]] 比較的古い Android デバイス |
||
+ | ** [[Android Debug Bridge]] |
||
+ | * special USB sticks / regular USB stick with adapter |
||
+ | * [[Bluetooth]] |
||
+ | * Android と互換性のある Arch Linux のソフトウェア |
||
+ | ** [[SSH]] や [[カテゴリ:File_Transfer_Protocol|FTP]]、[[Samba]]、HTTP などのファイル転送に使えるプロトコル |
||
+ | ** [[KDE#KDE_Connect|KDE Connect]] ({{Pkg|kdeconnect}}) - Android デバイスと KDE デスクトップを統合する ( synced notification & クリップボードや、マルチメディアコントロール、ファイル /URL 共有)。 |
||
+ | ** [[en2:cloud synchronization clients|クラウドとの同期クライアント]] |
||
+ | ** [[Syncthing]] |
||
+ | ** {{AUR|sendanywhere}} - クロスプラットフォーム対応のファイル転送 |
||
== Android 開発 == |
== Android 開発 == |
||
26行目: | 37行目: | ||
=== Android SDK コアコンポーネント === |
=== Android SDK コアコンポーネント === |
||
+ | {{Note| |
||
− | {{Note|64ビット環境を使っている場合は、最初に [[Pacman#Repositories|pacman.conf]] で [[multilib]] リポジトリを有効にしてください。}} |
||
+ | * 64ビット環境を使っている場合は、最初に [[Pacman#Repositories|pacman.conf]] で [[multilib]] リポジトリを有効にしてください。 |
||
+ | * [[#Android Studio|Android Studio]] をインストールして IDE を使って SDK を管理する場合、以下のパッケージをインストールする必要はありません。}} |
||
− | Android アプリケーションの開発を始める前に、Android SDK をインストールしてください。 |
+ | Android アプリケーションの開発を始める前に、Android SDK をインストールしてください。4つのパッケージに別れており、すべて [[Arch User Repository|AUR]] からインストールできます: |
+ | # {{AUR|android-platform}} |
||
# {{AUR|android-sdk}} |
# {{AUR|android-sdk}} |
||
# {{AUR|android-sdk-platform-tools}} |
# {{AUR|android-sdk-platform-tools}} |
||
# {{AUR|android-sdk-build-tools}} |
# {{AUR|android-sdk-build-tools}} |
||
+ | |||
+ | 古いデバイスのサポートが必要な場合や古いコードを動かすときは {{AUR|android-support}} と {{AUR|android-support-repository}} もインストールしてください。 |
||
Android-sdk は {{ic|/opt/android-sdk}} にインストールされます。このフォルダは root パーミッションになるので、sdk マネージャは root で実行してください。root でないと {{ic|/opt/android-sdk}} 上のものをインストール・アップデート・修正することができません。通常ユーザーで使いたい場合は、以下の手順に従って下さい。 |
Android-sdk は {{ic|/opt/android-sdk}} にインストールされます。このフォルダは root パーミッションになるので、sdk マネージャは root で実行してください。root でないと {{ic|/opt/android-sdk}} 上のものをインストール・アップデート・修正することができません。通常ユーザーで使いたい場合は、以下の手順に従って下さい。 |
||
48行目: | 64行目: | ||
# chmod -R g+w /opt/android-sdk/ |
# chmod -R g+w /opt/android-sdk/ |
||
+ | 再ログインあるいは <user> として新しく作成したグループでターミナルにログイン: |
||
− | {{Note|[[AUR]] のパッケージを使って全てのユーザー共通でインストールする代わりに、[https://developer.android.com/sdk/index.html 上流の手順]に従って SDK をユーザーのホームディレクトリにインストールすることもできます。}} |
||
+ | $ newgrp sdkusers |
||
+ | |||
+ | {{Note|[[AUR]] のパッケージを使って全てのユーザー共通でインストールする代わりに、[https://developer.android.com/sdk/index.html 上流の手順] に従って SDK をユーザーのホームディレクトリにインストールすることもできます。[[AUR]] の android-*-dummy パッケージを使用してシステムの依存関係を満たす方法もあります。}} |
||
=== Android SDK プラットフォーム API === |
=== Android SDK プラットフォーム API === |
||
+ | |||
+ | {{Note|[[#Android Studio|Android Studio]] をインストールして IDE を使って SDK を管理する場合、以下のパッケージをインストールする必要はありません。}} |
||
必要な Android SDK Platform パッケージを [[AUR]] からインストールしてください: |
必要な Android SDK Platform パッケージを [[AUR]] からインストールしてください: |
||
* {{aur|android-platform}} (最新) |
* {{aur|android-platform}} (最新) |
||
+ | * {{aur|android-platform-25}} |
||
+ | * {{aur|android-platform-24}} |
||
+ | * {{aur|android-platform-23}} |
||
* {{aur|android-platform-22}} |
* {{aur|android-platform-22}} |
||
* {{aur|android-platform-21}} |
* {{aur|android-platform-21}} |
||
64行目: | 88行目: | ||
* {{aur|android-platform-15}} |
* {{aur|android-platform-15}} |
||
* {{aur|android-platform-14}} |
* {{aur|android-platform-14}} |
||
+ | |||
− | * {{aur|android-platform-13}} |
||
+ | === Android システムイメージ === |
||
− | * {{aur|android-platform-12}} |
||
+ | |||
− | * {{aur|android-platform-11}} |
||
+ | [[AUR]] から適当な [https://aur.archlinux.org/packages/?O=0&K=android+system+image Android システムイメージ] パッケージをインストールしてください。Android Studio を使う場合はシステムイメージは必要ありません。特定の Android デバイスをエミュレートするときはイメージが必須ですが、Android スマートフォンを使って開発する場合はイメージは不要です。 |
||
− | * {{aur|android-platform-10}} |
||
− | * {{aur|android-platform-9}} |
||
− | * {{aur|android-platform-8}} |
||
− | * {{aur|android-platform-7}} |
||
− | * {{aur|android-platform-6}} |
||
− | * {{aur|android-platform-5}} |
||
− | * {{aur|android-platform-4}} |
||
− | * {{aur|android-platform-3}} |
||
− | * {{aur|android-platform-2}} |
||
=== 開発環境 === |
=== 開発環境 === |
||
− | [http://developer.android.com/sdk/installing/studio.html Android Studio] は IntelliJ IDEA がベースの新しい (実験的な) Android 開発環境で |
+ | [http://developer.android.com/sdk/installing/studio.html Android Studio] は [[IntelliJ IDEA]] がベースの新しい (実験的な) Android 開発環境です。もしくは、下に記述しているプラグインをインストールした後 [[Netbeans]] を使って開発することもできます。 |
==== Android Studio ==== |
==== Android Studio ==== |
||
87行目: | 103行目: | ||
Android Studio は AUR の {{AUR|android-studio}} パッケージでダウンロード・インストールすることが可能です。SDK が存在しないというエラーが表示された場合は、上記の Android SDK プラットフォーム API に関するセクションを見て下さい。 |
Android Studio は AUR の {{AUR|android-studio}} パッケージでダウンロード・インストールすることが可能です。SDK が存在しないというエラーが表示された場合は、上記の Android SDK プラットフォーム API に関するセクションを見て下さい。 |
||
+ | {{Note| |
||
− | {{Note|1=i3wm 以外のタイル型ウィンドウマネージャを使っている場合、[https://code.google.com/p/android/issues/detail?id=57675 この] issue ページに書かれているフィックスを適用する必要があります。}} |
||
+ | * i3wm 以外のタイル型ウィンドウマネージャを使っている場合、[https://code.google.com/p/android/issues/detail?id=57675 この] issue ページに書かれているフィックスを適用する必要があります。 |
||
+ | * [[Java#デフォルトの Java 環境を変更|Java 環境を設定]]していないと android-studio は起動しません。 |
||
+ | }} |
||
通常、アプリは Android Studio の GUI からビルドします。コマンドラインからアプリをビルドするには (例: {{ic|./gradlew assembleDebug}})、以下を {{ic|~/.bashrc}} に追加してください: |
通常、アプリは Android Studio の GUI からビルドします。コマンドラインからアプリをビルドするには (例: {{ic|./gradlew assembleDebug}})、以下を {{ic|~/.bashrc}} に追加してください: |
||
93行目: | 112行目: | ||
export ANDROID_HOME=/opt/android-sdk |
export ANDROID_HOME=/opt/android-sdk |
||
− | ==== |
+ | ==== Netbeans ==== |
+ | IDE として [[Netbeans]] を使って Android アプリケーションを開発したい場合は、以下から [http://www.nbandroid.org NBAndroid] をダウンロードしてください: |
||
− | {{Note|2014年12月8日から、ADT プラグインは公式には非推奨となっており、Android Studio が公式の IDE とされています。}} |
||
+ | Tools -> Plugins -> Settings |
||
− | Eclipse で Android 開発を行うためのものは大体 AUR でパッケージ化されています: |
||
+ | |||
+ | 次の URL を追加: http://nbandroid.org/release81/updates/updates.xml |
||
+ | |||
+ | ''Available Plugins'' から ''Android'' と ''JUnit'' プラグインをインストールしてください。インストールしたら: |
||
+ | |||
+ | Tools -> Options -> Miscellaneous -> Android |
||
+ | |||
+ | から SDK をインストールしたパスを選択します (デフォルトは {{ic|/opt/android-sdk}})。これで完了です。Netbeans を使って新しい Android プロジェクトを作成して開発を始めることができます。 |
||
+ | |||
+ | ==== Eclipse ==== |
||
+ | {{Note|[[Eclipse]] ADT プラグインはもはや [http://android-developers.blogspot.nl/2016/11/support-ended-for-eclipse-android.html サポート対象外] です。Google は Android Studio を使うことを推奨しています。}} |
||
− | Google の公式プラグイン – [http://developer.android.com/sdk/eclipse-adt.html Eclipse ADT]: |
||
− | # {{AUR|eclipse-android}} |
||
+ | 公式の [http://developer.android.com/sdk/eclipse-adt.html Eclipse ADT] プラグインが {{AUR|eclipse-android}}{{Broken package link|パッケージが存在しません}} パッケージでインストールできます。 |
||
− | 依存パッケージ: |
||
− | # {{AUR|eclipse-emf}} |
||
− | # {{AUR|eclipse-gef}} |
||
− | # {{AUR|eclipse-wtp}} |
||
{{Note| |
{{Note| |
||
120行目: | 145行目: | ||
{{Note|AUR のパッケージをアップグレードした後、Eclipse にプラグインが表示されなくなった場合、おそらく eclipse が昔のキャッシュを保持してしまっています。{{ic|sudo eclipse -clean}} を実行すればキャッシュが削除されます。問題が直らないときは、eclipse とプラグインを全てアンインストールして、{{ic|/usr/share/eclipse}} を削除し、それから全てを再インストールしてください。}} |
{{Note|AUR のパッケージをアップグレードした後、Eclipse にプラグインが表示されなくなった場合、おそらく eclipse が昔のキャッシュを保持してしまっています。{{ic|sudo eclipse -clean}} を実行すればキャッシュが削除されます。問題が直らないときは、eclipse とプラグインを全てアンインストールして、{{ic|/usr/share/eclipse}} を削除し、それから全てを再インストールしてください。}} |
||
− | + | === Android Debug Bridge (ADB) === |
|
+ | {{Tip| |
||
− | IDE として [[Netbeans]] を使って Android アプリケーションを開発したい場合は、以下から [http://www.nbandroid.org NBAndroid] をダウンロードしてください: |
||
+ | * デバイスによっては、ADB を動作させる前に、デバイスの MTP を有効にする必要があります。また、PTP モードを有効にする必要があるデバイスもあります。 |
||
− | |||
+ | * 大抵のデバイスは {{Pkg|libmtp}} に udev ルールが含まれているため、パッケージがインストールされていれば、ルールの追加は必要ありません。 |
||
− | Tools -> Plugins -> Settings |
||
+ | }} |
||
− | |||
− | 次の URL を追加: http://nbandroid.org/updates/updates.xml |
||
− | |||
− | ''Available Plugins'' から ''Android'' と ''JUnit'' プラグインをインストールしてください。インストールしたら: |
||
− | |||
− | Tools -> Options -> Miscellaneous -> Android |
||
− | |||
− | から SDK をインストールしたパスを選択します (デフォルトは {{ic|/opt/android-sdk}})。これで完了です。Netbeans を使って新しい Android プロジェクトを作成して開発を始めることができます。 |
||
− | |||
− | === 実機に接続 - Android Debug Bridge (ADB) === |
||
− | |||
− | {{Tip|デバイスによっては、ADB を動作させる前に、デバイスの MTP を有効にする必要があります。また、PTP モードを有効にする必要があるデバイスもあります。}} |
||
+ | ==== 実機に接続 ==== |
||
ADB で Arch 下の実機やスマートフォンに接続するには、以下を実行する必要があります: |
ADB で Arch 下の実機やスマートフォンに接続するには、以下を実行する必要があります: |
||
− | * {{Pkg|android-tools}} をインストール。 |
+ | * {{Pkg|android-tools}} をインストール。適当な {{ic|/dev/}} エントリにデバイスを接続するには {{Pkg|android-udev}} もインストールする必要があります。 |
+ | * USB で Android デバイスを接続する。 |
||
* スマートフォンやデバイスで USB デバッグを有効にする。 |
* スマートフォンやデバイスで USB デバッグを有効にする。 |
||
− | ** Jelly Bean (4.2) 以降: {{ic|設定 --> 端末情報}} を開いてデベロッパーになったというポップアップが表示されるまで “Build Number” をタップ (約10回連打)。そして {{ic|設定 --> 開発者向けオプション --> USB デバッグ}} から USB デバッグを有効にする。 |
+ | ** Jelly Bean (4.2) 以降: {{ic|設定 --> 端末情報}} を開いてデベロッパーになったというポップアップが表示されるまで “Build Number” をタップ (約10回連打)。そして {{ic|設定 --> 開発者向けオプション --> USB デバッグ}} から USB デバッグを有効にする。デバイスはフィンガープリントを使ってコンピュータに接続しても良いか聞いてきます。永続的に許可すると {{ic|$HOME/.android/adbkey.pub}} がデバイスの {{ic|/data/misc/adb/adb_keys}} フォルダにコピーされます。 |
** 古いバージョン: {{ic|設定 --> アプリケーション --> 開発 --> USB デバッグ}} から有効にできます。このオプションにチェックを入れた後はスマートフォンを再起動して USB デバッグを有効にしてください。 |
** 古いバージョン: {{ic|設定 --> アプリケーション --> 開発 --> USB デバッグ}} から有効にできます。このオプションにチェックを入れた後はスマートフォンを再起動して USB デバッグを有効にしてください。 |
||
− | * {{Pkg|android-udev}} をインストールし |
+ | * {{Pkg|android-udev}} をインストールしなかった場合、ユーザーを ''adbusers'' グループに追加します ({{ic|# gpasswd -a ''username'' adbusers}})。 |
− | * ユーザーを ''adbusers'' グループに追加します ({{ic|gpasswd -a ''username'' adbusers}})。 |
||
[[#動作するか確認|ADB がデバイスを認識]]したら (IDE からアクセスできる状態)、完了です。認識しない場合は以下を見て下さい。 |
[[#動作するか確認|ADB がデバイスを認識]]したら (IDE からアクセスできる状態)、完了です。認識しない場合は以下を見て下さい。 |
||
166行目: | 181行目: | ||
==== udev ルールを追加する ==== |
==== udev ルールを追加する ==== |
||
− | [http://source.android.com/source/initializing.html#configuring-usb-access Android developer] のルールを使うか以下のテンプレートを使って udev ルールを作って下さい。[VENDOR ID] と [PRODUCT ID] はあなたの ID に置き換えて下さい。ルールを {{ic|/etc/udev/rules.d/51-android.rules}} にコピー: |
+ | {{Pkg|android-udev}} (または {{Aur|android-udev-git}}) をインストールするか手動で [http://source.android.com/source/initializing.html#configuring-usb-access Android developer] のルールを使うか、あるいは以下のテンプレートを使って udev ルールを作って下さい。[VENDOR ID] と [PRODUCT ID] はあなたの ID に置き換えて下さい。ルールを {{ic|/etc/udev/rules.d/51-android.rules}} にコピー: |
− | {{hc|/etc/udev/rules.d/51-android.rules|2=<nowiki>SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE=" |
+ | {{hc|/etc/udev/rules.d/51-android.rules|2=<nowiki>SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE="0660", 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_adb" |
||
SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_fastboot"</nowiki>}} |
SUBSYSTEM=="usb",ATTR{idVendor}=="[VENDOR ID]",ATTR{idProduct}=="[PRODUCT ID]",SYMLINK+="android_fastboot"</nowiki>}} |
||
174行目: | 189行目: | ||
そして、新しい udev ルールをリロードするために、次を実行: |
そして、新しい udev ルールをリロードするために、次を実行: |
||
# udevadm control --reload-rules |
# udevadm control --reload-rules |
||
+ | |||
+ | 使用しているユーザーを {{ic|adbusers}} [[ユーザーとグループ|グループ]]に追加することで {{ic|adb}} デバイスにアクセスできるようになります。 |
||
==== adb の設定 ==== |
==== adb の設定 ==== |
||
217行目: | 234行目: | ||
== Android のビルド == |
== Android のビルド == |
||
− | 以下の手順は [ |
+ | 以下の手順は [https://source.android.com/source/building.html 公式の AOSP のビルド手順] を元にしています。LineageOS などの Android 派生環境の場合、大抵は追加のステップが必要になります。 |
− | |||
− | === OS のビット数 === |
||
− | |||
− | 32ビット環境でビルドできる Android は Android 2.2.x (Froyo) 以下の古いバージョンだけです。2.3.x (Gingerbread) 以上では、64ビット環境が必要になります。 |
||
=== 必要なパッケージ === |
=== 必要なパッケージ === |
||
227行目: | 240行目: | ||
どのバージョンの Android でも、ビルドするには以下のパッケージをインストールする必要があります: |
どのバージョンの Android でも、ビルドするには以下のパッケージをインストールする必要があります: |
||
− | * |
+ | * {{Pkg|gcc-multilib}}{{Broken package link|置換パッケージ: {{Pkg|gcc}}}} {{Pkg|git}} {{Pkg|gnupg}} {{Pkg|flex}} {{Pkg|bison}} {{Pkg|gperf}} {{Pkg|sdl}} {{Pkg|wxgtk}}{{Broken package link|置換パッケージ: {{Pkg|wxgtk2}}}} {{Pkg|squashfs-tools}} {{Pkg|curl}} {{Pkg|ncurses}} {{Pkg|zlib}} {{Pkg|schedtool}} {{Pkg|perl-switch}} {{Pkg|zip}} {{Pkg|unzip}} {{Pkg|libxslt}} {{Pkg|python2-virtualenv}} {{Pkg|bc}} {{Pkg|rsync}} {{Aur|ncurses5-compat-libs}} {{Pkg|lib32-zlib}} {{Pkg|lib32-ncurses}} {{Pkg|lib32-readline}} {{Aur|lib32-ncurses5-compat-libs}} |
+ | |||
+ | {{Aur|aosp-devel}} メタパッケージで上記のパッケージを一度に全てインストールできます。 |
||
+ | |||
+ | {{Note|{{Aur|ncurses5-compat-libs}} と {{Aur|lib32-ncurses5-compat-libs}} の PGP 署名がエラーを表示する場合、手動で必要な署名をインポートすることで解決します: {{ic|$ gpg --recv-keys 702353E0F7E48EDB}}。}} |
||
+ | |||
+ | さらに LineageOS は以下のパッケージを必要とします: |
||
+ | |||
+ | *{{AUR|xml2}} {{Pkg|lzop}} {{Pkg|pngcrush}} {{Pkg|imagemagick}} |
||
+ | {{Aur|lineageos-devel}} メタパッケージで上記のパッケージを一度に全てインストールできます。 |
||
− | * 64ビット環境でのみ必須: {{Pkg|gcc-multilib}} {{Pkg|lib32-zlib}} {{Pkg|lib32-ncurses}} {{Pkg|lib32-readline}} |
||
+ | {{Note|1={{Pkg|maven}} と {{Pkg|gradle}} の両方をインストールしてから LineageOS をビルドすることでビルドの速度を改善することができます。}} |
||
− | * AUR パッケージ: {{Aur|libtinfo}} |
||
=== Java Development Kit === |
=== Java Development Kit === |
||
+ | * Android 7 と 8 (Nougat と Oreo) では OpenJDK 8 が必要です [https://source.android.com/source/requirements.html]。{{Pkg|jdk8-openjdk}} パッケージでインストールできます。 |
||
− | Android 5 以前では、ビルド環境に Sun/Oracle JDK をインストールする必要があります。OpenJDK ではビルドできません。 |
||
+ | * Android 5 と 6 (Lollipop と Marshmallow) では、OpenJDK 7 が必要です。{{Pkg|jdk7-openjdk}} パッケージでインストールできます。 |
||
+ | 古いバージョンでは '''Oracle JDK''' をインストールする必要があります [http://source.android.com/source/initializing.html]。OpenJDK では動作しません。 |
||
− | 2.3.x 以上では、{{AUR|jdk6}} が使えます。2.2.x 以前では、バージョン5の JDK が必要です。 |
||
+ | *Gingerbread から KitKat (2.3 - 4.4) では、Java 6 が必要です。AUR の {{AUR|jdk6}} パッケージでインストールできます。 |
||
− | Android 5 Lollipop の場合、{{Pkg|jdk7-openjdk}} が必要になります。ビルドのときにチェックが行われ Oracle JDK は弾かれます。また、{{ic|JAVA_HOME}} を {{ic|/usr/lib/jvm/java-7-openjdk/}} に設定して {{ic|/usr/lib/jvm/java-7-openjdk/bin}} がパスの最初にくるようにする必要があります。 |
||
+ | *Cupcake から Froyo (1.5 - 2.2) では、Java 5 が必要です。AUR の {{AUR|jdk5}} パッケージでインストールできます。 |
||
+ | |||
+ | {{Note|1= |
||
+ | Android は Java が {{ic|/usr/lib/jvm/java-x-openjdk-amd64}} にあると想定しています (x は java のバージョン)。{{ic|JAVA_HOME}} を Arch Linux のインストールパスに設定してください。例: |
||
+ | $ export JAVA_HOME=/usr/lib/jvm/java-x-openjdk |
||
+ | 上記の設定は現在のターミナルセッションでのみ有効です。 |
||
+ | }} |
||
=== ビルド環境の設定 === |
=== ビルド環境の設定 === |
||
− | {{ |
+ | {{Pkg|repo}} パッケージを[[インストール]]してください。 |
− | |||
− | $ mkdir ~/bin |
||
− | $ export PATH=~/bin:$PATH |
||
− | $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo |
||
− | $ chmod a+x ~/bin/repo |
||
ビルドのためのディレクトリを作成: |
ビルドのためのディレクトリを作成: |
||
257行目: | 281行目: | ||
デフォルトの Python をバージョン3からバージョン2に変更する必要があります: |
デフォルトの Python をバージョン3からバージョン2に変更する必要があります: |
||
− | $ virtualenv2 venv |
+ | $ virtualenv2 venv |
+ | $ source venv/bin/activate |
||
+ | {{Note| |
||
− | {{Note|ビルド中に python モジュールが見つからないというエラーが表示されることがあります。{{ic|/usr/lib/python2.7/*}} から {{ic|~/android/venv/python2.7/}} にシンボリックリンクを作成することで解決できます ({{ic|~/android}} はビルドディレクトリに置き換えて下さい)、例: |
||
+ | * 上記のアクティベーションは現在のターミナルセッションでのみ有効になります。仮想環境は {{ic|venv}} フォルダに保存されます。 |
||
− | $ ln -s /usr/lib/python2.7/* /Data/Android_Build/venv/lib/python2.7/ |
||
+ | * ビルド中に python モジュールが見つからないというエラーが表示されることがあります。{{ic|/usr/lib/python2.7/*}} から {{ic|~/android/venv/lib/python2.7/}} にシンボリックリンクを作成することで解決できます ({{ic|~/android}} はビルドディレクトリに置き換えて下さい)、例: {{ic|$ ln -s /usr/lib/python2.7/* ~/android/venv/lib/python2.7/}} (ビルドディレクトリが {{ic|/Data/Android_Build}} であれば {{ic|$ ln -s /usr/lib/python2.7/* /Data/Android_Build/venv/lib/python2.7/}})。 |
||
}} |
}} |
||
− | |||
− | Virtualenv を有効にして、$PATH を Python 2 に更新します。 |
||
− | |||
− | {{Note|this activation is only active for the current terminal session.}} |
||
− | |||
− | $ source venv/bin/activate |
||
=== ソースコードのダウンロード === |
=== ソースコードのダウンロード === |
||
280行目: | 300行目: | ||
$ repo sync -j4 |
$ repo sync -j4 |
||
− | しばらく待って下さい。未コンパイルのソースコードと、{{ic|.repo}} と {{ic|.git}} ディレクトリで、10 GB を軽く超えます。 |
+ | しばらく待って下さい。未コンパイルのソースコードと、{{ic|.repo}} と {{ic|.git}} ディレクトリで、10 GB を軽く超えます。Android 6.0.1 現在、コードベースの合計は 40 GB です。 |
− | {{Note|あとで Android ソースのローカルコピーを更新したい場合は、ビルドディレクトリに移動して、Virtualenv をロードして、再同期してください: |
+ | {{Note|あとで Android ソースのローカルコピーを更新したい場合は、ビルドディレクトリに移動して、Virtualenv をロードして、再同期してください: {{ic|$ repo sync}}。}} |
− | $ repo sync |
||
− | }} |
||
=== コードのビルド === |
=== コードのビルド === |
||
298行目: | 316行目: | ||
ビルドには非常に長い時間がかかります。 |
ビルドには非常に長い時間がかかります。 |
||
+ | {{Note| |
||
− | {{Note|十分な RAM があることを確認してください。Android は /tmp ディレクトリを重度に使用します。デフォルトでは /tmp フォルダがマウントされるパーティションのサイズは RAM の半分になっています。/tmp が満杯になると、ビルドは失敗します。RAM は 4GB 以上あることが推奨されます。もしくは、[[fstab]] から tmpfs を完全に削除してください。}} |
||
+ | * {{ic|make}} が {{ic|flex-2.5.39: loadlocale.c:131: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_COLLATE) / sizeof (_nl_value_type_LC_COLLATE[0]))' failed.}} などのエラーで失敗する場合、{{ic|1=LANG=C make}} を使ってみてください。 |
||
+ | * 十分な RAM があることを確認してください。Android は /tmp ディレクトリを重度に使用します。デフォルトでは /tmp フォルダがマウントされるパーティションのサイズは RAM の半分になっています。/tmp が満杯になると、ビルドは失敗します。RAM は 4GB 以上あることが推奨されます。もしくは、[[fstab]] から tmpfs を完全に削除してください。 |
||
+ | * [https://source.android.com/source/building.html#build-the-code Android Building and Running ガイド] より: "GNU make は -jN 引数で並列処理することができます。ビルドするときは、コンピュータに搭載されているハードウェアスレッドと同じ数からその倍にするのが普通です。例えば E5520 が2つ搭載されたマシンなら (2 CPU, 4 コア CPU, 2 スレッド)、make -j16 から make -j32 までのコマンドでビルドするのが最速になります"。 |
||
+ | }} |
||
=== ビルドのテスト === |
=== ビルドのテスト === |
||
313行目: | 335行目: | ||
{{ic|out/target/product/hammerhead}} に書き込みできる zip イメージが作成されます (hammerhead はデバイスの名前に置き換えて下さい)。 |
{{ic|out/target/product/hammerhead}} に書き込みできる zip イメージが作成されます (hammerhead はデバイスの名前に置き換えて下さい)。 |
||
+ | |||
+ | == Android の復元 == |
||
+ | |||
+ | ときには、Android 携帯端末にカスタム ROM を書き込んだ後に、標準の Android に戻したいという場合もあるでしょう。端末への書き込みについては、[http://forum.xda-developers.com/ XDA フォーラム] を参照するようにしてください。 |
||
+ | |||
+ | === Fastboot === |
||
+ | |||
+ | Fastboot (と [[#Android Debug Bridge (ADB)|ADB]]) は {{Pkg|android-tools}} パッケージに付属しています。 |
||
+ | |||
+ | {{Note|{{ic|fastboot}} を使ってファームウェアを復元するのはかなり厄介ですが、[http://www.xda-developers.com/ XDA 開発者フォーラム] を検索することで公式ファームウェアが見つかるかもしれません。大抵は {{ic|*.zip}} ファイルの形で配布されていて、中に、ファームウェアファイルと {{ic|flash-all.sh}} スクリプトが入っています。例えば、[https://developers.google.com/android/nexus/images Google Nexus] のファームウェアには {{ic|flash-all.sh}} スクリプトが含まれています。他にも OnePlus One の [http://forum.xda-developers.com/oneplus-one/general/guide-return-opo-to-100-stock-t2826541 XDA スレッド] には {{ic|flash-all.sh}} スクリプトが付属したファームウェアが落ちています。}} |
||
+ | |||
+ | === Samsung 端末 === |
||
+ | |||
+ | Samsung の端末は ''Fastboot'' ツールを使って書き込みを行うことができません。''Heimdall'' か ''Odin'' (Windows と VirtualBox を使用) を利用するのが唯一の方法です。 |
||
+ | |||
+ | ==== Heimdall ==== |
||
+ | |||
+ | [http://glassechidna.com.au/heimdall/ Heimdall] は Samsung の携帯電話にファームウェア (ROM) を書き込むのに使われるクロスプラットフォームのオープンソースツールスイートです。[http://odindownload.com/ Odin] の代わりとして使えるツールとして知られています。Heimdall は {{Pkg|heimdall}} や {{AUR|heimdall-git}} でインストールすることが可能です。 |
||
+ | |||
+ | 実際に書き込みを行う手順は Heimdall の [https://github.com/Benjamin-Dobell/Heimdall/tree/master/Linux GitHub ページ] や [http://forum.xda-developers.com/showthread.php?t=1922461 XDA フォーラム] を参照してください。 |
||
+ | |||
+ | ==== Odin (Virtualbox) ==== |
||
+ | |||
+ | [http://odindownload.com/ Odin] を使うことで Samsung のデバイスに標準の Android をリストアさせることができます。ただし [[VirtualBox]] が必須です。詳しくは、[http://forum.xda-developers.com/showthread.php?t=758634 XDA のスレッド] を見てください。 |
||
+ | |||
+ | Arch Linux による手順: |
||
+ | # [[VirtualBox]] をインストールしてください。[[VirtualBox#エクステンションパック|エクステンションパック]]と [[VirtualBox#Guest additions ディスク|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 のドライバーは [http://androidxda.com/download-samsung-usb-drivers こちら] からダウンロードできます。 |
||
+ | * Odin は [https://www.androidfilehost.com/?fid=23501681358557126 こちら] からダウンロードできます。 |
||
+ | * Samsung の Android ファームウェアは [http://www.sammobile.com/firmwares/ こちら] からダウンロードできます。 |
||
+ | |||
+ | 全てが問題ないことを確認するには、Samsung デバイスを接続してダウンロードモードにして、Odin を開いてください。''Message'' という名前の白いボックス (左下) に、以下のように表示されているはずです: |
||
+ | <ID:0/003> Added!! |
||
+ | 上記のメッセージは Odin からデバイスが認識されていて、書き込みの準備が整ったことを意味しています。 |
||
+ | |||
+ | {{Note|Samsung の携帯電話で標準ファームウェアに戻すのに決まった方法は存在しません。[https://www.google.com Google] や [http://www.xda-developers.com XDA 開発者フォーラム] を使って、あなたが使用しているデバイスの書き込み方法を調べてください。例えば、Samsung Galaxy S4 ならば [http://goo.gl/cZLyF8 このようなスレッド] が存在します。}} |
||
== 他の接続方法 == |
== 他の接続方法 == |
||
+ | |||
+ | === Android File Transfer === |
||
+ | |||
+ | {{Pkg|android-file-transfer}} は Mac 用の Android File Transfer と同じようなシンプルな UI を備えた信頼性のある MTP クライアントです。 |
||
+ | |||
+ | === adb-sync === |
||
+ | |||
+ | [https://github.com/google/adb-sync adb-sync] ({{AUR|adb-sync-git}} でインストールできます) は ADB を使って PC と Android デバイスのファイルを同期するツールです。 |
||
=== AirDroid === |
=== AirDroid === |
||
− | [ |
+ | [https://play.google.com/store/apps/details?id=com.sand.airdroid AirDroid] はウェブブラウザからファイルにアクセスするための Android アプリです。 |
+ | |||
+ | === Send Anywhere === |
||
+ | |||
+ | {{AUR|sendanywhere}} は速度とシンプリシティに重きを置いているクロスプラットホームのファイル転送ソリューションです。simplicity. |
||
+ | |||
+ | === AndroidScreencast === |
||
+ | |||
+ | [http://xsavikx.github.io/AndroidScreencast AndroidScreencast] は Android を PC から確認・操作することができます (ADB を使用)。 |
||
=== FTP === |
=== FTP === |
||
325行目: | 404行目: | ||
[[アプリケーション一覧/インターネット#FTP]] を見て下さい。Anroid で使える FTP クライアント/サーバーは多数存在します。 |
[[アプリケーション一覧/インターネット#FTP]] を見て下さい。Anroid で使える FTP クライアント/サーバーは多数存在します。 |
||
+ | |||
+ | === KDE Connect === |
||
+ | |||
+ | {{Pkg|kdeconnect}} は Android デバイスを KDE デスクトップに統合します。通知やクリップボードの同期、マルチメディアの操作、ファイルや URL の共有などが可能です。詳しくは [[KDE#Android との統合]]を参照。 |
||
=== SSH サーバー === |
=== SSH サーバー === |
||
334行目: | 417行目: | ||
[[Samba]] を参照。 |
[[Samba]] を参照。 |
||
+ | == ヒントとテクニック == |
||
− | == Tips & Tricks == |
||
=== デバッグ中に "Source not found" === |
=== デバッグ中に "Source not found" === |
||
+ | 大抵はデバッガが Java コードにステップインしたがっています。Android SDK には Android のソースコードは付属していないため、このようなエラーが発生します。ステップフィルターを利用して Java ソースコードにジャンプしないようにするのが解決法としてはベストです。デフォルトではステップフィルターは有効になっていません。有効化するには: |
||
− | 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 |
Window -> Preferences -> Java -> Debug -> Step Filtering |
||
− | + | 全てのアイテムを選択してください。必要であれば android.* パッケージを追加することができます。詳しくは次のフォーラムの投稿を見てください: http://www.eclipsezone.com/eclipse/forums/t83338.rhtml |
|
=== SD カード上に Linux ディストリビューション === |
=== SD カード上に Linux ディストリビューション === |
||
− | [http://forum.xda-developers.com/showthread.php?t=631389 このスレッド] に書かれているように Debian をインストールすることができます。chroot で Arch をインストールするガイドが [ |
+ | [http://forum.xda-developers.com/showthread.php?t=631389 このスレッド] に書かれているように Debian をインストールすることができます。chroot で Arch をインストールするガイドが [https://archlinuxarm.org/forum/viewtopic.php?f=27&t=1361&start=40 archlinuxarm.org フォーラム] にあります。 |
== トラブルシューティング == |
== トラブルシューティング == |
||
+ | |||
+ | === Android Studio: Android Virtual Devices show 'failed to load'. === |
||
+ | [[#Android Studio]] に書いているように {{ic|ANDROID_HOME}} 変数をエクスポートしてください。 |
||
+ | |||
+ | === Android Studio: 'failed to create the SD card' === |
||
+ | x86_64 環境の Arch で AVD (Android Virtual Device) を実行しようとしたときにエラーが表示される場合、[[Multilib]] リポジトリから {{Pkg|lib32-gcc-libs}} パッケージをインストールしてください。 |
||
=== aapt: No such file or directory === |
=== aapt: No such file or directory === |
||
361行目: | 450行目: | ||
$ rm `find /path/to/android-root -name .repopickle_config` |
$ rm `find /path/to/android-root -name .repopickle_config` |
||
+ | |||
+ | === libGL error: failed to load driver: swrast=== |
||
+ | |||
+ | AVD が間違ったバージョンの libstdc++ をロードしています。{{ic|~/Android/Sdk/emulator/lib64/}} (64ビット) または {{ic|~/Android/Sdk/emulator/lib/}} (32ビット) から libstdc++ を削除してください。例: |
||
+ | |||
+ | $ rm -r ~/Android/Sdk/emulator/lib64/libstdc++ |
||
+ | |||
+ | もしくは以下のように {{ic|~/.profile}} で {{ic|ANDROID_EMULATOR_USE_SYSTEM_LIBS}} を設定します: |
||
+ | |||
+ | export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 |
||
+ | |||
+ | 詳しくは Android Studio のユーザーガイド https://developer.android.com/studio/command-line/variables.html#studio_jdk を参照してください。 |
||
+ | |||
+ | .desktop ファイルについては Exec 行で env コマンドを使うことで修正できます ([[デスクトップエントリ#環境変数の修正]]を参照): |
||
+ | |||
+ | env ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 |
||
+ | |||
+ | === sh: glxinfo: command not found=== |
||
+ | |||
+ | エラーの全文: |
||
+ | |||
+ | Cannot launch AVD in emulator. |
||
+ | Output: |
||
+ | sh: glxinfo: command not found |
||
+ | sh: glxinfo: command not found |
||
+ | libGL error: unable to load driver: swrast_dri.so |
||
+ | libGL error: failed to load driver: swrast |
||
+ | X Error of failed request: BadValue (integer parameter out of range for operation) |
||
+ | Major opcode of failed request: 154 (GLX) |
||
+ | Minor opcode of failed request: 24 (X_GLXCreateNewContext) |
||
+ | Value in failed request: 0x0 |
||
+ | Serial number of failed request: 32 |
||
+ | Current serial number in output stream: 33 |
||
+ | QObject::~QObject: Timers cannot be stopped from another thread |
||
+ | |||
+ | glxinfo ({{Pkg|mesa-demos}} パッケージ) をインストールしてみてください。コンピュータに十分な性能がある場合、ソフトウェアを使ってグラフィックをレンダリングできます。Tools -> Android -> AVD Manager から AVD を編集 (ペンのアイコンをクリック) して、"Emulated Performance -> Graphics" で "Software - GLES 2.0" を選択してください。 |
2023年5月28日 (日) 17:27時点における最新版
ファイル転送
コンピュータと Android デバイス間でファイルを転送する方法にはいくつかあります:
- USB ケーブル
- MTP: 新しい Android デバイス
- USB mass storage 比較的古い Android デバイス
- Android Debug Bridge
- special USB sticks / regular USB stick with adapter
- Bluetooth
- Android と互換性のある Arch Linux のソフトウェア
- SSH や、Samba、HTTP などのファイル転送に使えるプロトコル
- KDE Connect (kdeconnect) - Android デバイスと KDE デスクトップを統合する ( synced notification & クリップボードや、マルチメディアコントロール、ファイル /URL 共有)。
- クラウドとの同期クライアント
- Syncthing
- sendanywhereAUR - クロスプラットフォーム対応のファイル転送
Android 開発
Arch Linux で Android アプリケーションを開発できるようにするためには3つの手順を踏む必要があります:
- Android SDK コアコンポーネントのインストール
- Android SDK プラットフォームパッケージのインストール
- Android SDK に対応している IDE のインストール
Android SDK コアコンポーネント
Android アプリケーションの開発を始める前に、Android SDK をインストールしてください。4つのパッケージに別れており、すべて AUR からインストールできます:
古いデバイスのサポートが必要な場合や古いコードを動かすときは android-supportAUR と android-support-repositoryAUR もインストールしてください。
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-25AUR
- android-platform-24AUR
- 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 システムイメージ
AUR から適当な Android システムイメージ パッケージをインストールしてください。Android Studio を使う場合はシステムイメージは必要ありません。特定の Android デバイスをエミュレートするときはイメージが必須ですが、Android スマートフォンを使って開発する場合はイメージは不要です。
開発環境
Android Studio は IntelliJ IDEA がベースの新しい (実験的な) Android 開発環境です。もしくは、下に記述しているプラグインをインストールした後 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
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 プロジェクトを作成して開発を始めることができます。
Eclipse
公式の Eclipse ADT プラグインが eclipse-androidAUR[リンク切れ: パッケージが存在しません] パッケージでインストールできます。
Android SDK の場所のパスを設定で入力してください:
Windows -> Preferences -> Android
Android Debug Bridge (ADB)
実機に接続
ADB で Arch 下の実機やスマートフォンに接続するには、以下を実行する必要があります:
- android-tools をインストール。適当な
/dev/
エントリにデバイスを接続するには android-udev もインストールする必要があります。 - USB で Android デバイスを接続する。
- スマートフォンやデバイスで USB デバッグを有効にする。
- Jelly Bean (4.2) 以降:
設定 --> 端末情報
を開いてデベロッパーになったというポップアップが表示されるまで “Build Number” をタップ (約10回連打)。そして設定 --> 開発者向けオプション --> USB デバッグ
から USB デバッグを有効にする。デバイスはフィンガープリントを使ってコンピュータに接続しても良いか聞いてきます。永続的に許可すると$HOME/.android/adbkey.pub
がデバイスの/data/misc/adb/adb_keys
フォルダにコピーされます。 - 古いバージョン:
設定 --> アプリケーション --> 開発 --> USB デバッグ
から有効にできます。このオプションにチェックを入れた後はスマートフォンを再起動して USB デバッグを有効にしてください。
- Jelly Bean (4.2) 以降:
- android-udev をインストールしなかった場合、ユーザーを 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-udev (または android-udev-gitAUR) をインストールするか手動で 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="0660", 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
使用しているユーザーを adbusers
グループに追加することで adb
デバイスにアクセスできるようになります。
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 のビルド手順 を元にしています。LineageOS などの Android 派生環境の場合、大抵は追加のステップが必要になります。
必要なパッケージ
どのバージョンの Android でも、ビルドするには以下のパッケージをインストールする必要があります:
- gcc-multilib[リンク切れ: 置換パッケージ: gcc] git gnupg flex bison gperf sdl wxgtk[リンク切れ: 置換パッケージ: wxgtk2] squashfs-tools curl ncurses zlib schedtool perl-switch zip unzip libxslt python2-virtualenv bc rsync ncurses5-compat-libsAUR lib32-zlib lib32-ncurses lib32-readline lib32-ncurses5-compat-libsAUR
aosp-develAUR メタパッケージで上記のパッケージを一度に全てインストールできます。
さらに LineageOS は以下のパッケージを必要とします:
lineageos-develAUR メタパッケージで上記のパッケージを一度に全てインストールできます。
Java Development Kit
- Android 7 と 8 (Nougat と Oreo) では OpenJDK 8 が必要です [1]。jdk8-openjdk パッケージでインストールできます。
- Android 5 と 6 (Lollipop と Marshmallow) では、OpenJDK 7 が必要です。jdk7-openjdk パッケージでインストールできます。
古いバージョンでは Oracle JDK をインストールする必要があります [2]。OpenJDK では動作しません。
- Gingerbread から KitKat (2.3 - 4.4) では、Java 6 が必要です。AUR の jdk6AUR パッケージでインストールできます。
- Cupcake から Froyo (1.5 - 2.2) では、Java 5 が必要です。AUR の jdk5AUR パッケージでインストールできます。
ビルド環境の設定
ビルドのためのディレクトリを作成:
$ mkdir ~/android $ cd ~/android
デフォルトの Python をバージョン3からバージョン2に変更する必要があります:
$ virtualenv2 venv $ 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 を軽く超えます。Android 6.0.1 現在、コードベースの合計は 40 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 からデバイスが認識されていて、書き込みの準備が整ったことを意味しています。
他の接続方法
Android File Transfer
android-file-transfer は Mac 用の Android File Transfer と同じようなシンプルな UI を備えた信頼性のある MTP クライアントです。
adb-sync
adb-sync (adb-sync-gitAUR でインストールできます) は ADB を使って PC と Android デバイスのファイルを同期するツールです。
AirDroid
AirDroid はウェブブラウザからファイルにアクセスするための Android アプリです。
Send Anywhere
sendanywhereAUR は速度とシンプリシティに重きを置いているクロスプラットホームのファイル転送ソリューションです。simplicity.
AndroidScreencast
AndroidScreencast は Android を PC から確認・操作することができます (ADB を使用)。
FTP
Arch で FTP サーバーを動作させて携帯からサーバーに接続したり、携帯で FTP サーバーを動作させて Arch から接続することができます。
アプリケーション一覧/インターネット#FTP を見て下さい。Anroid で使える FTP クライアント/サーバーは多数存在します。
KDE Connect
kdeconnect は Android デバイスを KDE デスクトップに統合します。通知やクリップボードの同期、マルチメディアの操作、ファイルや URL の共有などが可能です。詳しくは KDE#Android との統合を参照。
SSH サーバー
Android で使える SSH サーバーは多数存在します。scp
コマンドでファイルを転送できるようになります。SSH を参照。
Samba
Samba を参照。
ヒントとテクニック
デバッグ中に "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
変数をエクスポートしてください。
Android Studio: 'failed to create the SD card'
x86_64 環境の Arch で AVD (Android Virtual Device) を実行しようとしたときにエラーが表示される場合、Multilib リポジトリから lib32-gcc-libs パッケージをインストールしてください。
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`
libGL error: failed to load driver: swrast
AVD が間違ったバージョンの libstdc++ をロードしています。~/Android/Sdk/emulator/lib64/
(64ビット) または ~/Android/Sdk/emulator/lib/
(32ビット) から libstdc++ を削除してください。例:
$ rm -r ~/Android/Sdk/emulator/lib64/libstdc++
もしくは以下のように ~/.profile
で ANDROID_EMULATOR_USE_SYSTEM_LIBS
を設定します:
export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
詳しくは Android Studio のユーザーガイド https://developer.android.com/studio/command-line/variables.html#studio_jdk を参照してください。
.desktop ファイルについては Exec 行で env コマンドを使うことで修正できます (デスクトップエントリ#環境変数の修正を参照):
env ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
sh: glxinfo: command not found
エラーの全文:
Cannot launch AVD in emulator. Output: sh: glxinfo: command not found sh: glxinfo: command not found libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 154 (GLX) Minor opcode of failed request: 24 (X_GLXCreateNewContext) Value in failed request: 0x0 Serial number of failed request: 32 Current serial number in output stream: 33 QObject::~QObject: Timers cannot be stopped from another thread
glxinfo (mesa-demos パッケージ) をインストールしてみてください。コンピュータに十分な性能がある場合、ソフトウェアを使ってグラフィックをレンダリングできます。Tools -> Android -> AVD Manager から AVD を編集 (ペンのアイコンをクリック) して、"Emulated Performance -> Graphics" で "Software - GLES 2.0" を選択してください。