目次
文書の過去の版を表示しています。
Android Studio
Fedora での開発環境構築手順
以下の構築手順は Fedora 41 x86_64 での開発環境構築手順である。
Android Studio の入手
Android Developers の Android Studio より android-studio-ide-182.5264788-linux.zip をダウンロードする。
Android SDK の入手
Android SDK は Android Studio のインストール中に入手できる。
Android SDK Tools の入手
Android Developers の Android Studio より sdk-tools-linux-4333796.zip をダウンロードする。
Android NDK の入手
Android NDK の ダウンロード より最新の安定バージョン(r18b)の android-ndk-r18b-linux-x86_64.zip をダウンロードする。
Java (JDK 11) の入手
JDK 11 は Java SE Development Kit 11- - Downloads より jdk-11.0.2_linux-x64_bin.rpm をダウンロードする。
$ curl -LO -b "oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/11.0.2+9/f51449fcd52f4d52b93a989c5c56ed3c/jdk-11.0.2_linux-x64_bin.rpm"
開発環境構築
以下のディレクトリ構成で環境を構築する。
$HOME/ +-Android/ +-android-ndk-r18b/ +-android-sdk/ +-android-sdk-tools/ +-android-studio/
Android Studio のインストール
android-studio-ide-182.5264788-linux.zip を展開して出てきた android-studio をホームディレクトリ($HOME)の Android の中に移動する。
そして、以下のコマンドを実行する。
$ cd ~/Android/android-studio/bin/ $ ./studio.sh
「Welcome Android Studio」の画面で「Next」ボタンをクリックする。
「Install Type」の画面で「Custom」を選択し「Next」ボタンをクリックする。
「SDK Components Setup」の画面で全てのコンポーネントにチェックを入れて、「Android SDK Location:」にホームディレクトリの Android/android-sdk ディレクトリを選択し「Next」ボタンをクリックする。
「Verify Settings」の画面で内容を確認し「Next」ボタンをクリックする。
「Emulator Settings」の画面で「Finish」ボタンをクリックする。
「Downloading Components」の画面でコンポーネントのダウンロードが終わるまで待つ。
「Downloading Components」の画面で「Finish」ボタンをクリックする。
「Android Studio」が起動する。
Android Studio の日本語化
JetBrains 製品の日本語化マニュアル - IntelliJ IDEA のページの手順で日本語化する。
- ダウンロードした pleiades.zip を展開する。
- その中の plugins/jp.sourceforge.mergedoc.pleiades/ を ~/.AndroidStudio3.3/config/jp.sourceforge.mergedoc.pleiades/ へ移動する。
※~/.AndroidStudio3.3/config(構成ディレクトリ) は /home/(ユーザ名)/.(製品名バージョン)/config の様になっており OS や製品によって異なる。
Android Studio の初回起動時に作成されるが、デフォルトでは不可視になっている。 - ~/Android/android-studio/bin/studio64.vmoptions の最後に以下の2行を追記する。
-Xverify:none -javaagent:(構成ディレクトリのフルパス)/jp.sourceforge.mergedoc.pleiades/pleiades.jar
- ~/Android/android-studio/bin/studio64.vmoptions
-Xms256m -Xmx1280m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -Djna.nosys=true -Djna.boot.library.path= -da -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine -Xverify:none -javaagent:/home/tomoyan/.AndroidStudio3.3/config/jp.sourceforge.mergedoc.pleiades/pleiades.jar
※(構成ディレクトリのフルパス) は ~/.AndroidStudio3.3/config と記述すると以下のようなエラーになるので注意が必要である。
Error opening zip file or JAR manifest missing : ~/.AndroidStudio3.3/config/jp.sourceforge.mergedoc.pleiades/pleiades.jar Error occurred during initialization of VM agent library failed to init: instrument
Android Studio を更新した場合
構成ディレクトリのパスが変わるので修正を行う。
- ~/Android/android-studio/bin/studio64.vmoptions
-Xms256m -Xmx1280m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -XX:CICompilerCount=2 -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -Djna.nosys=true -Djna.boot.library.path= -da -Dawt.useSystemAAFontSettings=lcd -Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine -Dsun.tools.attach.tmp.only=true -Xverify:none -javaagent:/home/tomoyan/.AndroidStudio3.5/config/jp.sourceforge.mergedoc.pleiades/pleiades.jar
Android SDK Tools のインストール
sdk-tools-linux-4333796.zip を展開して出てきた tools/ ディレクトリを ~/Android/android-sdk-tools/ へ移動する。
Android NDK のインストール
android-ndk-r18b-linux-x86_64.zip を展開して出てきた android-ndk-r18b/ ディレクトリを ~/Android/android-ndk-r18b/ へ移動する。
Java (JDK 11) のインストール
JDK 10 を rpm コマンドでインストールする。
Fedora の java は 1.8.0 なので、これを alternatives コマンドで 11.0.2 を利用する様に指示する。
$ sudo rpm -ivh jdk-11.0.2_linux-x64_bin.rpm $ sudo alternatives --config java 2 プログラムがあり 'java' を提供します。 選択 コマンド ----------------------------------------------- 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.fc29.x86_64/jre/bin/java) *+ 2 /usr/java/jdk-11.0.2/bin/java Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2 $ java -version java version "11.0.2" 2019-01-15 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
環境変数の設定
PATH と JAVA_HOME の設定を行う。
$ sudo vi /etc/profile.d/java.sh
- /etc/profile.d/java.sh
export PATH=$PATH:/usr/java/jdk-11.0.2/bin export JAVA_HOME=/usr/java/jdk-11.0.2
設定を有効化するために以下のコマンドを実行する。
$ source /etc/profile.d/java.sh
環境変数の設定
PATH、ANDROID_HOME、ANDROID_NDK の環境変数を設定する。
$ vi ~/.bashrc
- ~/.bashrc
export PATH="$PATH:$HOME/Android/android-sdk-tools/bin:$HOME/Android/android-sdk/platform-tools:$HOME/Android/android-ndk-r18b" export ANDROID_HOME="$HOME/Android/android-sdk" export ANDROID_NDK="$HOME/Android/android-ndk-r18b"
Android Studio ショートカットの追加
デスクトップメニューに Android Studio を追加する。
$ vi ~/.local/share/applications/android-studio.desktop
- ~/.local/share/applications/android-studio.desktop
[Desktop Entry] Encoding=UTF-8 Version=1.0 Type=Application Name=Android Studio Icon=/home/tomoyan/Android/android-studio/bin/studio.png Path=/home/tomoyan/Android/android-studio/bin Exec=/home/tomoyan/Android/android-studio/bin/studio.sh
Wayland ではアプリケーションの状態を失うことなくGNOMEシェルを再起動(ALT + F2 で r を入力して Enter)できない為、一旦ログアウトしてログインし直すとデスクトップメニューに Android Studio ショートカットが追加される。
Android アプリ開発時のデフォルト設定
複数人のチームで開発を行う場合に備えて、Android Studio のデフォルト設定を行っておく。
Android Studio のデフォルト設定を行うには、「Android Studio へようこそ」の画面右下の「構成」をクリックし「設定」を選択する。
「エディター」の「ファイル・エンコーディング」を開き以下の様に設定する。
グローバル・エンコーディング: UTF-8 プロジェクト・エンコーディング: UTF-8 プロパティ・ファイルのデフォルト・エンコード: UTF-8 UTF-8 ファイルの作成: with NO BOM
「エディター」の「コード・スタイル」を開き、各種言語ごとにコード・スタイルをチームで統一しておく。
Java
C/C++
Groovy
Kotlin
XML
Kotlin のコーディング・スタイルについては、Google の Kotlin style guide | Android Developersを参考にすると良いだろう。
https://developer.android.com/kotlin/style-guide
Android Studio の多重起動
Android Studio は多重起動する事が出来ないので、複数ウィンドウを開くことで対処できる。
$ ~/Android/android-studio/bin/studio.sh & $ ~/Android/android-studio/bin/studio.sh & Already running
メニューの [ファイル] - [設定(T)…] の「外観 & 振る舞い > システム設定」で「プロジェクトのオープン時」を以下の様に設定する。
「◎新規ウィンドウでプロジェクトを開く」 ◯同じウィンドウでプロジェクトを開く ◯プロジェクトを開くウィンドウを確認する
「新規ウィンドウでプロジェクトを開く」に設定して [OK] ボタンを押す。
その後は、メニューの [ファイル] - [新規] - [新規プロジェクト] で、別ウィンドウでプロジェクトが開くようになる。
または、メニューの [ファイル] - [開く…] で、別ウィンドウで既存プロジェクトを開く事ができるようになる。
Inotify Watches Limit
インテリジェントIDEの場合、作業中のファイルの外部からの変更を監視するためにバックグラウンドプロセスを回している。
バックグラウンドプロセスが使用する方法はプラットフォーム固有であり、Linuxでは Inotify 機能である。
Inotifyでは、プロジェクト内の各ディレクトリに「ウォッチハンドル」を設定する必要があり、デフォルトの監視ハンドルの制限では、適度な規模のプロジェクトでは不十分な場合があり、制限に達すると、IntelliJプラットフォームはディレクトリツリーの再帰的スキャンにフォールバックすることになる。
このような状況を防ぐために、監視制限を増やすことをお勧めする。(例えば 512K)
Inotify Watches Limit - IntelliJ IDEA - Confluence より。
Fedora 29 では標準で 512K である。
$ sysctl -n fs.inotify.max_user_watches 524288
$ sudo vi /etc/sysctl.conf
1024K に設定してみる。
- /etc/sysctl.conf
# Android Studio - Inotify Watches Limit の設定 fs.inotify.max_user_watches = 1048576
設定を反映するために以下のコマンドを実行する。
$ sudo sysctl -p --system * Applying /etc/sysctl.conf ... fs.inotify.max_user_watches = 1048576
Android プロジェクトに Firebase を追加する
- メニューの [ツール] - [Firebase] をクリック。
- google-services.json の追加、build.gradle の変更が行われる。
google-services.json は、プロジェクトID や API Key などの機密情報が含まれる為 SCM にコミットしない方がよい。
- google-services.json
{ "project_info": { "project_number": "123456789012", "firebase_url": "https://projectname-android.firebaseio.com", "project_id": "projectname-android", "storage_bucket": "projectname-android.appspot.com" }, "client": [ { "client_info": { "mobilesdk_app_id": "1:123456789012:android:abcdef1234567890", "android_client_info": { "package_name": "net.tomoyan.projectname" } }, "oauth_client": [ { "client_id": "123456789012-y67weastetrrtyytyrvtrgrectrvtrtr.apps.googleusercontent.com", "client_type": 1, "android_info": { "package_name": "net.tomoyan.projectname", "certificate_hash": "123456789abcdef123456789abcdef123456789a" } }, { "client_id": "123456789012-y67weastetrrtyytyrvtrgrectrvtrtr.apps.googleusercontent.com", "client_type": 3 } ], "api_key": [ { "current_key": "yfytyfkyukubto6rudtawshreycetiuyo8pimpi" } ], "services": { "analytics_service": { "status": 1 }, "appinvite_service": { "status": 2, "other_platform_oauth_client": [ { "client_id": "123456789012-y67weastetrrtyytyrvtrgrectrvtrtr.apps.googleusercontent.com", "client_type": 3 } ] }, "ads_service": { "status": 2 } } } ], "configuration_version": "1" }
classpath 'com.google.gms:google-services:4.1.0'
implementation 'com.google.firebase:firebase-messaging:15.0.2'
apply plugin: 'com.google.gms.google-services'
が build.gradle に以下の様に追加される。- build.gradle
buildscript { dependencies { classpath 'com.google.gms:google-services:4.1.0' } } dependencies { implementation 'com.google.firebase:firebase-messaging:15.0.2' } apply plugin: 'com.google.gms.google-services'
build.gradle で JavaCompile にオプションを渡す方法
build.gradle に以下の記述を追加する。(JavaCompile に -Xlint:unchecked と -Xlint:deprecation を渡す場合)
- build.gradle
allprojects { gradle.projectsEvaluated { tasks.withType(JavaCompile) { // unchecked は何の型が入るか定義されてないものを表示、deprecation は非推奨なものを表示 options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } }
Android x86 KVM 仮想マシンに接続する方法
Android x86 仮想マシンで「端末エミュレータ」を起動する。
端末エミュレータで以下のコマンドを実行し eth0 の IPアドレスを調べる。
x86_64:/ $ ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope: Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:45 errors:0 dropped:0 overruns:0 frame:0 TX packets:45 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7344 TX bytes:7344 eth0 Link encap:Ethernet HWaddr 52:54:00:72:67:7f Driver e1000 inet addr:192.168.1.128 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::3035:d5a0:74ca:40d8/64 Scope: Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:50068 errors:264 dropped:0 overruns:0 frame:264 TX packets:15545 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:61868429 TX bytes:4179438 x86_64:/ $
IPアドレスが 192.168.1.128 である事が分かる。
Android Studio の画面左下のターミナルをクリックして、ターミナルに以下のコマンドを入力する。
$ adb connect 192.168.1.128 connected to 192.168.1.128:5555
これで Android Studio のメニューから [実行(U)] - [実行(U)] を選択すると「デプロイ対象の選択」一覧に「QEMU Standard PC (Android 8.1 x86)」が表示される。
トラブルシューティング
Android Studio 3.3.2 で Kotolin の新規プロジェクトが sync failed になる
/home/tomoyan/my_projects/MyApplication/MyApplication.iml
プロジェクトルートにある *.iml の <module> タグを以下の様に修正する。
修正前
- MyApplication.iml
<?xml version="1.0" encoding="UTF-8"?> <module external.system.id="GRADLE" type="JAVA_MODULE" version="4"> <component name="FacetManager"> <facet type="android-gradle" name="Android-Gradle"> <configuration> <option name="GRADLE_PROJECT_PATH" value=":" /> </configuration> </facet> </component> <component name="NewModuleRootManager" inherit-compiler-output="true"> <exclude-output /> <content url="file://$MODULE_DIR$" /> <orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" /> <orderEntry type="sourceFolder" forTests="false" /> </component> </module>
修正後
<module> タグに
external.linked.project.id=“(プロジェクト名)“ 属性と
external.linked.project.path=“$MODULE_DIR$” 属性と
external.root.project.path=”(プロジェクトのフルパス)“ 属性を追記する。
更に <component name=“NewModuleRootManager” タグに
LANGUAGE_LEVEL=“JDK_1_7” 属性を追記する。
そして <orderEntry type=“jdk” タグを
<orderEntry type=“inheritedJdk” /> に書き換える。
- MyApplication.iml
<?xml version="1.0" encoding="UTF-8"?> <module external.linked.project.id="MyApplication" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$USER_HOME$/my_projects/MyApplication" external.system.id="GRADLE" type="JAVA_MODULE" version="4"> <component name="FacetManager"> <facet type="android-gradle" name="Android-Gradle"> <configuration> <option name="GRADLE_PROJECT_PATH" value=":" /> </configuration> </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true"> <exclude-output /> <content url="file://$MODULE_DIR$" /> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> </component> </module>
メニューの [ファイル] - [すべて保存(S)] をクリックする。
更にメニューの [ファイル] - [Gradle ファイルとプロジェクトを同期] をクリックする。
ビルド - 同期化が Build completed success になる事を確認する。