❶ ios 能編譯動態庫嗎
一、創建FrameWork工程
新建工程,選擇創建FrameWork工程或者靜態庫(Static Library)。
❷ ios源碼,別人就可以運行編譯我這運行報錯21個這是什麼情況
編譯沒報錯,運行也沒報錯,但是就是無法運行起來app的原因
❸ iOS 編譯報錯怎麼辦
1.編譯iPad真機時,選擇了 Architetures:Standard(armv6) BaseSDK:iPhoneDevice3.2 TargetDeviceFamily:iPad.
若編譯出現如下錯誤:
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
則修改 GCC4.2CodeGeneral區域中的ComplieForThumb為非選中.
已經有了開發者證書及私鑰後,可直接在越獄的手機上調試.
2. 編譯鏈接時, "_OBJC_CLASS_$_xxx", referenced from:可能需要重新建立某個類的文件.
或者:選擇項目名,在detail列表中的target列(顯示為一個又圓圈),把這個文件的復選選中,或者再次選中.以把它加入到這個target裡面來.
3.在sdk4.0及以上使用RegexKitLite報'captureCount' was not declared in this scope錯誤,是在非.m文件中使用了它的原因.
4.there is no sdk with the name or path.
從網上down的開源代碼,結果運行的時候常出現這樣的錯,並且在deployment中沒有iosdeploymenttarget選項.
嘗試 Project/Edit Active Target/ 及 Set Active SDK菜單項,來回切換一下Active Configuration。
5. EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION錯誤,意味著這個app有內存管理的問題,一般是因為訪問野指針對象造成的。
一個和內存相關的崩潰一般很難定位到源代碼,因為這個惡魔可能很早就在程序中做了壞事了。假如一段有問題的代碼混亂了內存結構,這樣產生的蝴蝶效應可能會在之後很久才表現出來,並且總在不同的地方。所以,若有指針類型出現了不可能的變化,很可能就是因為內存結構被野指針調用混亂了。
修復一些警告後,可能就能預防一些內存錯誤。警告在左邊靠近行號的黃色三角指出一個編譯警告,你點擊那個黃色的三角形,xcode可能會彈出一個「Fix-it」的建議。
EXC_BAD_ACCESS崩潰不像SIGABRT,將不會得到很明朗的錯誤消息。然而可以使用一個讓人看到曙光的調試工具:Zombies!死亡對象工具。打開這個項目的scheme editor,選擇Run 選項,然後選擇Diagnosics標簽。勾上Enable Zombie Objects選項。當這個zombie工具被啟用之後,即使這個對象被釋放了,這個對象的內存也不會被清理。所以,那塊內存將會被標記為「長生不死的」。假如你試著之後又去使用這塊內存,這個app能夠意識到你的錯誤操作,並且app將會拋出「messagesent to daellocated instance」錯誤並且終止運行。
在工程中加入NSZombieEnabled 環境變數,並設為啟用,則在 EXC_BAD_ACCESS 發生時,XCode 的 Console 會列印出問題描述中,設置方法:雙擊Executables 下的 可執行模組,在彈出窗口中,Variables to be set in the environment,添加 NSZombieEnabled,並設定為 YES,點擊選中復選框啟用此變數。
可以再加入 MallocStackLogging 來啟用malloc記錄,以獲得更多的提示來幫助定位問題。
在gdb窗口輸入 (格式: shell malloc_history <id> <address>) shellmalloc_history1436 0x5f7fcf0, 也可以在終端中去運行 就要去掉以上的shell 指令 如 malloc_history <id> <address>
應該僅當需要調試內存時,才設置上述環境變數。
注意一點:不應該一直啟用zombie objects。因為這個工具將永遠不會釋放內存,只是簡單標記一下這個內存是不死的,你最終將會在某個時候耗盡所有的內存,因為所有分配過的內存都不會得到重用。因此應該在排查內存相關的錯誤的時候才開啟zombie objects,其他時候應該關閉它。
在xcode4中,To edit environment variables, go to Menu Proct / Edit Scheme…, select the desired configuration (you probably want 'Run') from the left sidebar first and then click on the Arguments tab. Environment variables are configurable there.
6.運行一個IPhone程序時,彈出窗口說「程序運行失敗,預置描述文件已過期」 。 解決辦法是,在Xcode中, window-> Orgnazier -> 你的iphone ->刪除帶有紅*的該程序之前的Profile 。 然後從Xcode運行該程序.
7.真機編譯時報 Code Sign error: The identity doesn't match any valid certificate/private key pair in the default keychain
修改工程和Targets的get infouild 中的code signing identity為空
8.調試列印
CFShow(coreFoundationThingy) will print out a description of coreFoundationThingy to the console. Output looks something like: {value = w:1186.000000 h:687.000000 type = kAXValueCGSizeType}
If NSLog() is printing something out as an NSCFType, try CFShow().
9. 編譯時報 Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1,修改C/C++ Compiler Version為gcc4.2
10.this class is not key value coding-compliant for the key viewController
可能在創建了一個基於view的工程,而後把生成的viewcontroller刪除了,但是在.xib中還有對它的引用,在IB中直接用delete鍵刪除掉它就行了。
11.這台電腦上已經存在一個名為「embedded.mobileprovision」的預置文件,您是否要替換么?
http://blog.sina.com.cn/s/blog_6907b67f0100o2vw.html
12.真機調試時報failed to upload *.app
http://hi..com/%CB%E6%B7%E7_1989/blog/item/9649f49f805f05aec8eaf466.html
http://www.shouyanwang.org/thread-462-1-1.html
13.記的release時,先置delegate為nil。
一個節點不應該保留任何對不屬於它的節點的引用。
14.模擬器
將xcode升級到4.3.1以後發現,ipad的模擬器,沒有Home鍵了。Command+Shift+H就可以實現類似點擊Home鍵的效果了。
❹ 如何使用xcodebuild在命令行編譯iOS工程
、准備工作 1、jenkins環境。搭建jenkins環境可以參考jenkins平台搭建和配置一節。需要注意的是,雖然涉及iOS開發,但是jenkins平台卻不必搭建在mac機器上,只要在jenkins上添加mac節點就可以了。 2、iOS開發環境。iOS開發環境主要是指Xcode開發環境,Xcode是免費的,只要在蘋果應用商店裡下載一個就可以了。當然,還有重要的一點兒---開發者證書,現在個人也已經有免費的證書了,沒有證書的話,只能打模擬器用的包了。 3、git項目。強烈建議把代碼放在git上,這樣便於團隊開發。當然,不放git上也可以。 4、jenkins Xcode持續集成插件。常用的插件Xcode integration,這個插件能夠快速的幫助我們進行Xcode打包配置,當然,只用純shell腳本也是可以的。 在jenkins上打包之前,我們最好手工測試一下可以打包成功,首先用Xcode圖形界面進行測試,然後用命令行測試,如果都能打包成功就可以掛在jenkins上運行了,畢竟jenkins的原理也是通過執行一系列命令來完成的。 三、jenkins配置 1、創建一個任務,創建任務的時候最好選自由風格的軟體項目,這樣配置起來比較方便,如果有需要,也可以選擇其他的風格。 2、描述
❺ 蘋果ios系統用哪種語言編譯的!
如果你說的是寫一個操作系統,那麼一般是用C和匯編語言實現的。
你如果問IOS系統上編譯程序,那麼一般是用Objective-C,它的開發環境是Xcode
❻ 有辦法用shell命令 執行編譯ios程序嗎
自動編譯時,有時候需要改動它的發布版本號。
那麼怎麼樣使用shell script去改呢
或者自動在原來基礎上加1呢?
如下的shell script可以實現:
#!/bin/sh
# mPOS.sh
# mPOS
#
# Created by zhou shadow on 7/4/13.
# Copyright (c) 2013 zhou shadow. All rights reserved.
#INFOPLIST_FILE="/mPOS-Info.plist"
buildPlist=${INFOPLIST_FILE}
#newVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$buildPlist" | /usr/bin/perl -pe 's/(\d+\.\d+\.)(\d+)/$1.($2+1)/eg'`
newVersion="2.1.5"
#echo $newVersion;
/usr/libexec/PListBuddy -c "Set :CFBundleVersion $newVersion" "$buildPlist"
註:newVersion可以取值,也可以手動輸入。當然這樣手動輸入不合現的。
那就想辦法在shell script文件,傳參數。
需要研究一下,如果向shell script傳參數。
搞定。
上傳新的源代碼:
#!/bin/sh
# mPOS.sh
# mPOS
#
# Created by zhou shadow on 7/4/13.
# Copyright (c) 2013 zhou shadow. All rights reserved.
#INFOPLIST_FILE="/mPOS-Info.plist"
newVersion=$1
echo $newVersion
PROJECT_DIR="mPOS"
INFOPLIST_FILE=${PROJECT_DIR}/"mPOS-Info.plist"
buildPlist=${INFOPLIST_FILE}
echo $buildPlist
#newVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$buildPlist" | /usr/bin/perl -pe 's/(\d+\.\d+\.)(\d+)/$1.($2+1)/eg'`
#echo $newVersion;
/usr/libexec/PListBuddy -c "Set :CFBundleVersion $newVersion" "$buildPlist"
$1是輸入參數。
需要找到INFO_PLIST file 去改它的版本號即可。
所以把$1這個參數傳進來,用它來改變Info-Plist的Version值。
❼ ios 編譯framework在哪
那得看項目中是否有用到一些,只有真機才能調用的頭文件等等,比如需要調用攝像頭,相冊等的文件.如果有的話 模擬器上是跑不了的,當然了還有很多是版本也有相關的...希望幫助到你
❽ 有誰知道ipad上怎麼編譯c嗎
本iOSC/iOSC++適用於iPhone 5S、iPad 4。
經測試,本軟體可以編譯 復雜命令行程序、運用了各種Framework的IPA程序、cmake、SDL2庫、運用了SDL2的程序、同時運用SDL2和UIKit的程序、純演算法程序。
1、請先安裝必須軟體包,從這個匯總貼子里下載:http://bbs.weiphone.com/read-htm-tid-5259660.html
如果您覺得不放心,這些軟體包可以在code.google.com各自的項目里下載
(註:安裝方法:)
(先在Cydia中安裝Debian Packager)
(然後在終端模擬器或SSH中進入DEB文件夾以root許可權運行dpkg -i *)
2、然後請用Mac OS安裝Xcode,提取/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/到您的iPhone5s或者iPad4上。
3、在Cydia中安裝class mp和classmp-dyld,這個工具可以在你需要Private Framework的頭文件時,為你反編譯出可用的頭文件。(Private Framework本身是不提供頭文件的)
4、最後把您需要的可執行文件復制到/usr/bin目錄並設置可執行許可權。
在iosc文件夾和iosc++文件夾中,各個版本目錄下文件說明:
main.cpp ——此版本源代碼
a.out,iosc,iosc++ ——此版本二進制可執行文件
config.txt ——此版本最佳配置文件。
註:配置文件一般自動生成。如果
希望iosc/iosc++盡量不提問,可以
把這個config.txt復制
到/var/mobile/.ioscpp/config.txt
5、iosc、iosc++在V1.3之後有一次渺小而重要的更新,運用此更新,用戶第一次有把握在iPhone5S、iPad4設備上從復雜源代碼搭建實用工具,例如cmake、SDL2。此更新保證開發者在iOS 7上可以編譯任何C/C++代碼。因此,自V1.3以後的代碼暫不開源。
6、利用theos可以從源代碼編譯iOS IPA程序。貌似不支持Storyboard。
!注意!如果需要安裝產生的IPA,需要AppSync補丁,因為沒簽名……
(編譯方法:)
(從原帖子下載整個壓縮包,僅提取其中的theos文件夾)
(從本目錄安裝好iosc/iosc++)
(把本目錄中的ipa.nic.zip等nic.zip文件拷貝到theos/templates/iphone/)
(利用Nic建立項目,進入項目文件夾用make編譯)
❾ C++通過什麼編譯器編譯成的靜態庫給ios調用
用的是gcc編譯器或者xcode編譯就可以。
在開發過程中,經常會碰到一些在不同工程中經常用到的部分,把這些部分抽取出來做成一個靜態庫往往是一個比較好的做法。xcode里就有製作靜態庫的模板,相關的製作步驟網上也有很多,但在實際的操作中,還是有不少細節方面需要注意。以下是我碰到的一些問題總結。
1.編譯release版本的庫
在「Manage Schemes」中,將「Build Configuration」的選項改為「Release」即可。如圖:
2.靜態庫中包含category
如果你在靜態庫工程中使用了category,那麼你可能會碰到鏈接問題,解決的辦法就是需要同時在生成靜態庫的工程和使用靜態庫的工程中使用「-all_load」編譯選項,即在對應target的"Build Settings"中的「Other Linker Flags」選項添加「-all_load」。注意:使用靜態庫的工程中是一定要加該編譯選項的!!至於生成靜態庫的工程中加不加沒有試過,不過建議還是加上該編譯選項。
3.靜態庫支持的SDK版本
為了使自己的靜態庫盡可能多的支持IOS的系統版本,應該在"IOS Deployment Target"這個選項中選擇自己所需的IOS版本。設置如下圖,這個是我的靜態庫工程中的配置,紅框框起來的是我修改過的選項。
4.自動拷貝頭文件
在工程對應的target的「Build Phases」下添加「Copy Headers」的選項。該選項默認是沒有的,添加方法是點擊下方的「Add Build Phase」按鈕後選擇後即可添加。該選項下有3個子選項,分別是Public,Private,Project。通過點擊下方的加號,可以將工程中的頭文件添加到「Project」中,在其中的對應頭文件點擊右鍵,選擇「Move to Public Group」,當頭文件移到「Pulic」後,編譯工程以後,在工程編譯後.a文件所在的路徑下,會同時出現一個"usr/local/include"的文件夾,其中的頭文件就是public group中的頭文件。這時只需將.a文件和這個路徑下的頭文件拷貝到所需工程文件即可。
轉載
❿ iOS 編譯錯誤
重復定義了啊. _OBJC_METACLASS_ 看看這個.