PhoneGap在iOS開發下的注意事項


敏捷個人應用主要是在Andorid下開發,發布的也主要是Andorid。之所以沒有急着退出iOS版本,主要是因為開發iOS需要iOS的開發環境,發布還需要開發者賬號,這些都需要資源或錢。而最近越來越多的敏友們期待着iOS版本的出現,為了感謝會員們的加入,所以還是決定投入開發iOS版本。

如果看過我之前寫的關於敏捷個人應用開發的博客,應該知道我使用的是Phoengap。那么Phonegap在iOS下開發會遇到一些什么需要注意的事項呢?下面簡要記錄一下這次我遇到的一些問題,方便初次使用PhoenGap進行iOS下開發的朋友們。

敏捷個人手機應用截圖

開發環境

  1. XCode 6.1
  2. PhoneGap 4.1.2-0.22.7

生成iOS項目

 $ cordova platform add ios

添加插件 

$ cordova plugin add org.apache.cordova.device

配置Phonegap 

  1. PhoneGap的配置文件在 【Staging】目錄下的config.xml
  2. 設置啟動頁:   <content src="html/login.html"/>
  3. 添加可訪問頁面:    <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機制而有些文件禁止使用而報錯,

解決方法:

1.禁用在Xcode中的特定文件的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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM