iphone 開發中使用zbar時遇到的幾個典型問題解決方法。


iphone 開發中使用zbar時遇到的幾個典型問題解決方法。
 
在近期的一個ios項目中使用到了一個二維碼掃描庫(Qrcode)--ZBar, 期間遇到2個問題。
 
1. zbar下載后使用其libzbar.a 發現無法再arm7上運行。
2. zbar使用過程中,如果多次打開攝像頭掃描Qrcode,會出現memory leak problem, 導致其內存指數型增長,大概8次調用后即耗費了85M 左右的內存, 最后導致app崩潰。
3. libzbar.a 在重新編譯后, 無法再在simulator中運行,編譯鏈接時出現錯誤提示:
Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_ZBarReaderViewController", referenced from:
      objc-class-ref in HelloWorldViewController.o
  "_ZBarReaderControllerResults", referenced from:
      -[HelloWorldViewController imagePickerController:didFinishPickingMediaWithInfo:] in HelloWorldViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
 
 
1.libzbar.a無法編譯鏈接成功的問題。
打開zbar.xcodeprj ,在指定的a7 simulator平台或者實機上重新編譯,將libzbar.a替換原有的。
 
 
2. mem leak 問題的解決。
找到ZBarReaderViewController.m 修改其loadView方法,改成如下形式。
 
- ( void ) loadView
{
    self . view  = [[[ UIView  alloc ]
                    initWithFrame :  CGRectMake  ( 0  ,  0  ,  320  ,  480  )]  autorelease  ];
}
 
添加了autorelease之后, 其內存使用狀況就可以穩定在0.1M的范圍內。
 
3. zbar的此問題出現的原因是: 在我解決上面的第二個問題時,只提取了Debug-iphoneos文件夾下的libzbar.a,此文件只能被實機link, 若要使得編譯結果能device 和 simulator都能link, 可以依照如下方法解決。
主要思路:
1. 重編譯時,設置Build Settings下的Architectures 和 valid Architectures為 arm64, armv7 , armv7s.
2. 重編譯時,設置iOs deployment target 為ios 7.0 .
3. 在Product菜單中選擇Schema->Edit Schema->Run->Build Configuration 為: Release。
4. 選擇libzbar 分別選擇不同實機和設備, 點擊三角Run。
5. 在Xcode 工作區Products下非紅色的libzbar.a ,右鍵找到其所在目錄。 返回上一級
6. 運行: lipo -create Release-iphoneos/libzbar.a Release-iphonesimulator/libzbar.a -o libzbar.a
7. 拖拽 生成的libzbar.a 到 xcode 工程目錄中, 選擇copy到工作區。 
8. 完成!
 
 
參考:
http://stackoverflow.com/questions/22560899/xcode-5-1-undefined-symbols-for-architecture-x86-64-zbar
http://stackoverflow.com/questions/5387076/running-a-release-build-with-xcode-4
http://stackoverflow.com/questions/5287213/how-can-i-build-for-release-distribution-on-the-xcode-4
http://stackoverflow.com/questions/5706548/how-do-i-create-a-release-build-in-xcode-4
http://stackoverflow.com/questions/12339969/zbar-ifdef-issue-with-minizip-in-ios
http://stackoverflow.com/questions/18638319/zbar-memory-leak-on-ios
 


免責聲明!

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



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