導航:首頁 > 程序命令 > ios命令行編譯

ios命令行編譯

發布時間:2022-05-13 01:25:43

A. 如何使用xcodebuild在命令編譯iOS工程

第一步,打開Xcode,選擇左側得 OSX 下的 Application,點擊 Commond Line Tool,按下 next 鍵;

B. XCode是怎麼把生成的app發布到ios設備上的

基礎:ipa實際上就是一個zip壓縮包!
首先,xcode工程其實是可以用命令行來build的,這樣就可以用命令行編譯出.app的文件,然後就可以打成ipa包。整個流程做到自動化後,就可以方便的做每日的daily build,便於產品和測試同事跟進進度,隨時獲得最新版本的ipa文件。
xcode工程的命令行Build命令是 xcodebuild,用 --help 可以看到一些有用的參數。常用的是用xcodebuild -configuration Release 指定用Release方式編譯。

C. Xcode4.2編譯Mac命令行程序時提示Xcode cannot run using the selected destination.

真巧,我昨天也正好遇到了相同的問題
我是這樣解決的:
到 build setting 裡面把architectures改了,有3種不同的architectures,總有一種可以run,多試一試

build setting 記得老版本在target下,我用的xcode5在project下,你可以去找找

D. 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鍵的效果了。

E. ios sirikit 可以在oc下集成嗎

下載 Xcode 8,配置 iOS 10 和 Swift 3
(可選)通過命令行編譯
除非你想使用命令行編譯,使用 Swift 3.0 的工具鏈並不需要對項目做任何改變。如果你想的話,打開 Xcode-beta,然後從頂部菜單欄中選擇 Xcode > Preferences,接著選擇 Location,在頁面的底部,你會看到「Command Line Tool」這行設置,請在這里選擇 Xcode 8.0。
現在,在 Terminal 使用命令行找到工程所在的文件夾,調用 xcodebuild 命令就可以編譯工程了。
(可選)移植現有的 Swift 2 應用
如果你想對一個已使用 Swift 2.0 開發的工程引入 Siri 功能,需要點擊工程,選擇 Build Settings,在 Swift Compiler - Version 下面,找到 Use Legacy Swift Language Version 選項,設置成 No。這會造成編譯器報錯,然後你可以根據這些報錯信息來修改代碼,推薦你使用這個設置來更新代碼,以適應 Swift 不斷進化的語義。
開始使用 SiriKit
首先,在你的 App(或者是新建一個單視圖的 Swift 模板工程),點擊頂部的工程,然後點擊左側下方的 + 按鈕,在這里(譯者註:我在這里添加了一張圖片,能夠說的更明白)點擊。

彈出的窗口中,選擇 iOS > Application Extension,接著選擇 Intents Extension。

這樣就給工程添加了一個新的 intent,用於監聽 Siri 的命令。其中的 Proct Name 應該和你的工程文件名字相似,比如,你的 App 名為 MusicMatcher,你可以把這個 intent 的名字命名為 MusicMatcherSiriIntent。一定要選中 Include UI Extension 選項,我們之後會用到,這也是添加額外擴展的最簡單的方法。

我剛剛創建的兩個新 target 可以從項目的文件層級上找到。找到 Intent 文件夾下的 IntentHandler.swift 文件,看一下這裡面的樣本代碼。默認會提供一些示例代碼,允許用戶說一下諸如「用 MusicMatcher 開始鍛煉」的命令,MusicMatcher 是 App 的名字。

像這樣運行示例應用
這個時候最好編譯一下代碼,然後在 iOS 真機上試一下命令。繼續,編譯應用的 target,從 Scheme 下拉菜單里選擇 MusicMatcher,然後選擇真機,點擊 Run。

你看你會看到一個空白的應用出現,你使用的擴展這時會在後台載入到設備的系統文件里,現在點擊 Stop 按鈕來關閉應用。
接下來,找到你的 scheme,選擇 Intent target,點擊 Run。

