1. 程式人生 > >ios靜態庫開發中的那些坑

ios靜態庫開發中的那些坑

最近開發靜態庫的時候,在自己這邊真機和模擬器編譯的時候好好的,一到客戶那邊就編譯不了。經研究,原來是將“Build Active Architecture Only”設定成了YES,如果設定成YES,編譯出來的庫只能支援與自己真機或當前模擬器相同的架構,一到別人那邊可能就不能編譯了。

The issue is that the cocoapods have not been built for arm64 architecture yet thus they cannot be linked when you build them. Likely you cannot use those packages until they are updated and use that architecture. You can fix the linker error by going to project -> target (your project name) -> build settings and change architectures to standard architectures (armv7, armv7s), and valid architectures to armv7, armv7s.

Note though, this means you won't get the full power of the 64 bit processor. You said you are building for the 5s, so there may be some reason you need this. If you for some reason absolutely need that power (perhaps you are building a game), and desperately need those files, you could submit a pull request and then recompile the project to arm64 by setting those same fields to arm64 in the files you pulled from the open source projects. But, unless you really need these files to be 64 bit compatible, that seems like a bit of overkill for now.

EDIT: Some people also reported that setting Build For Active Architectures to YES was also necessary to solve this problem.

**********************

解決了我的問題

ARCHS = armv7 armv7s

VALID_ARCHS = armv6 armv7 armv7s arm64

本文轉載至 http://blog.csdn.net/forlong401/article/details/20059841

用Xcode提交市場的時候,報如下的錯誤:

ERROR ITMS-9000: "this bundle is invalid. armv7s are required to include armv7 architecture." at SoftwareAssets/SoftwareAsset (MZItmspSoftwareAssetPackage)

解決方法:

找到專案配置的架構Architecture部分,將“Build Active Architecture Only”裡的Release設定為No(如果不是no的話,當你開著模擬器或者插著手機的時候,就只編譯當前的cpu架構的版本),如圖所示:

用xcode開發的庫,預設都是動態庫,而appStore又不允許上傳動態庫,因此上傳的時候,需要將動態庫轉換為靜態庫,轉換方法:

相關推薦

ios靜態開發那些

最近開發靜態庫的時候,在自己這邊真機和模擬器編譯的時候好好的,一到客戶那邊就編譯不了。經研究,原來是將“Build Active Architecture Only”設定成了YES,如果設定成YES,編譯出來的庫只能支援與自己真機或當前模擬器相同的架構,一到別人那邊可能就不能編譯了。 The issue

iOS靜態開發對Bitcode的支援

1.bitcode bitcode是LLVM編譯器將C/C++/OC/Swift等前端變成語言編譯成多種不同晶片上的機器指令過程中的中間程式碼。並且這個中間程式碼是CPU無關的。 原本我們的APP裡要包含多種支援CPU架構的程式碼。支援Bitcode的優勢就是在提交store後,蘋果再動態生成相應CPU的A

iOS開發那些

原文連結:http://www.jianshu.com/p/da80c4b7190e 最近重新拿起了iOS的開發,使用OC和Swift混編,碰到了一些比較棘手的問題,在這裡記錄下來,方便自己以後或他人不再入坑。這篇文章的內容包含: UITableViewCe

iOS靜態與Workspace在專案的使用

iOS開發中經常用到一些公共庫或封裝的公共函式。我們在不同的專案都需要用到,常常需要每個工程copy一份。現在我教大家怎麼新建lib靜態庫與Workspace,讓多個專案共用一份公共庫。 我們現在分步開始,先新建lib庫 第一步:新建lib工程 第二步

iOS靜態慎重使用Category擴充套件方法(selector not recongized)

事情背景這個坑是前幾天踩的,踩的還特別是時候專案馬上要發版了,發給測試做最後的驗證,測試反饋從log上面看有點詭異,有些手機可以有些手機不可以。因為提測前我是做過自測的,我相信應該沒有問題,一同和測試一起繼續測試,發現還是有些手機可以有些手機不可以。這麼奇怪的問題讓我很懵逼呀。按照常理來說應該是要不可以就都不

IOS 靜態的和.framework制作

https works select 其它 開源庫 sta cat neo working 什麽是庫? 庫是程序代碼的集合,是共享程序代碼的一種方式 根據源代碼的公開情況,庫可以分為2種類型 開源庫 公開源代碼,能看到具體實現 比如SDWebImage、AFNetwor

PHPisset()、empty()函式那些。。。

