敏捷個人應用主要是在Andorid下開發,發布的也主要是Andorid。之所以沒有急着退出iOS版本,主要是因為開發iOS需要iOS的開發環境,發布還需要開發者賬號,這些都需要資源或錢。而最近越來越多的敏友們期待着iOS版本的出現,為了感謝會員們的加入,所以還是決定投入開發iOS版本。
如果看過我之前寫的關於敏捷個人應用開發的博客,應該知道我使用的是Phoengap。那么Phonegap在iOS下開發會遇到一些什么需要注意的事項呢?下面簡要記錄一下這次我遇到的一些問題,方便初次使用PhoenGap進行iOS下開發的朋友們。
開發環境
- XCode 6.1
- PhoneGap 4.1.2-0.22.7
生成iOS項目
$ cordova platform add ios
添加插件
$ cordova plugin add org.apache.cordova.device
配置Phonegap
- PhoneGap的配置文件在 【Staging】目錄下的config.xml
- 設置啟動頁: <content src="html/login.html"/>
- 添加可訪問頁面: <access origin="http://www.zhoujingen.cn/*" /> ,否則會出現類似 ERROR whitelist rejection: url='http://www.zhoujingen.cn/ 的錯誤
設置XCode 項目
- ARC forbids explicit messag send of'release'
- Targets-[Build settings]- CLANG_ENABLE_OBJC_ARC :No
-
整個窗口與ToolBar重合了,解決這個問題是設置Target: General :"Hide during..." will work
- XCode6后是找到plist文件,添加一項:View controller-based status bar appearance,設置為no
-
遇到類似“ Undefined symbols for architecture x86_64:
"_SCNetworkReachabilityCreateWithAddress", referenced from:
+[AFNetworkReachabilityManager managerForAddress:] in AFNetworkReachabilityManager.o”的錯誤,就上網找一下是缺少什么類庫,例如這個示例顯示的錯誤解決辦法就是添加 CFNetwork.framework 類庫
SVN在XCode放棄所有改變后
cordova/lib/copy-www-build-step.sh: Permission denied
解決辦法:
cd platforms/ios/cordova/lib
sudo chmod 777 copy-www-build-step.sh
在Chrome下調試
Mac下打開Chrome跨域調試:open -a "Google Chrome" --args --disable-web-security
ARC forbids explicit message send of release
在ios中經常會遇到:ARC forbids explicit message send of 'autorelease' 或“ARC forbids explicit message send of release”這樣的錯誤。原因可能是項目使用了arc機制而有些文件禁止使用而報錯,
解決方法:
點擊項目名,在中間一欄選擇targets,然后選擇build phases選項。
展開Compile Sources,找到你報錯的文件名,然后雙擊添加-fno-objc-arc:如下圖:
Undefined symbols for architecture armv7s: "_OBJC_CLASS_$_CATransaction", referenced from: objc-class-ref in CDVBarcodeScanner.o ld: symbol(s) not found for architecture armv7s clang: error: linker command failed with exit code 1 (use -v to see invocation)
Try to add QuartzCore framework to link with your project. Go Build Phases -> Link Binary With Libraries and add QuartzCore.