這時會出現一個彈出框,問你需要連接哪個應用,選擇你剛剛運行的應用:MusicMatcher。這會讓真機上再次出現這個應用(還是一個空白的應用),不過這次調試台(debugger)中會出現連接的 Intent 擴展。

現在點擊 home 按鈕回到首屏,或者應用可能自己就退出了,因為你正在運行的是 Intent,不是應用本身(這不是崩潰!!!)。
啟用擴展
擴展都已安裝就位了,但是作為一個 iOS 用戶,仍然需要進行 Siri 設置才能使用擴展。點擊測試設備里的 Settings,選擇 Siri 菜單,你會看到 MusicMatcher 出現在清單里,激活允許使用 Siri。
測試我們第一個 Siri 命令
嘗試一下 Siri 命令,長按 Home 鍵或者說出「Hey Siri」來激活 Siri(當然需要你已經激活「Hey Siri」功能)。
試一下命令,比如「使用 MusicMatcher 開始鍛煉」。
「對不起,你需要在應用里繼續。」
如果你像我一樣遇到了這樣的錯誤信息:「Sorry, you』ll need to continue in the app.」(不知道什麼原因,偶爾會出現這么一個問題,什麼鬼?)
在控制台中你可能會看到類似的信息:

[objc] view plain
dyld: Library not loaded: @rpath/libswiftCoreLocation.dylib
Referenced from: /private/var/containers/Bundle/Application/CC815FA3-EB04-4322-B2BB-8E3F960681A0/LockScreenWidgets.app/PlugIns/JQIntentWithUI.appex/JQIntentWithUI
Reason: image not found
Program ended with exit code: 1

再次選擇工程根目錄,選擇 MusicMatcher target。在 General 底下找到 Linked Frameworks and Libraries。點擊 + 按鈕,添加 CoreLocation.framework。現在可以再次編譯在真機上運行,接著照著上面相同的步驟再次編譯運行 intent target。我們還需要在工程里添加 CoreLocation 庫,確保能添加到我們編譯過的 Swift 工程中。
最後,從手機桌面激活 Siri。
「Hey Siri!」
「Start my workout using MusicMatcher(使用 MusicMatcher 開始鍛煉)」
Siri 這時候應該會回應:「OK. exercise started on MusicMatcher(OK,開始用 MusicMatcher 鍛煉身體)」,然後會出現一個 UI 界面寫著「Workout Started(鍛煉開始)」。

它是如何工作的呢?
模板中的 IntentHandler 類使用了一長串的協議:
首先最主要的就是 INExtension,允許我們一開始就把類當作一個 intent extension 來用。剩下的協議都是 intent handler 類型,在類里能夠回調:

[objc] view plain
INStartWorkoutIntentHandling
INPauseWorkoutIntentHandling
INResumeWorkoutIntentHandling
INCancelWorkoutIntentHandling
INEndWorkoutIntentHandling
按住 Command 鍵點擊這些協議的名字,會看到蘋果提供的文檔:第一個就是我們剛剛測試過的,INStartWorkoutIntentHandling。
[objc] view plain
/*!
@brief Protocol to declare support for handling an INStartWorkoutIntent
@abstract By implementing this protocol, a class can provide logic for resolving, confirming and handling the intent.
@discussion The minimum requirement for an implementing class is that it should be able to handle the intent. The resolution and confirmation methods are optional. The handling method is always called last, after resolving and confirming the intent.
*/

這會根據用戶使用語言的不同而不同,不過最終的目的都是開始一次鍛煉。INStartWorkoutIntentHandling 協議調用的幾個方法都在示例代碼里實現了。如果你想創建一個鍛煉應用,你可以自行了解其他的內容。不過在這篇教程的剩餘部分,我會添加一個新的 intent handler,來處理發送消息。換句話說,這協議告訴 SiriKit 我們准備處理英文句子「Start my workout with AppName Here.」
添加一個新的消息 Intent
確認應用可以完美運行後,讓我們繼續,添加一個新的 intent 類型,用於發送消息,這里的文檔說明了下列信息:

