顯示具有 phonegap 標籤的文章。 顯示所有文章
顯示具有 phonegap 標籤的文章。 顯示所有文章

2012年1月11日 星期三

建立一個可以跨平台的 PhoneGap 目錄結構

PhoneGap 是一套讓你可以用 HTML & Javascript 的技術來寫 APP 的Framework。我覺得最大的特色是可以跨平台的來使用寫好的 HTML & JS code。

PhoneGap 在 ios 及 android 的專案上都會用到一個名為 www 的目錄來放 html/javascript, 但是所放置的位置卻不大相同,為了不讓同樣的 code 存放在不同的地方,所以需要一點點工具來達成。

為了要可以同時開發,所以這個專案是在Mac上開發的。

所設定的目錄結構如下

+-+[app folder]
|
+[android] 放android 的程式碼
|
+[iOS] 放 xcode 的程式碼
|
+[www] 放所需的 html & javascript



xcode 相當的簡單,將 www 直接拉到 project 下面就可以正常執行了


問題在 eclipse 上,試在 eclipse 中建立 link folder,用mac 建立[替身]?。都無法解決問題。


solution:


使用 mac 中的 symbolic link 將 www 指到 android 的 assets 目錄下


在 command line 中下這個指令


   1:  cd [app folder]/android/assets/
   2:  ln -s ../../www www



如此一來,便可以正常執行不會出問題了

2012年1月2日 星期一

[茶包] PhoneGap Android configChanges

當Android 手機的方向被改變的時後,會造成 Activity 被重啟。如此一來 Activity 的狀態會被清空會造成意外中的 bug

這次就是在送資料到 server 時的時間差,變換了手機的方向。造成 activity 被重啟,在接不到資料的狀態之下,程式就  crash 了。

如何設定讓Activity 不會被重啟??

要達到這個目的,要修改 AndroidManifest.xml 在 activity 的tag 中加入設定

   1: <activity android:name=".Activity"
   2:           android:configChanges="orientation|keyboardHidden"
   3:           android:label="@string/app_name">
   4:     <intent-filter>
   5:         <action android:name="android.intent.action.MAIN" />
   6:         <category android:name="android.intent.category.LAUNCHER" />
   7:     </intent-filter>
   8: </activity>

經過這個設定, Activity 就不會被重啟,而改呼叫 onConfigurationChanged 的 Event。


 


另外,也可以固定畫面方向不被改變


可以在 activity 中加入設定,看要使用 landscape 或是  portrait



   1: <activity
   2:       android:screenOrientation=["unspecified" | "user" | "behind" |
   3:                                  "landscape" | "portrait" |
   4:                                  "sensor" | "nosensor"]>
   5: </activity>

[Reference]


Activity 設定檔文件


http://developer.android.com/guide/topics/manifest/activity-element.html