1,empty — 檢查一個變數是否為空,bool empty ( mixed $var ) 判斷一個變數是否被認為是空的。當一個變數並不存在,或者它的值等同於false,那麼它會被認為不存在。如果變數不存在的話,empty(

原始碼Android短視訊開發iOS短視訊開發記錄位置的原始碼

在原始碼中Android短視訊開發和iOS短視訊開發中,記錄位置資訊的功能是很重要的,它主要被用來定位使用者、搜尋附近的人、查詢使用者可能認識的人,並向用戶推薦他們。下面這段程式碼資訊就是短視訊開發過程中位置資訊處理簡介。 /*記錄位置資訊*/ private void sendLocati

lipo命令合併和拆分IOS靜態

1.合併模擬器和真機通用靜態庫 在Xcode中選擇模擬器編譯出來的靜態庫是i386架構的,選擇真機編譯出來的靜態庫是armv7架構的。當我們是用這些靜態庫匯入到其他工程裡開發的時候很麻煩,其他工程在模擬器下要用需要把i386架構的靜態庫加到工程裡,真機除錯的時候又要把armv7 arm64架構的

React-Native開發點實錄

從移動開發的角度來說,iOS和Android都有自己的一些UI特性,所以react-native宣稱的寫一套程式碼就可以通用就是騙人的鬼話,實際開發中,你會發現很多控制元件在iOS和Android上展示的效果不一樣,或者有些屬性支援iOS不支援Android。rea

msui開發那些

最近公司公眾號二次開發,前段用到了msui(比較小眾的ui),總結一下里面的坑。 官方api連結 (淘寶前團隊) 不在維護    1,$   這個採用的是zepto輕量級的庫,而不是jquery,大家遇到$報錯,或者調取不了一些jquer

PHP開發那些bug

1、關於編輯器的 phpstorm是一款強可大的編輯器,大家都知道使用phpstorm會帶來非一般的感覺,以前我非常不習慣使用快捷鍵,後來發現使用快捷鍵不僅能提高開發的效率,同時能夠減少bug的出現。 ctrl+shift+n 快速開啟一個檔案。 alt+ctrl+l

iOS 靜態製作,Framework製作,Bundle製作

在上一篇教程(中譯版)中,你學到了怎麼樣建立一個可複用的圓形旋鈕控制元件。然而你可能不清楚怎樣讓其他開發者更方便地去複用它。 如果你想將你開發的控制元件與別人分享,一種方法是直接提供原始碼檔案。然而,這種方法並不是很優雅。它會暴露所有的實現細節,而這些實現你可能並不想開源出

FFmpeg3.1.1編譯IOS靜態.a檔案

一、準備工作 1.下載最新的  gas-preprocessor.pl 複製gas-preprocessor.pl到/usr/bin下, 修改檔案許可權:chmod 777 /usr/bin/gas-preprocessor.pl 2.下載編譯指令碼/FFmpeg-i

Mac_XCode編譯ios靜態

在 xcode 下編譯並使用 ios 的 .a 靜態庫 整個過程也類似 vs 編譯 lib靜態庫 新建靜態庫工程 File -> New -> Project

iOS 靜態,動態與 Framework 淺析

靜態庫與動態庫的區別 首先來看什麼是庫,庫(Library)說白了就是一段編譯好的二進位制程式碼,加上標頭檔案就可以供別人使用。 什麼時候我們會用到庫呢?一種情況是某些程式碼需要給別人使用,但是我們不希望別人看到原始碼,就需要以庫的形式進行封裝,只暴露出標頭檔案。另外

IOS-靜態,動態與 Framework

靜態庫與動態庫的區別 首先來看什麼是庫,庫(Library)說白了就是一段編譯好的二進位制程式碼,加上標頭檔案就可以供別人使用。 什麼時候我們會用到庫呢?一種情況是某些程式碼需要給別人使用,但是我們不希望別人看到原始碼,就需要以庫的形式進行封裝,只暴露出標頭

遊戲開發之四 關於單位

Unity的一個單位為一米(m) 如何設定3dsMax的單位才能保證模型大小正確呢? 首先假如3dsMax的單位設定如下: 以上的意思是3dsMax中一個單位為1cm,並且顯示的單位為cm 如果以這個設定匯入Unity的話,保持Scale Factor為1,需要勾

專案開發

一個較為失敗的專案覆盤 寫在前面 前一陣子部門啟動了一個新的專案叫做資源成本決策系統,到目前此專案已經基本上按照啟動前的規劃做的大差不差,但最近開會需要在這個專案中新增新的功能,這可真是要了命了,想想不管從資料庫上設計上,程式碼設計上可拓展性都比較差,專案換

iOS靜態SDK製作(包含第三方靜態

前言 以下所涉及的框架和庫只針對iOS而言,不確保在其他平臺也適用。 最近由於公司業務需要,要求封裝一個支付SDK,需要用到微信支付和支付寶,之前做過的Framework沒有依賴其他第三方的庫所以比較好做,這次有所不同;一開始我想把支付寶和微信支付的SDK全部融