「Android」の版間の差分
細 (文字列「[[zh-CN:」を「[[zh-hans:」に置換) |
細 (ADBについて英語wikiから当wikiへリンク変更) |
||
(5人の利用者による、間の12版が非表示) | |||
1行目: | 1行目: | ||
+ | [[Category:Android]] |
||
[[Category:開発]] |
[[Category:開発]] |
||
− | [[Category:携帯端末]] |
||
[[en:Android]] |
[[en:Android]] |
||
+ | [[es:Android]] |
||
[[it:Android]] |
[[it:Android]] |
||
− | [[ru:Android]] |
||
[[zh-hans:Android]] |
[[zh-hans: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 開発 == |
||
30行目: | 41行目: | ||
* [[#Android Studio|Android Studio]] をインストールして IDE を使って SDK を管理する場合、以下のパッケージをインストールする必要はありません。}} |
* [[#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}} |
||
64行目: | 76行目: | ||
* {{aur|android-platform}} (最新) |
* {{aur|android-platform}} (最新) |
||
+ | * {{aur|android-platform-25}} |
||
+ | * {{aur|android-platform-24}} |
||
* {{aur|android-platform-23}} |
* {{aur|android-platform-23}} |
||
* {{aur|android-platform-22}} |
* {{aur|android-platform-22}} |
||
77行目: | 91行目: | ||
=== Android システムイメージ === |
=== Android システムイメージ === |
||
− | [[AUR]] から適当な [https://aur.archlinux.org/packages/?O=0&K=android+system+image Android システムイメージ] パッケージをインストールしてください。Android Studio を使う場合はシステムイメージは必要ありません。 |
+ | [[AUR]] から適当な [https://aur.archlinux.org/packages/?O=0&K=android+system+image Android システムイメージ] パッケージをインストールしてください。Android Studio を使う場合はシステムイメージは必要ありません。特定の Android デバイスをエミュレートするときはイメージが必須ですが、Android スマートフォンを使って開発する場合はイメージは不要です。 |
=== 開発環境 === |
=== 開発環境 === |
||
− | [http://developer.android.com/sdk/installing/studio.html Android Studio] は IntelliJ IDEA がベースの新しい (実験的な) Android 開発環境です。もしくは、下に記述しているプラグインをインストールした後 [[Netbeans]] を使って開発することもできます。 |
+ | [http://developer.android.com/sdk/installing/studio.html Android Studio] は [[IntelliJ IDEA]] がベースの新しい (実験的な) Android 開発環境です。もしくは、下に記述しているプラグインをインストールした後 [[Netbeans]] を使って開発することもできます。 |
==== Android Studio ==== |
==== Android Studio ==== |
||
114行目: | 128行目: | ||
==== Eclipse ==== |
==== Eclipse ==== |
||
− | {{Note|Eclipse ADT プラグインはもはや [http://android-developers.blogspot.nl/2016/11/support-ended-for-eclipse-android.html サポート対象外] です。Google は Android Studio を使うことを推奨しています。}} |
+ | {{Note|[[Eclipse]] ADT プラグインはもはや [http://android-developers.blogspot.nl/2016/11/support-ended-for-eclipse-android.html サポート対象外] です。Google は Android Studio を使うことを推奨しています。}} |
− | 公式の [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|パッケージが存在しません}} パッケージでインストールできます。 |
{{Note| |
{{Note| |
||
142行目: | 156行目: | ||
* {{Pkg|android-tools}} をインストール。適当な {{ic|/dev/}} エントリにデバイスを接続するには {{Pkg|android-udev}} もインストールする必要があります。 |
* {{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 デバッグを有効にしてください。 |
||
− | * ユーザーを ''adbusers'' グループに追加します ({{ic|# gpasswd -a ''username'' adbusers}})。 |
+ | * {{Pkg|android-udev}} をインストールしなかった場合、ユーザーを ''adbusers'' グループに追加します ({{ic|# gpasswd -a ''username'' adbusers}})。 |
[[#動作するか確認|ADB がデバイスを認識]]したら (IDE からアクセスできる状態)、完了です。認識しない場合は以下を見て下さい。 |
[[#動作するか確認|ADB がデバイスを認識]]したら (IDE からアクセスできる状態)、完了です。認識しない場合は以下を見て下さい。 |
||
166行目: | 181行目: | ||
==== udev ルールを追加する ==== |
==== 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}} にコピー: |
+ | {{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="0660", GROUP="adbusers" |
{{hc|/etc/udev/rules.d/51-android.rules|2=<nowiki>SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE="0660", GROUP="adbusers" |
||
219行目: | 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ビット環境が必要になります。 |
||
=== 必要なパッケージ === |
=== 必要なパッケージ === |
||
229行目: | 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}} メタパッケージで上記のパッケージを一度に全てインストールできます。 |
||
− | * 64ビット環境でのみ必須: {{Pkg|gcc-multilib}} {{Pkg|lib32-zlib}} {{Pkg|lib32-ncurses}} {{Pkg|lib32-readline}} {{Aur|lib32-ncurses5-compat-libs}} |
||
{{Note|{{Aur|ncurses5-compat-libs}} と {{Aur|lib32-ncurses5-compat-libs}} の PGP 署名がエラーを表示する場合、手動で必要な署名をインポートすることで解決します: {{ic|$ gpg --recv-keys 702353E0F7E48EDB}}。}} |
{{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}} メタパッケージで上記のパッケージを一度に全てインストールできます。 |
||
− | * 32ビット環境と64ビット環境で共通: {{Pkg|rsync}} |
||
− | {{Note|1= |
+ | {{Note|1={{Pkg|maven}} と {{Pkg|gradle}} の両方をインストールしてから LineageOS をビルドすることでビルドの速度を改善することができます。}} |
=== Java Development Kit === |
=== Java Development Kit === |
||
− | * Android 7 (Nougat) では OpenJDK 8 が必要です [https://source.android.com/source/requirements.html]。{{Pkg|jdk8-openjdk}} パッケージでインストールできます。 |
+ | * Android 7 と 8 (Nougat と Oreo) では OpenJDK 8 が必要です [https://source.android.com/source/requirements.html]。{{Pkg|jdk8-openjdk}} パッケージでインストールできます。 |
* Android 5 と 6 (Lollipop と Marshmallow) では、OpenJDK 7 が必要です。{{Pkg|jdk7-openjdk}} パッケージでインストールできます。 |
* Android 5 と 6 (Lollipop と Marshmallow) では、OpenJDK 7 が必要です。{{Pkg|jdk7-openjdk}} パッケージでインストールできます。 |
||
259行目: | 272行目: | ||
=== ビルド環境の設定 === |
=== ビルド環境の設定 === |
||
− | {{Pkg|repo}} パッケージを[[インストール]]して |
+ | {{Pkg|repo}} パッケージを[[インストール]]してください。 |
− | |||
− | $ mkdir ~/bin |
||
− | $ export PATH=~/bin:$PATH |
||
− | $ curl <nowiki>https://storage.googleapis.com/git-repo-downloads/repo</nowiki> > ~/bin/repo |
||
− | $ chmod a+x ~/bin/repo |
||
ビルドのためのディレクトリを作成: |
ビルドのためのディレクトリを作成: |
||
273行目: | 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|以下のアクティベーションは現在のターミナルセッションでのみ有効になります。}} |
||
− | |||
− | $ source venv/bin/activate |
||
=== ソースコードのダウンロード === |
=== ソースコードのダウンロード === |
||
315行目: | 319行目: | ||
* {{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}} を使ってみてください。 |
* {{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 を完全に削除してください。 |
* 十分な RAM があることを確認してください。Android は /tmp ディレクトリを重度に使用します。デフォルトでは /tmp フォルダがマウントされるパーティションのサイズは RAM の半分になっています。/tmp が満杯になると、ビルドは失敗します。RAM は 4GB 以上あることが推奨されます。もしくは、[[fstab]] から tmpfs を完全に削除してください。 |
||
− | * [https://source.android.com/source/building |
+ | * [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 までのコマンドでビルドするのが最速になります"。 |
}} |
}} |
||
338行目: | 342行目: | ||
=== Fastboot === |
=== Fastboot === |
||
− | Fastboot (と [[#Android Debug Bridge (ADB)|ADB]]) は |
+ | 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}} スクリプトが付属したファームウェアが落ちています。}} |
{{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}} スクリプトが付属したファームウェアが落ちています。}} |
||
374行目: | 378行目: | ||
== 他の接続方法 == |
== 他の接続方法 == |
||
+ | |||
+ | === Android File Transfer === |
||
+ | |||
+ | {{Pkg|android-file-transfer}} は Mac 用の Android File Transfer と同じようなシンプルな UI を備えた信頼性のある MTP クライアントです。 |
||
=== adb-sync === |
=== adb-sync === |
||
381行目: | 389行目: | ||
=== AirDroid === |
=== AirDroid === |
||
− | [ |
+ | [https://play.google.com/store/apps/details?id=com.sand.airdroid AirDroid] はウェブブラウザからファイルにアクセスするための Android アプリです。 |
+ | |||
+ | === Send Anywhere === |
||
+ | |||
+ | {{AUR|sendanywhere}} は速度とシンプリシティに重きを置いているクロスプラットホームのファイル転送ソリューションです。simplicity. |
||
=== AndroidScreencast === |
=== AndroidScreencast === |
||
405行目: | 417行目: | ||
[[Samba]] を参照。 |
[[Samba]] を参照。 |
||
+ | == ヒントとテクニック == |
||
− | == Tips & Tricks == |
||
=== デバッグ中に "Source not found" === |
=== デバッグ中に "Source not found" === |
||
415行目: | 427行目: | ||
=== 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 フォーラム] にあります。 |
== トラブルシューティング == |
== トラブルシューティング == |
||
421行目: | 433行目: | ||
=== Android Studio: Android Virtual Devices show 'failed to load'. === |
=== Android Studio: Android Virtual Devices show 'failed to load'. === |
||
[[#Android Studio]] に書いているように {{ic|ANDROID_HOME}} 変数をエクスポートしてください。 |
[[#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 === |
||
435行目: | 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" を選択してください。