新增 Linux User 小檔案

由於 Android 4.1 的編譯環境不再支持 32 bits 的 Linux, 一定要用 64 bits. 所以富士通的同事跑來要求加個 server 的帳號. 我想說只是加個帳號, 就順便替他處理一下. 想不到害他前後跑了三趟, 第一次是加帳號, 第二次是要開 Samba, 第三次是要加 sudoer; 既然三大革命應該一次完成, 我還是寫個 SOP 吧!

1. 加帳號

useradd USERNAME

增加一個和帳號同名 (USERNAME) 的目錄在 home 下面,

mkdir /home/USERNAME

把目錄指設定為帳號的 home 目錄.

useradd -d /home/USERNAME USERNAME

chgrp GROUP_NAME USERNAME

chown USERNAME USERNAME

passwd USERNAME, 接著依提示輸入密碼兩次.

2. 開 samba

smbpasswd -a USERNAME, 增加 samba user.

smbpasswd USERNAME, 接著依提示輸入密碼兩次.

3. 加 sudo

sudo 放在 /etc/sudoer, 它不能用普通的 vi 去編輯.

必須使用特殊指令 sudo visudo -f /etc/sudoers

在裡面增加一行

USERNAME ALL=(ALL) ALL NOPASSWD: ALL

紅色部分可以省略, 好處就是打 sudo 時不用輸入 password 了.

按 ^X 離開, 按 Y 確定, 跑出一個選項後, 再按 enter 確認.

修改既有 APK 的流程

如果從網路上抓到一個 APK, 又想要對它修改的話, 大約需要幾個步驟.

第一步是抓 APK TOOL 或是 APK Manger 回來. 雖然他們都有 Windows 版本, 但是用起來和 MS-DOS 差不多, 並沒有方便的視窗可以操作. 原本聽說 APK Manager 很厲害, 但是選單也相對較複雜, 就沒有再研究了.

APK Tool 這一系列需要抓  apktool-1.0.0.tar.bz2 和 apktool-install-windows-2.1_r01-1.zip. 解開後得到一個apktool.jar 和 apktool. 雖然網路上說 apktool.jar 要 copy 到 c:windows, 但是實際上發現它只有放在 apktool 同一個目錄才找得到 (除非那個目錄就是 c:windows).

接著使用 apktool d ThisIsYourAPK.apk ThisIsYourDirectory

就可以把 APK 的內容解到 ThisIsYourDirectory. 下面可以看到 lib, res, smali 三個基本的目錄, 以及 AndroidManifest.xml.

若是直接把 .apk 重新命名成 .zip 後解壓縮 (unzip) , 同樣也會看到 lib, res, 與 AndroidManifest.xml. 但可能會多出 METAINF  目錄, 與 resources.arsc, 與 classes.dex 兩個檔案. 其中 classes.dex 可以再依序反組譯為 class → jar → java.  對應到 apktool 生出的 smali.

上面兩種方式獲得的結果不同, 特別可以從 AndroidManifest.xml 看出來. 由於 APK 是給 DVM 看的格式, 所以這個檔案已經變得不可讀了. 當然, 它可以再用工具將它還原 Android: 反編譯 Android APK 文件. 一路用工具把 APK 裡面的各個 binary 還原回 source code 也是一個方法.

若是使用 apktool, 反組譯後得到的 source 都是可讀, 包括. 比方說想把免費軟體裡面的廣告拿掉, 畫面從直的改橫的, 可以直接到 res/layout/main.xml 裡面去撈相關的定義來修改 – 一個 APK 反編譯利器 Apktool.

此外, 若是以 apktool 反組譯, 修改完了之後, 還可以用 apktool b ThisIsAAPK.apk  打包回 APK. 最後再加個簽名, 就變成正式的 APK. 如果是用 unzip 提出來的修改的, 要再打包成 APK 似乎比較麻煩.

如果得到的是一個已經打包好的 APK, 那麼重編 Android 系統時可以將它放在 device 的某層目錄下一起編譯. 在這個 APK 同層的目錄裡, 寫一個 Android.mk – android 編譯系統 makefile (Android.mk) 寫法. 就可以把 APK 編進系統裡面了.

雖然上面的那個連結的內容很多, 但是 Adroid.mk 裡面只要有下面幾個基本要素就夠了. 制式定義好的部分根本不用動. 

LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ThisIsYourAPK
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX :=$(COMMON_ANDROID_PACKAGE_SUFFIX
include $(BUILD_PREBUILT)

如果像這樣寫了很多 APK, 上層目錄再加一個 Android.mk,  寫上這兩行即可.

include $(CLEAR_VARS)
include $(call all-makefiles-under, $(LOCAL_PATH))

寫完本篇之後, 忽然找到兩個厲害的網站, 順便記在這裡.

[1] [android反编译小结]apktool/ AXMLPrinter2.jar/ dex2jar.bat/ jd-gui/ Jodeclipse/ JadClipse

[2] 把玩"魔術師" — 認識、把玩 APK 檔

雲端小整理

雲端時代來到, 光碟片可以打包拿去小七換茶葉蛋了. 然而, 雲端包括哪些呢? 我稍微看了一下, 排除架站空間這種前一代的產品之外. 大概可以還分成 4 大類. 第一類就是免費 (免註冊) 空間, 第二類是網路硬碟, 第三類是企業私有雲, 第四類則是個人私有雲.

以前我們和客戶傳那些有 bug 的影片時, 為了避免把 ftp server 的帳號密碼弄得客戶在波蘭的客戶都知道, 乾脆就直接上傳到免費空間. 到時候只要給一個 link, 他們就可以自己去下載. 此類的雲端包括 FileSonic, FileDeck, uploadstation, megaupload, rapidshare…等等, 族繁不及備載.

花錢的人主要可以得到頻寬 – 高速下載, 沒花錢的人則需要等待好幾秒才能慢速下載 (時間 = 金錢). 網站的空間大小相對比較不重要, 因為既然不需要註冊, 也就不用分你的我的了. 也由於此類免費空間可以不需要註冊, 使它成為盜版軟體交流的天堂. 故前一兩年好幾個知名網站都被美國政府禁了.

第二類的雲端就是公有雲, 泛指資料儲存在別人家裡的軟體空間, 例如 dropbox, SkyDrive, Google 硬碟. 由於自己的資料等同被廠商綁架, 免費空間用完之後, 還得掏腰包去買更大的空間來維持使用習慣. 以一顆 2TB 硬碟有 3 年保固, 且售價 4199 NTD 來算的話, 每個月花 1.167 NTD 去租 20GB 基本上是划算的. 可惜實際上得花 300 NTD 才能搞定 [註1]. 花錢的人主要得到空間, 而不是保證頻寬.

第三類的雲端是企業私有雲. 原本我看到微軟也搞私有雲, 有心想要下載來試試看. 不料安裝了好久好久, 才想通我根本就不是他們的目標客戶. 這些大公司的主要客戶是大企業 [註 2] . 比方說: HP, IBM, Oracle, VMware-EMC-Cisco, 以及 Microsoft 都推出了企業私有雲的解決方案.  

第四類才是個人的 “私有雲". 假如不放心把資料放在別人那裡, 更不想花冤枉錢; 那麼使用者得自備 server, 頻寬, 下載並安裝軟體. Tonido, B driver 都是這類的雲端公司. 由於天下沒有白吃的午餐, 廠商的賺錢之道在於卡住某些功能, 或是販賣升級版.

Tonido 軟體包括 server 端以及 client 端. Server 端就是放檔案資料的地方, 支援 Windows, MacOS, 和 Linux 三大平台. 而 client 是透過網頁的方式連接 server, 包括下載或上傳檔案的 app. Tonido 最大的敗筆就是不能從 client 更新 server 的同名檔案  [註 3], 也許這是我的使用錯誤或是程式的限制. 不過, 只要在 Google 輸入 Tonido IO error 就可以看到和我同病相憐的人.

B Driver 基本上是變形的 Dropbox, 所以它沒有 server 的概念. 在 Windows, IOS, 和 Android 三個平台上都可以看到同一個帳號在不同主機下的硬碟 (的某個目錄). 不論從哪裡連進來, 都是一個 device. 而且點進去之後, 它還直接有一個 dropbox 的功能, 可以和 dropbox 互傳內容.

最後, 整理第二三四類雲端如下表, 第二類詳見 [註 1]. 第一類免費空間 (簡稱 “免空") 的相關訊息太多了, Google 就可以得到完美解答.

名稱 容量 儲存位置 Windows Mac Android IOS 註解
DropBox 2 GB 公有 V V V V 非常方便, 唯二的缺點就是空間太小和資料在別人手上.
Tonido 不限 私有 Server Server V V Server 還支援Linux. Client 還支援 WP7 和黑莓機.
B Driver 不限 私有 V X V V 少了 MacOS 對我就沒用了.
微軟 System Center 2012 不限 私有 V X X X 1. 安裝需要很久, 而且部適合個人用. [註 4]

[註 1] 八種「雲端檔案儲存服務」價格容量大車拼,看看誰比較便宜!(增加Hami個人雲) 

[註 2] 從虛擬化邁向企業私有雲

[註 3] http://www.tonido.com/forum/viewtopic.php?f=14&t=2580&start=10

[註 4] 下載 Microsoft 私用雲端評估軟體

消失的 APK

Android 的 adb (Android Debug Bridge) 是個非常好用的工具, 基本上它代替了我以前常用的 tftp (Trivial File Transfer Protocol) – 改為 push 和 pull, 甚至可以從 PC install APK 到板子上. 此外, install 的線路可以選 USB 或是網路 (包括有線或無線).

如果對這個東西完全沒有概念, 可以想像在開發 SOC 的主機上安裝了一個 adb tool, 它與 Abdroid SOC 上的 adb "內奸" 建立連結之後, 就可以對 SOC 下達各種指令. 嗯, 聽起來像是木馬病毒…

關於 adb 的詳細用法, 可以參考下面的網站.

[安裝有關]

如何取得Android SDK並使用adb指令

[使用有關]

常用的 Android 指令與模擬器參數

網路使用 adb

不過最近很困擾的是, adb 跟我說安裝成功的 apk, 在平台上卻找不到? 如果安裝不成功也就罷了! 可能是連結失效 (error: device not found 或是 wait for device). 只要執行

adb kill-server

接著全部重來一次即可 (可用 adb startserver). 但說好的 apk 不見了還真是神奇? Google 了一下, 有位老兄的遭遇和我類似.

push apk以后找不到应用程序

但他是 push 到 /system/app, 第一次重啟後 Android 會對它做優化, 所以還能夠解釋. 但我應該是安裝到 /data/app, 狀況相對單純. 看來剩下兩個可能:

1. 相容性問題: 因為 apk 不相容, 所以不出現. 下次再試試

adb -s 172.2X.X.X:5555 install -f xxx.apk

2. 辦公室裡面有另外一塊板子的 IP 和我一樣, 我的 apk 全部安裝給他了??? 這個機率也不能說沒有, 哈!

幾種免費防毒軟體的缺點

講到防毒軟體, 應該每個人都用過, 現在連手機版的防毒軟體都出來了. 我用過付費的軟體, 包括趨勢 和 Norton. 另外一半的時間則是用免費的軟體.

我有一陣子買過卡巴斯基. 因為我是大塚軟體的股東, 所以支持卡巴斯基也是應該的. 但是卡巴斯基設定頗為複雜, 掃毒也比較慢, 後來我不再用卡巴斯基, 順便把大塚也賣了. 

Norton 基本上還不錯, 不過一旦過期之後, 就不斷地跳出視窗來威脅客戶, 似乎不用它的軟體, 電腦安全就不保了. 由於 Norton 很難反安裝, 我也拿它沒轍. 只能說是愈看愈生氣, 乾脆把Norton 列入拒絕往來戶! 好在後來安裝某個新防毒軟體時, 它說 Norton 和它相衝, 幫我把 Norton 除掉了.

金山雖然是免費軟體, 但掃毒能力不錯. 缺點之一是容易誤報病毒, 往往報出一些不是病毒的東西. 第二個缺點算是重大缺點. 它竟然把 Adobe Reader 給殺了! 感覺蘋果公司有投資金山的樣子, 怎麼跟 Adobe reader V10 有那麼大的仇恨? 所以我只好把金山毒霸給卸載啦!

[補充] 金山會要求把 "金山導航" 設為瀏覽器首頁, 一不小心同意了的話, 下次想改回來都會被當成 "惡意竄改首頁" 而改不成.

接著因為在 PCHOME  買了不少東西, 所以也得到熊貓 (Panda) Antivirus 的三個月試用序號. 這個軟體的缺點是禁止我的部落格被讀取. 呃…在我搞懂怎麼設定之前, 我也把它卸載了.  不過請大家記住那個試用序號只能安裝一次. 卸載之後就失效了. 

另外有個小雨傘 ( Avira) 防毒軟體. 我記得這個免費版軟體的缺點是不太防木馬網站. 此外它和 Windows 的 defender 相衝. 雖然 defender 很差, 不過別的軟體都沒有特別提到要去關 defender, 難道他們的技術是一樣的?

[補充] Avira 很愛打快顯廣告, 有時沒事就出來一篇阻礙視線. 不過拿人手短, 也就算了.

趨勢的 PC-cillin 雖然以前有聽過一些缺點, 但是我真正不喜歡的是有一年它促銷時, 順發店員說不用設定, 買兩年送三年. 等到兩年到了, 它就不讓我用啦! 雖然不知道該怪趨勢還是順發, 總之我也不再用趨勢的產品了.

大陸的瑞星我也用過, 不用錢, 看起來好像功能強大. 但是電腦怪怪的時候, 它好像沒有真的抓出什麼東西來讓我安心一下. 而且它的家族發展愈來愈大, 慢慢看不懂安裝哪些叫做剛好? 久了也就不想用了.

最後附帶一提, 兩套防毒軟體共存是可行的. 除了少數軟體不相容之外, 大部分都證實能夠相容.