由 source code 制定 ownCloud Android Client 1.5.4 Diy

最近 ownCloud 的 Android client 的版本已經升級至 v1.5.4,有需要跟進更新一下我們在用的版本,而且我在準備搞一個 apps,它也有參考價值,所以又從 Github 再次下載了最新的 source code 自己 compile apk。

由於 ownCloud client 是用 Eclipse 開發的,而我卻已經開始改用 AS (Android Studio),所以整個過程是由 Github 下載 source code,import 至 ADT (Android Development Tools),確認可以 compile 在 emulator run,然後 export 成 gradle 格式,再由 AS import,compile run。

假設 development platform 已經準備好,我用:

Ubuntu 13.10 64-bits
JRE v1.7.0_51-b13 amd64
ADT v22.3.0-887826
AS v0.5.1

1. 從 Github 下載 source code,把 source code 放在 /home/user/Downloads/oc-android 檔案夾

git clone https://github.com/owncloud/android ~/Downloads/oc-android
cd ~/Downloads/oc-android
./setup_env.sh

1.1 執行第一句,從 Github 複製一份 source code 到自己的電腦,複製至新創建的檔案夾 ~/Download/oc-android
dev-01
1.2 跳至下載所在地,檔案夾 ~/Download/oc-android
dev-02
1.3 打開當中的 setup_env.sh 看看,都是一堆 command line 的指令,我用的是 Geany editor,你可以用 gedit
dev-03
1.4 你可以一句一句地執行,我就直接用 setup_env.sh
dev-04
1.5 應該是沒有 error 的(如下),細心看會有一個 alert(It seems that there are…),不過是不礙事的
dev-05

2. 接下來就是 import 至 ADT 的 workspace /user/oc-android,compile,在 emulator run 一下
2.1 首先建立一個檔案夾 ~/oc-android 作為 ADT 的 workspace
dev-06
2.2 打開 ADT,把 workspace 改為 ~/oc-android,File > Switch Workspace > Other…
dev-07
2.3 首先 import ActionbarShelock library,File > Import
dev-08
2.4 注意要選 ~/oc-android/actionsherlock/library 檔案夾
dev-09
2.5 記得要勾選要 import 的 project 和 Copy projects into workspace(如下‵)
dev-10
2.6 接著 import owncloud-android-library,這次選的檔案夾是 ~/oc-android/owncloud-android-library
dev-11
2.7 它有多個 projects,不過我們祇需要 ownCloud Android Library,其他不用 import
dev-12
2.8 最後是 import ownCloud client 的真身,選用檔案夾 ~/Download/oc-android
dev-13
2.9 它有更多的 projects,我們祇需要 owncloud-android 和 owncloud-android-workaround-accounts,其餘可以不理
dev-14
2.10 都 import 之後,ADT 可以見到 4 個 projects(如下)
dev-15
2.11 打開 library,請留意,directory 內是沒有 bin 的,我們要 build 這個 project,建立 bin 和 bin 內的檔案,是準備給 owncloud-android 用的
dev-16
2.12 先 clean 一下該個 project(Project > Clean),留意要停用 Project > Build Automatically(toggle 勺選)
dev-17
2.13 Clean 完就可以做 Project > Build Project,順利 build 之後就可以看到 bin 內多了一些檔案,其中一定要有 library.jar
dev-18
2.14 接著就是 build owncloud-android-library,順利 build 之後又可以看到 bin 之下的 owncloud android library.jar,提醒一下,這裡的 target API 是 Android 4.4.2,剛才卻是 4.0
dev-19
2.15 最後就是 build owncloud-android 了,不過 build 之前要修正 library 的路徑,right click project owncloud-android,Build Path > Configure Build Path,click Android,出現下圖,兩個 library 都出現紅色 X
dev-20
2.16 click Add,出現下圖,把 library 和 ownCloud Android Library 加進
dev-21
2.17 兩倨綠色的 ticks,兩個紅色的 X
dev-22
2.18 把兩個紅色的 X remove
dev-23
2.19 可以 build 了,build 完就可以 run
dev-24
2.20 這是未有 ownCloud Android client 的 emulator
dev-25
2.21 build 完就出現 bin,如果 run 沒有遇到 error 就會自動 deploy,安裝到 emulator
dev-26
2.22 安裝完成就自動 launch
dev-27
2.23 在 res 之內可以看到 owncoud-android.apk,這個 apk 就可以抄到你的 Android device 安裝 ownCloud client 1.5.4 了
dev-28

3. 在 ADT 準備 build.gradle,然後在 AS import,compile,在 emulator run 一下
3.1 在 ADT click File > Export,出現下圖,選 Generate Grade build Files
as-01
3.2 勾選你要 export 的 projects,我沒有選 owncloud-android-workaround-accounts,因為v1.5.4 有個 bug,這是暫時的解決辦法,對我沒有影響所以不選了
as-02
3.3 ADT 確認你剛選的 projects
as-03
3.4 ADT 提醒你,build.gradle 的路徑,和 import 的時候就不要選 project 本身而是採用這個 build.gradle
as-04
3.5 你可以打開 build.gradle 來看看,下圖的是 owncloud-android 之下的 build.gradle
as-05
3.6 下圖是 ~/oc-android 至目前為止的檔案以及檔案夾
as-06
3.7 用 editor 打開 ~/oc-android/build.gradle,我是用 Geany editor 的,你可以用 gedit
as-07
3.8 把 gradle:0.5.+ 改為 gradle:0.9.+,因為 owncloud source 用的 gradle 版本比較舊,我台電腦已經在用 0.9 了,要 save 啊
as-08
3.9 可以 launch AS 了,選 Improt Project
as-09
3.10 browse 去選 ~/oc-android/build.gradle
as-10
3.11 這是 import 其間的進度條
as-11
3.12 import 完成後會自動打開個 project(如下圖)
as-12
3.13 右下角出現一個 Event Log,綠色是安全,紅色就是出現問題,click 一下會顯示詳細的 Log
as-13
3.14 打開 oc-android 的樣子
as-14
3.15 可以 run owncloud-android 了,deploy 的時候 AS 會問你用什麼 emulator
as-15
3.16 順利 deploy 後,emulator 就會 launch ownCloud Client 1.5.4
as-16
3.17 AS deploy 的 apk 是放在 ~/oc-android/build/aok 之下,會說明是 debug-unaligned,如果要 make 一個 released 的 apk 還要執行 Build > General Signed APK…,這裡就省卻了
as-17