[objc] view plain
Send a message
Handler:INSendMessageIntentHandling protocol
Intent:INSendMessageIntent
Response:INSendMessageIntentResponse

在類里添加 INSendMessageIntentHandling 協議。首先要明確,我們把它添加到類協議清單里,也就是在 IntentHandler.swift 文件里。由於實際上我不想使用這些 intent,所以我會刪除它們,只留下這一個:

[objc] view plain
class IntentHandler: INExtension, INSendMessageIntentHandling {
...

另外,如果你需要核對具體是哪些方法,只需要按住 Command 鍵然後滑鼠點擊 INSendMessageIntentHandling,然後看一下哪些方法前面沒有 optional關鍵詞即可。如果這時候編譯,是不會通過編譯的,因為我們還需要實現一些遵守 INSendMessageIntentHandling 協議所必需的方法。

F. IOS APP開發常用的幾個命令行工具

xcodebuild

蘋果官方提供的的Xcode項目和工作空間(workspace)編譯工具,也就是xcode自帶的非圖形化命令行編譯工具。詳細的使用方法在命令行執行:
man xcodebuild

系統會告訴你所有的用法,這里就不詳細介紹了。

xcpretty

xcpretty is a fast and flexible formatter for xcodebuild

其實就是用來格式化(美化)xcodebuild命令行工具輸出日誌的一個小工具,我們新建一個Single View的項目xcodebuilddemo,然後在命令行執行:
xcodebuild

輸出日誌如下圖所示:

xcodebuild_snapshot.png

四個字「慘不忍睹」。

OK, xcpretty表現一下吧,執行如下命令:
xcodebuild | xcpretty

輸出日誌如下圖所示:

xcpretty_snapshot.png

OK,不用過多解釋了,不過執行上面的命令時先執行下面的命令安裝xcpretty:
gem install xcpretty

更多使用方法見項目首頁:https://github.com/supermarin/xcpretty

xctool

xctool是facebook推出的用於替換xcodebuild的更易於測試ios和mac應用程序的命令行工具,特別適用於ios app的持續集成。

注意,剛開始xctool不僅用於做單元測試,包括編譯、打包等功能,但現在編譯、打包等功能被放到facebook的另一個項目xcbuild中了,所以xctool目前主要是用於單元測試。

xctool的官方網址:https://github.com/facebook/xctool

安裝:
brew install xctool

如果您的mac機器上連brew都沒裝,那你真落伍了,自己去研究吧。

使用:
xctool -project xcodebuilddemo.xcodeproj -scheme xcodebuilddemo test -test-sdk iphonesimulator9.3

更詳細的使用方法自己到官方網站研究吧。可以指定只測試某個用例,某個方法哦。

xcbuild

xcbuild是一個兼容Xcode的編譯工具,它能使編譯更快快速,更友好的編譯過程日誌,可以運行在多個平台(主要指OS X和Linux)。

詳細的使用方法可見官方網站:https://github.com/facebook/xcbuild

目前該項目還比較新,應該是剛從xctool中剝離出來,只能從源碼安裝。

自己去試一試吧。

G. 有誰知道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編譯)

H. xcode命令行編譯證書問題,xcode 編譯可以成功

今天我也碰到這個問題了.改下這三個地方基本就能搞定.改一個地方就行的有過,改兩個地方才行的也有過.根據自己的實際情況去修改.

I. 蘋果MAC系統怎麼編譯C語言

在 Mac OS X 下學習C語言使用 Xcode。

在 Xcode 上運行C語言程序需要先創建工程,再在工程中添加源代碼。

1、 打開 Xcode,選擇「Create a new Xcode project」創建一個新工程,如下圖所示:

