2017年5月15日 星期一

安裝 Android SDK 供『所有用戶』開發 Android APP

前文〝在 Fedora 中安裝 Android Studio 供『所有用戶』使用〞中,只有 Android Studio 是共用的,而 Android SDK 是安裝在『個別使用者的家目錄』中。如果,有好幾個使用者開發的版本相同,那麼重覆安裝下,所浪費的硬碟空間就很可觀。
  Linux 系統的分享、授權的機制相當完整,是否可以讓『所有用戶』共用同一套 Android SDK 呢?要達到上述目的,至少需要具有以下條件:
  • 所有用戶共用同一套 Android Studio(參考前文
  • 所有用戶共用同一套 Android SDK
  • 可以更新『已安裝』的 SDK 套件
  • 可以安裝『未安裝』的 SDK 新版套件
以下就是整理後的安裝、設定步驟。

:目前只有『命令列』的操作步驟,『圖形化介面」的操作步驟,仍需要一些時間測試。

一、安裝『命令列工具 (command line tools)』

要安裝 Android SDK 要先安裝『命令列工具 (command line tools)』,這些命令檔可以從官網下載,在 Linux 安裝用的檔案是 sdk-tools-linux-xxxxxxx.zip,這次下載的是 sdk-tools-linux-3859397.zip
  安裝的目錄就定在 /opt/android-sdk/,先在 /opt/ 下建立 android-sdk 這個目錄,再將剛才下載的檔案解壓縮在 /opt/android-sdk/ 目錄下。所下的命令為:
[root@Core-i7 ~]# mkdir /opt/android-sdk
[root@Core-i7 ~]# unzip sdk-tools-linux-3859397.zip -d /opt/android-sdk/
安裝後,可以檢查一下結果是否如下:
[root@Core-i7 ~]# ll /opt/android-sdk/
總計 4
drwxr-xr-x. 6 root root 4096  5月 14 15:09 tools
其中 tools 這個目錄下,就是安裝好的『命令列工具 (command line tools)』。接著,就可繼續安裝 Android SDK 了。

二、安裝 Android SDK

上個步驟中,有個名為 sdkmanager 的檔案,是在『命令列』安裝 Android SDK 的重要命令檔。在前文中執行 studio.sh (或由『程式選單』下點選 Android Studio)時,會預設安裝一些開發套件,若以 sdkmanager 安裝其等效命令為:
[root@Core-i7 ~]# /opt/android-sdk/tools/bin/sdkmanager build-tools\;25.0.3 emulator extras\;google\;m2repository extras\;android\;m2repository extras\;m2repository\;com\;android\;support\;constraint\;constraint-layout-solver\;1.0.2 extras\;m2repository\;com\;android\;support\;constraint\;constraint-layout\;1.0.2 platforms\;android-25 patcher\;v4 platform-tools platforms\;android-25 sources\;android-25 tools
經上述命令安裝後,『所有用戶』所看到的 Android SDK 就與執行 studio.sh 後預設安裝的結果無異。所安裝的 Android SDK 會在 /opt/android-sdk/ 目錄之下。

註一:上例中的數字為版本編號,可能與最新的版本編號不一樣,請讀者自行修改。
註二:有關 sdkmanager 命令的參數,請參考本文文末說明。

三、在各用戶的家目錄下建立 Android SDK 目錄、鏈結

在 /opt/android-sdk/ 目錄下安裝 Android SDK 後,各用戶仍不能正常使用 Android SDK 開發 Android APP。必須在各用戶的家目錄下,建立對應的 Android SDK 目錄,所下的命令如下:
[SiB@Core-i7 ~]$ mkdir ~/Android
[SiB@Core-i7 ~]$ mkdir ~/Android/Sdk
[SiB@Core-i7 ~]$ cd ~/Android/Sdk
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/add-ons add-ons
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/build-tools build-tools
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/cmake cmake
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/docs docs
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/emulator emulator
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/extras extras
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/licenses licenses
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/lldb lldb
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/ndk-bundle ndk-bundle
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/patcher parcher
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/platform-tools platform-tools
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/platforms platforms
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/sources sources
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/system-images system-images
[SiB@Core-i7 ~Sdk]$ ln -s /opt/android-sdk/tools tools
要下的命令有很多列,重新整理如下,方便讀者剪貼使用。
mkdir ~/Android
mkdir ~/Android/Sdk
cd ~/Android/Sdk
ln -s /opt/android-sdk/add-ons add-ons
ln -s /opt/android-sdk/build-tools build-tools
ln -s /opt/android-sdk/cmake cmake
ln -s /opt/android-sdk/docs docs
ln -s /opt/android-sdk/emulator emulator
ln -s /opt/android-sdk/extras extras
ln -s /opt/android-sdk/licenses licenses
ln -s /opt/android-sdk/lldb lldb
ln -s /opt/android-sdk/ndk-bundle ndk-bundle
ln -s /opt/android-sdk/patcher parcher
ln -s /opt/android-sdk/platform-tools platform-tools
ln -s /opt/android-sdk/platforms platforms
ln -s /opt/android-sdk/sources sources
ln -s /opt/android-sdk/system-images system-images
ln -s /opt/android-sdk/tools tools
設定以上鏈結後,使用者就如同已安裝 Android SDK 一般。
註三:各用戶家目錄下的 Android SDK 目錄名稱為:~/Android/Sdk,不可更改。
註四:若用戶曾經將 Android SDK 安裝在不同的目錄中,則要先將所有 Android 的設定完全移除才行。命令為:
[SiB@Core-i7 ~]$ rm .android -rf
[SiB@Core-i7 ~]$ rm .AndroidStudio2.3
[SiB@Core-i7 ~]$ rm Android -rf

四、Android SDK 的更新、管理

Android SDK 的套件常常更新或增加,當然也要由管理者下『更新』『安裝』或『移除』這些管理命令。

更新 Android SDK

[root@Core-i7 ~]# /opt/android-sdk/tools/bin/sdkmanager --update
這個命令只更新 Android SDK,不會更新 Android Studio。

列出 Android SDK 各項套件名

[root@Core-i7 ~]# /opt/android-sdk/tools/bin/sdkmanager --list
這個命令會列出 Android SDK 的各項套件名稱,順序為:
  • 最前段會先列出『已安裝』的套件,
  • 中段則為 Android SDK 各項套件清單,
  • 最後則為有『更新』版本的套件。

安裝 Android SDK 套件

[root@Core-i7 ~Temp]# /opt/android-sdk/tools/bin/sdkmanager platforms\;android-15 sources\;android-15
上述命令安裝兩個套件,分別為:Android SDK Platform 15 及 Sources for Android 15。

註五:『 \; 』就是『 ; 』,因為命令解譯器會辨認錯誤,因而加上『 反斜線 \ 』
註六:套件名稱的間隔為『空白』

五、開發 Android APP

開始開發 Android APP,一樣是執行 Android Studio 的 studio.sh。執行的方式為:
[SiB@Core-i7 ~]$ /opt/android-studio/bin/studio.sh
或是依前文安裝 Android Studio 的結果,由『程式選單』之【應用程式】→【軟體開發】,再點選【Android Studio】就可以了。
確認之前的設定已完全清除,或完全沒有安裝過 Android Studio,按【OK】鈕
按【Next】鈕
選擇「安裝型別」,採用預設值『Standard (標準)』即可,按【Next】鈕
列出「安裝型別」及「預設目錄」,按【Next】鈕
提醒要安裝 KVM 以增加 Emulator (模擬器) 的執行速度,按【Finish】鈕
由於已經在用戶的家目錄下,建立 Android SDK 目錄及相關鏈結,因此直接顯示『Android SDK 已更新』,按【Finish】鈕
最後這個畫面表示 Android Studio 及 Android SDK 都已安裝且通過驗證,可以開始開發 Android APP 了。

後記

  • 2017-6-10:安裝 Google APIs 後,需增加一個鏈結 add-ons,否則 Android Studio 無法找到它,已增訂在本文中的鏈結設定。
  • 2017-6-20:把「使用者」在家目錄下,需建立的鏈結補齊,共增加 cmake, docs, lldb, ndk-bundle, 及 system-images。

已測試版本:

  • Android SDK: 26, 25
  • Fedora: 25, 24, 22

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)