####2013-1-2html
今天白天出門了,晚上把Android公開課看了兩集。雖然這個課程是比較淺,不過詳略還算得當,總得來講還算是不錯的,並且只有3個小時,博主對這種速成式的比較感興趣。後來瀏覽了幾個國內的視頻,大多數都是面向零基礎的,並且面面俱到,講的比較慢。由於本身也沒打算把這個當正業,加上也有些Java和Swing的基礎,瞭解下大概就能夠先試試開發了吧。java
####2013-1-3android
hostd for Android項目正式啓動!目標是在Android下動態修改域名綁定,不須要修改hosts,不須要修改DNS服務器,也不須要從新切換APN,以用於開發環境和線上環境的快速切換。spring
由於博主是個猴急的開發者,秉承快速原型的的原則,今天開始了一些開發的嘗試。apache
由於DNS服務器BlackHole要使用系統端口53,因此首先要確認其在Android上是否可以運行。部署服務艱難重重,記錄以下:服務器
第一次:網絡
新建一個helloworld Android項目,在buildPath里加入依賴jar包,而後在MainActivity.onCreate()直接啓動DNS服務器。嘗試第一次,不成功:app
解決:使用adb logcat查看,發現產生了NoClassDefinedError,檢查APK包,發現依賴jar沒有打進去。再次檢查buildPath,在"Order and Export"選項裏把這些jar包都勾上,而後jar包被打到APK裏。框架
第二次:ide
由於在BlackHole中使用了Spring,因此出現了問題:ClassPathXmlApplicationContext解析不到xml文件路徑:提示找不到對應bean。
解決:改用FileSystemXmlApplicationContext解析,並將xml存入臨時目錄/sdcard/spring.xml。結果大跌眼鏡,拋出異常:
Unable to validate using XSD: Your JAXP provider [org.apache.harmony.xml.parsers.DocumentBuilderFactoryImpl@461a0cd0] does not support XML Schema. Are you running on Java 1.4 with Apache Crimson? Upgrade to Apache Xerces (or Java 1.5) for full XSD support.
難道Android的xmlparser不支持xsd?感受不太可能啊,猜想應該是Spinrg底層使用XML parser和Android不兼容(Android包裏彷佛使用了SAXParser)。因而放棄Spring,看看之後是否是用其餘IoC框架了,好比Spring for Android?
第三次:
直接啓動SocketServer,綁定53端口,進行嘗試。
問題如期而至,顯示
java.net.SocketException: Permission denied
解決:根據網絡上的解決方案,在程序中插入這一段,理論上能夠在運行到這裏時,提示須要root權限:
try { Runtime.getRuntime().exec("su"); } catch (IOException e) { e.printStackTrace(); }
結果: 沒有出現提示,依然沒有權限!
第四次:
繼續搜索資料,發現模擬器沒有root權限!做爲一個玩安卓不刷機的人,還真不知道該怎麼root。後來下載了一個Root.apk,嘗試之,終於成功。
後來分析,Android root的原理,就是將su替換成另一個文件,而且使用Superuser來管理這些權限。真是曲折!