左側是工程目錄,主要包含了工程所用到的文件和資源。單擊「main.c」,即可進入代碼編輯模
式,這里 Xcode 已經為我們創建好了一個「Hello World」小程序。點擊上方的「運行」按鈕,即
可在右下角的選項卡中看到輸出結果。

拓展資料

Xcode是由Apple官方開發的IDE,支持C、C 、 Objective-C、Swift等,可以用來開發 Mac OS X 和 iOS上的應用程序。Xcode最初使用GCC作為 編譯器,後來由於GCC的不配合,改用LLVM。

J. xcode 如何編譯

Xcode 常用編譯選項設置
在xcconfig文件中指定即可。
用標准庫連接
LINK_WITH_STANDARD_LIBRARIES = YES如果激活此設置,那麼編譯器在鏈接過程中會自動使用通過標准庫的鏈接器。
Info.plist 輸出編碼
INFOPLIST_OUTPUT_FORMAT = binary指定Info.plist文件的輸出編碼(默認情況下,輸出與輸入的編碼保持不變),這個輸出編碼能指定「binary」或者「XML」。
生 成調試符號GCC_GENERATE_DEBUGGING_SYMBOLS = NO當啟用的時候,詳情等級能夠通過build的』Level of Debug Symbols』設置去控制。 隱藏內聯方法GCC_INLINES_ARE_PRIVATE_EXTERN = YES Objective-C GCGCC_ENABLE_OBJC_GC = Unsupported 優化級別GCC_OPTIMIZATION_LEVEL = Fastest, Smallest [-OS]
None: 不做優化使用這個設置,編譯器的目標是減少編譯成本,使調試產生預期的結果。
Fast:優化編譯將為大函數佔用更多的時間和內存使用這個設置,編譯器將嘗試減少代碼的大小和執行時間,不進行任何優化,需要大量編譯時間。
Faster:編譯器執行幾乎所有支持的優化,它不考慮空間和速度之間的平衡與「Fast」設置相比,該設置會增加編譯時間和生成代碼的性能。編譯器不進行循環展開、內聯函數和寄存器變數的重命名。
Fastest:開啟「Faster」支持的所有的優化,同時也開啟內聯函數和寄存器變數的重命名選項
Fastest,smallest:優化代碼大小這個設置啟用「Faster」所有的優化,一般不增加代碼大小,它還執行旨在減小代碼大小的進一步優化。
C 語言方言GCC_C_LANGUAGE_STANDARD = C89 警告 檢查Switch語句GCC_WARN_CHECK_SWITCH_STATEMENTS = YES 隱藏局部變數GCC_WARN_SHADOW = YES 隱式轉換成32位的類型GCC_WARN_64_TO_32_BIT_CONVERSION = YES 未完成的Objective-C協議GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES 抑制所有的警告GCC_WARN_INHIBIT_ALL_WARNINGS = NO 初始化時沒有完整的括弧GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES例子(a沒有完全的括弧,b有):
int a[ 2 ][ 2 ] = { 0, 1, 2, 3 };
int b[ 2 ][ 2 ] = { { 0, 1 }, { 2, 3 } };
不匹配的返回類型
GCC_WARN_ABOUT_RETURN_TYPE = YES 缺少括弧GCC_WARN_MISSING_PARENTHESES = YES例子:
{
if( a )
if( b )
foo();
else
bar();
}
{
if( a )
{
if( b )
foo();
else
bar();
}
}
在結構體初始化時缺少欄位
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES
缺 少函數原型GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES 在文件結尾缺少新行GCC_WARN_ABOUT_MISSING_NEWLINE = YES 選擇了多個定義的類型(@Selector)GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = NO 嚴格的Selector匹配GCC_WARN_STRICT_SELECTOR_MATCH = YES 把缺少函數原型當作錯誤GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES 把所有的警告當作錯誤GCC_TREAT_WARNINGS_AS_ERRORS = YES 未定義的SelectorGCC_WARN_UNDECLARED_SELECTOR = YES 未初始化的自動變數GCC_WARN_UNINITIALIZED_AUTOS = YES 未知的Pragma指令GCC_WARN_UNKNOWN_PRAGMAS = YES 未使用的函數GCC_WARN_UNUSED_FUNCTION = YES 未使用的標簽GCC_WARN_UNUSED_LABEL = YES 未使用的參數GCC_WARN_UNUSED_PARAMETER = YES 未使用的值GCC_WARN_UNUSED_VALUE = YES當一個語句計算的結果顯式的未使用的時候發出警告 未使用的變數GCC_WARN_UNUSED_VARIABLE = YES 警告-所有過時的函數GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES offsetof宏未定義使用的警告GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES
iphone 常用的<app>-info.plist設置
Application requires iPhone environment如 果應用程序不能在ipod touch上運行,設置此項為true;
Application uses Wi-Fi如果應用程序需要wi-fi才能工作,應該將此屬性設置為true。這么做會提示用戶,如果沒有打開wi-fi的話,打開wi-fi。為了節省 電力,iphone會在30分鍾後自動關閉應用程序中的任何wi-fi。設置這一個屬性可以防止這種情況的發生,並且保持連接處於活動狀態
Bundle display name這用於設置應用程序的名稱,它顯示在iphone屏幕的圖標下方。應用程序名稱限制在10-12個字元,如果超出,iphone將縮寫名 稱。
Bundle identifier這個為應用程序在iphone developer program portal web站點上設置的唯一標識符。(就是你安裝證書的時候,需要把這里對應修改)。
Bundle version這個會設置應用程序版本號,每次部署應用程序的一個新版本時,將會增加這個編號,在app store用的。
Icon already includes gloss and bevel effects默認情況下,應用程序被設置了玻璃效果,把這個設置為true可以阻止這么做。
Icon file(這個不用多說了)設置應用程序圖標的。
Main nib file base name應用程序首次啟動時載入的xib文件 這個基本用不到。
Initial interface orientation 確定了應用程序以風景模式還是任務模式啟動
Localizations多語言。應用程序本地化的一列表,期間用逗號隔開,例如 應用程序支持英語 日語,將會適用 English,Japanese. Status bar is initially hidden 設置是否隱藏狀態欄。你懂的。
Status bar style選擇三種不同格式種的一種。
URL types應用程序支持的url標識符的一個數組。
用URL Scheme進行程序跳轉
打開info.plist,添加一項URL types
展開URL types,再展開Item1,將Item1下的URL identifier修改為URL Scheme
展開URL Scheme,將Item1的內容修改為myapp
其他程序可通過myapp://訪問此自定義URL
參考:http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
IOS後台播放音樂
OS後台播放只是在IOS4.0以後的版本支持。
1,設置後台播放會話
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory: error:nil];
2,在info.plist裡面添加
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
靜態庫沒法包含category/分類?
如果你導入一個objc靜態庫,發現很多objc的category 不能調用,可以嘗試在主工程中加入linker選項:
-all_load 加入這個一般就夠了
-ObjC
讓程序最小化再開啟時,從頭開始:
按下 「Home」 鍵以後程序可能並沒有退出而是轉入了後台運行。如果您想讓應用直接退出,最簡單的方法是:在 info-plist 裡面找到 Application does not run in background 一項,勾選即可。
程序退出後任務欄還是有圖標,但是程序原來的所有運行狀態全部丟失,點擊任務欄圖標也不過相當於再次啟動程序;如果允許後台運行,點擊任務欄圖標後會恢復程序中斷時的界面。
本地化字元串:
在infoPlist.strings裡面寫
「string1″=」水果」
代碼裡面寫 myLabel.text = NSLocalizedString(@」string1″, nil);
本地化的Bundle display name:
1)創建一個空文件,取名為InfoPlist.strings
2)對InfoPlist.strings進行本地化(Get Info -> Make Localization),然後設置需要的語言(如中文zh)
3)編輯不同的InfoPlist.strings文件,設置顯示名字
CFBundleDisplayName = 「名字」;
4)(這步不做貌似也可以)編輯Info.plist,添加一個新的屬性Application has localized display name, 設置其類型為boolean,並將其value設置為選中狀態
default圖片的銜接問題:
程序開始後,手動載入default圖片,然後進行過渡效果即可。
遍歷目錄:
NSString *appDocDir = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] relativePath];NSArray *contentOfFolder = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:appDocDir error:NULL];for (NSString *aPath in contentOfFolder) { NSLog(@"apath: %@", aPath); NSString * fullPath = [appDocDir :aPath]; BOOL isDir; if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] && !isDir) { [fileList addObject:aPath]; }}
IB:
不論寫不寫property的retain,由IBOutlet都會為對象加一個retainCount,所以只要連接了,就需要在viewDidUnload與dealloc中release並適當置為nil。
預先在IB裡面載入好的文件(比如圖片),即使釋放了Controller,IB中的文件也不會被釋放,直至內存警告,解決辦法是較大的資源用代碼載入。
UIWebView:
用代碼載入UIWebView的內容,navigationType是UIWebViewNavigationTypeOther
CAAnimation:
一定要記得[self.view.layer removeAllAnimations];因為CAAnimation會retain它的delegate
設備型號識別,可通過審核:
+ (NSString*)getDeviceVersion{ size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = (char*)malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding]; free(machine); return platform;}
輸出:
//@」iPad1,1″
//@」iPad2,1″
//@」i386″
逗號後面數字解釋:(i386是指模擬器)
1-WiFi版
2-GSM/WCDMA 3G版
3-CDMA版
AppleTV(2G) (AppleTV2,1)
iPad (iPad1,1)
iPad2,1 (iPad2,1)Wifi版
iPad2,2 (iPad2,2)GSM3G版
iPad2,3 (iPad2,3)CDMA3G版
iPhone (iPhone1,1)
iPhone3G (iPhone1,2)
iPhone3GS (iPhone2,1)
iPhone4 (iPhone3,1)
iPhone4(vz) (iPhone3,3)iPhone4 CDMA版
iPhone4S (iPhone4,1)
iPodTouch(1G) (iPod1,1)
iPodTouch(2G) (iPod2,1)
iPodTouch(3G) (iPod3,1)
iPodTouch(4G) (iPod4,1)
判斷ipad/iphone
12UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPadUI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
或者
1[[[UIDevice currentDevice] model] isEqualToString:@"iPad"];
判斷設備是否有攝像頭
1[UIImagePickerController isSourceTypeAvailable:];

閱讀全文

與ios命令行編譯相關的資料

熱點內容
牆主鋼筋加密和非加密怎麼看 瀏覽:144
金山區文件夾封套定製 瀏覽:708
soho程序員 瀏覽:672
java位元組截取 瀏覽:525
php提交作業 瀏覽:815
房產還沒解壓可以辦理贈予嗎 瀏覽:224
java毫秒轉分鍾 瀏覽:753
模式識別中文pdf 瀏覽:774
c語言平均數字編譯錯誤 瀏覽:170
單片機算交流 瀏覽:45
php自適應網站 瀏覽:467
2b2t伺服器怎麼獲得許可權 瀏覽:816
c語言javaphp 瀏覽:804
程序員技術不分高低嗎 瀏覽:619
dos不是內部或外部命令 瀏覽:709
PC機與單片機通訊 瀏覽:675
二級加密圖 瀏覽:113
壓縮機異音影響製冷嗎 瀏覽:711
德斯蘭壓縮機 瀏覽:490
程序員太極拳視頻 瀏覽:531