2012年4月5日 星期四

iOS app validate Error

App 在開發的最後階段就是要用 Distribute Provision 來將 App 編譯成可以發佈的二進位碼。但在過程當中遇到了一個難解的問題。

error: Codesign check fails : /var/folders/7v/g9yf0z9w8vl5l1f_dn8f6_gc0000gn/T/jK3H6qVC8k/Payload/Immuno.app: valid on disk
/var/folders/7v/g9yf0z9w8vl5l1f_dn8f6_gc0000gn/T/jK3H6qVC8k/Payload/Immuno.app: satisfies its Designated Requirement
test-requirement: code failed to satisfy specified code requirement(s)



在編譯的過程中一切順利,但這個訊息一直出現在要用 Organizer 檢查 App 的合法性時一直出現。


後來在 Apple 的 Developer Forum 上找到了 解法


原來是在開發的過程當中使用了許多的 Provision 跟 憑證。而 Xcode 會自動的將他們記下來。只不過Xcode 記錯了。所以就是要將原先的憑證 及 provision 都清理乾淨。才能夠  Build 出可以正確認證的 Binary Code.

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月3日 星期二

NetBeans 編碼問題

NetBeans 的預設編是使用 ascii ,但在編輯 utf-8 的檔案時會出現問題

只要在 安裝 NetBeans 的目錄中找到這個檔案

C:\Program Files (x86)\NetBeans 7.0.1\etc\netbeans.conf

加入一個選項  netbeans_default_options: -J-Dfile.encoding=UTF-8

如此一來就可以正常的看見中文字了

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

[茶包] TransactionScope 的問題

當資料庫不在同一台機器的時後記得要設定 MSDTC 的權限, web server + sql server 都要設!!
1. 選擇 元件服務
image
2. 打開元件服務,找到 本機 DTC 按右鍵選內容
win 7:
  image
XP 的話是在 我的電腦上面按右鍵

3. 選擇 安全性 設定網路 dtc 存取,並將 網路 dtc 存取、允許遠端用戶端、選擇不需要驗證
image

[Update 2012/01/20]
其實還會有另外的因素會照成 msdtc 不通
1. Firewall 不通
2. Host Name ping 不到

當 firewall 不通時在 Command Line 直接開放 msdtc 的存取,記得兩台電腦都必需要開通
netsh firewall set allowedprogram %windir%\system32\msdtc.exe MSDTC enable

接下來再在兩台電腦 ping 對方的 HostName
如果有任何一方不通,請在 host 裡加入 hostname 與 ip 的對應

這樣子應該就可以使用了

[reference]http://darkthread.blogspot.com/2006/03/msdtc-on-windows-2003-sp1.html