欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

ios開發(fā)sdk,IOS開發(fā)工程招聘

iOS開發(fā)之SDK國際化

對SDK內(nèi)部text進(jìn)行國際化處理

成都創(chuàng)新互聯(lián)公司企業(yè)建站,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準(zhǔn)市場調(diào)研,為客戶提供的解決方案。

在控制器上顯示一段文字,底下有三個(gè)按鈕,每一個(gè)按鈕點(diǎn)擊之后切換不同的語種,分英文、簡體中文和繁體中文三種。

注意:

創(chuàng)建靜態(tài)庫可以參考: iOS開發(fā)庫之(二):靜態(tài)庫Framework的創(chuàng)建

創(chuàng)建Bundle可以參考: iOS之Bundle的創(chuàng)建與使用

點(diǎn)擊剛剛創(chuàng)建的Localizable.strings文件,點(diǎn)擊以下紅框:

默認(rèn)只支持英文的:

選擇需要支持的語言,比如說Chinese(Simlified)/Chinese(Traditional):

本處只需要支持三種:英文、簡體中文、繁體中文,那配置結(jié)果如下圖:

以上屬于Bundle里面的設(shè)置內(nèi)容,這個(gè)國際化的內(nèi)容就設(shè)置完了,接下來是如何顯示不同的內(nèi)容,先編譯一下Bundle,另外每次改變Bundle都需要重新單獨(dú)編譯~

注意:其他的聯(lián)調(diào)的我就不說了,另外還有Alert的那個(gè)類我也不說了,大家更詳細(xì)的可以看DEMO, DEMO傳送門

以下附上三張效果圖:

附帶其他的國際化:

3分鐘實(shí)現(xiàn)iOS語言本地化/國際化(圖文詳解)

以上?。?!

iOS SDK開發(fā)中的情形

iOS SDK開發(fā)就是為某一個(gè)應(yīng)用場景、或領(lǐng)域、或需求,提供一個(gè)已實(shí)現(xiàn)的、封裝好的、可供直接使用的模塊。

其主要由兩部分組成:用來為類型或常量聲明的頭文件列表、具體實(shí)現(xiàn)的二進(jìn)制文件。

所以SDK開發(fā)中的主要問題點(diǎn)集中在:

1. 頭文件是否能被使用的工程索引到

2. 二進(jìn)制文件是否能被使用的工程搜索到

本篇文章不寫制作SDK的具體步驟,僅僅討論制作SDK時(shí)的一些情形。

SDK開發(fā)中關(guān)于頭文件設(shè)置:

凡是提供給外界使用的類、結(jié)構(gòu)體、枚舉、常量等,定義它們的頭文件必須要在工程的Build Phases-Headers-public下面。并且這些頭文件都需要包含在與SDK工程同名的頭文件中(這條不是必須,只是這么做會(huì)顯得更加規(guī)范。別人使用SDK的時(shí)候,只需要引入SDK同名的頭文件即可)

設(shè)置庫文件生成動(dòng)態(tài)的還是靜態(tài)的:

Project Name-Target Name-Build Settings-搜索框搜“Mach”-修改“Mach-O Type”為動(dòng)態(tài)或靜態(tài),則相應(yīng)可生成動(dòng)態(tài)或靜態(tài)的庫文件。

先解釋說明以下圖片中出現(xiàn)的工程名字:

SDKDemo :制作的向外提供的SDK庫文件(與SDK工程名同名)

SDKApp :引用SDK庫文件(本文指的是SDKDemo)的App工程

SDKStatic :新建工程時(shí),選擇iOS-Framework Library-Cocoa Touch Static Library. 用來生成.a文件的工程

SDKFramework : ?是個(gè)Framework庫文件(可能是動(dòng)態(tài)的,也可能是靜態(tài)的),用于模擬被SDK依賴的.framework文件

下面分幾種情況來討論SDK開發(fā)的注意事項(xiàng):

1. 生成動(dòng)態(tài)SDK庫文件。

創(chuàng)建工程的時(shí)候,根據(jù)默認(rèn)配置編譯是生成動(dòng)態(tài)庫的。

App工程中引入動(dòng)態(tài)庫的時(shí)候,需要在

App工程:Project Name-Target Name-General-Embedded Binaries下添加引入的動(dòng)態(tài)庫。否則運(yùn)行時(shí)會(huì)報(bào)如下類型錯(cuò)誤:

嵌入動(dòng)態(tài)庫編譯后,生成的App文件中會(huì)多一個(gè)Frameworks目錄(可右鍵.App文件查看包內(nèi)容),里面全是Embedded Binaries下添加的動(dòng)態(tài)庫

2. 打包為靜態(tài)庫

SDK工程:Project Name-Target Name-Build Settings-搜索框搜“Mach”-修改“Mach-O Type”為靜態(tài)庫

App工程引入靜態(tài)庫很簡單,直接引入就行,不需要額外配置:

tips:

合并真機(jī)與模擬器版本時(shí)的命令格式為:

lipo -create?模擬器版本的路徑?真機(jī)版本的路徑 -output 合并后的版本存放路徑

1. 合并時(shí)lipo -create接收的模擬器版本和真機(jī)版本兩個(gè)參數(shù)的前后順序沒有關(guān)系,合并后的版本通過命令查看架構(gòu)信息顯示結(jié)果是完全一致的。模擬器架構(gòu)信息顯示在前,真機(jī)架構(gòu)信息在后。

2. 合并后的版本無論替換真機(jī)版本的Framework中的目標(biāo)文件還是模擬器版本的Framework中的目標(biāo)文件,App工程中引入被替換的Framework后在真機(jī)和模擬器上都能跑起來

首先創(chuàng)建SDKStatic工程,生成一個(gè).a文件。

該工程只是簡單繼承了UIButton,并重寫了initWithFrame方法。為每一個(gè)MyButton對象默認(rèn)生成標(biāo)題和背景色:

生成的.a文件如下,可以看到里面包含了MyButton.o文件:

在SDK工程中引入.a文件。下面分兩種情況來看生成的SDK庫文件:

1. SDK庫文件做成動(dòng)態(tài)庫(設(shè)置方法看開頭部分)

.a文件內(nèi)容被整合進(jìn)了SDK動(dòng)態(tài)庫文件中,引入App工程中時(shí),只需要引入SDK動(dòng)態(tài)庫就可以了

2. SDK庫文件做成靜態(tài)庫(設(shè)置方法看開頭部分)

包中的信息:

.a文件內(nèi)容同樣被整合進(jìn)了SDK靜態(tài)庫文件中,這個(gè)更好理解。引入App工程中時(shí),只需要引入SDK靜態(tài)庫就可以了

總結(jié)下:

制作SDK庫時(shí),如果有依賴的.a文件,則最終生成的SDK庫文件會(huì)合并.a文件的內(nèi)容,而不論SDK庫文件是動(dòng)態(tài)還是靜態(tài)的。

下面的SDKFramework是個(gè)Framework庫文件(可能是動(dòng)態(tài)的,也可能是靜態(tài)的)

SDKFramework工程添加的內(nèi)容和SDKStatic工程是一樣的。也是自定義MyButton,默認(rèn)生成標(biāo)題和背景色(拷貝文件到工程):

SDKDemo工程自定義了MyView,默認(rèn)生成的MyView對象添加了一個(gè)MyButton按鈕和背景色:

1. 如果.framework文件是動(dòng)態(tài)庫

a. SDK打包為靜態(tài)庫,如下:

靜態(tài)SDK包和動(dòng)態(tài)SDKFramework.framework文件是彼此獨(dú)立的。引入靜態(tài)SDK包時(shí),必須也導(dǎo)入SDKFramework.framework,否則編譯不過,因?yàn)殪o態(tài)包有引入動(dòng)態(tài)庫中的符號(hào)。

b. SDK打包為動(dòng)態(tài)庫,如下:

兩者還是彼此獨(dú)立的。動(dòng)態(tài)SDK包中會(huì)記錄依賴的動(dòng)態(tài).framework rpath,App運(yùn)行時(shí),dyld會(huì)根據(jù)這個(gè)信息去加載對應(yīng)的.framework依賴文件。如果找不到App將會(huì)在啟動(dòng)時(shí)奔潰...

2. 如果.framework文件是靜態(tài)庫

a. 首先SDK打包為動(dòng)態(tài)庫看看:

經(jīng)實(shí)踐,依賴的靜態(tài)庫會(huì)被整合進(jìn)動(dòng)態(tài)SDK包自身中。App中引入時(shí),只需要導(dǎo)入SDK包就可以。我們在SDKApp中導(dǎo)入SDKDemo,運(yùn)行可以看到如下效果:

b. 再看看SDK打包為靜態(tài)庫:

根據(jù)上面截圖中信息,App中導(dǎo)入SDK包時(shí),也必須導(dǎo)入依賴的.framework了。否則編譯時(shí)將會(huì)出現(xiàn)如下圖所示找不到符號(hào)的錯(cuò)誤:

追加導(dǎo)入依賴的.framework,再次編譯運(yùn)行。OK?。?!

總結(jié):

1. 依賴的.framework為動(dòng)態(tài)庫

制作的SDK庫文件不論動(dòng)態(tài)還是靜態(tài)的。和依賴的.framework文件本身是彼此獨(dú)立的,不會(huì)發(fā)生符號(hào)整合的現(xiàn)象

2.?依賴的.framework為靜態(tài)庫

如果制作的SDK庫文件是動(dòng)態(tài)的,則依賴的.framework靜態(tài)庫內(nèi)容會(huì)被整合進(jìn)SDK庫文件中

如果制作的SDK庫文件是靜態(tài)的,則彼此是獨(dú)立的

這里又得分幾種情況討論:

1. Podfile中不使用use_frameworks! ?pods庫生成的是.a文件

a. 如果SDK制作成靜態(tài)庫:

? SDK靜態(tài)庫不會(huì)整合Pods里三方庫中的符號(hào),最終導(dǎo)入App工程時(shí),需要SDK靜態(tài)庫、Pods中的三方庫文件一起導(dǎo)入

b. 如果SDK制作成動(dòng)態(tài)庫:

? Pods庫中的符號(hào)會(huì)被合并整合進(jìn)入SDK庫中,導(dǎo)入工程時(shí),只需要導(dǎo)入SDK包就OK了

2. Podfile中使用use_frameworks! ?pods庫生成的是.framework文件。其中Pods_工程名.framework文件是個(gè)靜態(tài)庫,管理的第三方庫生成的是framework動(dòng)態(tài)庫

a.如果SDK制作成動(dòng)態(tài)庫:

SDK中會(huì)包含引入三方庫的rpath,App中引入SDK包時(shí),也必須引入三方庫,否則dyld加載不了指定庫導(dǎo)致App啟動(dòng)時(shí)奔潰

b. 如果SDK制作成靜態(tài)庫:

靜態(tài)SDK中會(huì)忽略Pods中的庫中定義的符號(hào)(也即彼此是獨(dú)立的)。如果靜態(tài)SDK中引用了動(dòng)態(tài)pods庫中定義的符號(hào),只要在App工程中也導(dǎo)入pods中動(dòng)態(tài)庫,并在embeded binaries中添加。一樣是可以編譯運(yùn)行的。

其實(shí)怎么編譯,SDK工程中是個(gè)什么情形都不重要。重要的是要明白庫文件的本質(zhì),及它是如何發(fā)揮作用的?在什么階段發(fā)揮作用?然后學(xué)會(huì)查看編譯運(yùn)行時(shí)的報(bào)錯(cuò)信息,并配合使用otool、nm、lipo、ar、file等這些命令去查看庫文件的一些信息,最終追蹤定位到問題。

原諒我最后都沒怎么貼圖了,因?yàn)榱鞒潭己颓懊娌畈欢?。我也寫的手累了。如果你還有什么疑惑可以在下面評論,我會(huì)盡量及時(shí)回復(fù)。

iOS開發(fā):SDK依賴第三方庫及其踩過的坑

公司開發(fā)的SDK,是集成了各個(gè)平臺(tái)的商品,包括購買、分享、提現(xiàn)等功能,為了加快進(jìn)度,我是使用了一些第三方。但是有些需求,比如分享到微信朋友圈或者還有,必須用到微信的SDK??紤]到后期的維護(hù)成本和集成,筆者采用了cocoapods管理第三方庫。

筆者有片文章專門介紹SDK的開發(fā)步驟的,大家可以參考,我這里就直接進(jìn)入主題了。

首先,你創(chuàng)建一個(gè)靜態(tài)的framework工程MyTestSDK,把這個(gè)工程集成cocpapods,至于如何集成cocpapods,網(wǎng)上有教程,自己搜索。這個(gè)時(shí)候把你項(xiàng)目中所用的第三方庫添加到Podfile文件中,然后 pod install。這個(gè)時(shí)候你command + B 編譯運(yùn)行,如果你的第三方庫中還有Bundle資源,那么編譯后,第三方庫的bundle資源會(huì)被編譯,一起放到Products文件下的framework文件中,右鍵Show in Finder就會(huì)看到。如下圖所示的MBProgressHUD文件夾,里面都是MBProgressHUD第三方的資源文件。

然后把你的項(xiàng)目放入SDK工程中,編譯運(yùn)行一下,看看有沒有錯(cuò)誤。之所以先把SDK工程選用cocoapods管理,就是怕你的項(xiàng)目放入SDK中運(yùn)行報(bào)錯(cuò)。沒有任何問題,直接編譯即可。

由于SDK中的第三方是通過cocoapods管理的,所以接入者的項(xiàng)目也要用cocoapods管理。

1:把SDK工程中,Products文件夾下的framework文件copy到項(xiàng)目中,最好項(xiàng)目中建立一個(gè)文件夾,專門放SDK和bundle。我是放到了一個(gè)文件夾中,方便分類尋找。如下圖所示:

2:打開終端,cd到SDK所在的文件夾下,執(zhí)行如下命令,回車,創(chuàng)建spec文件。

其中,MyTestSDK是你的SDK名稱。

創(chuàng)建出來的spec文件,是個(gè)很長的文件,但是大部分都是注釋的,我這里只提取了有用的信息展示出來:

然后把spec中依賴的第三方庫,逐個(gè)加入到項(xiàng)目中的Podfie文件中。然后 終端打開,cd到自己的項(xiàng)目中,pod install即可。

本人親自測試過的,No Problem。當(dāng)初感覺SDK如果依賴了第三方庫,接入的項(xiàng)目中也有同樣的第三方庫,會(huì)不會(huì)沖突啊,感覺好難搞啊。事實(shí)證明,通過spec進(jìn)行依賴,可以很好的解決這個(gè)問題,也就沒有那么麻煩了。

首次開發(fā)SDK還是遇到了很多問題,運(yùn)行出現(xiàn)很多bug,但是最后還是一一解決了,就是沒有記錄下bug和解決發(fā)的方法。

1;path路徑不對,就會(huì)報(bào)錯(cuò) ,如下

是因?yàn)槲野崖窂綄懗闪耍?/p>

其實(shí)正確的寫法是:把“/”放在前面

2:SDK中有第三方,但是項(xiàng)目中的Podfile里面沒有這個(gè)第三方,報(bào)錯(cuò)如下所示:

解決辦法是就是在項(xiàng)目中的 Podfile里面加入缺失的第三方庫,重新 pod install。

文章標(biāo)題:ios開發(fā)sdk,IOS開發(fā)工程招聘
本文網(wǎng)址:http://aaarwkj.com/article30/dssjhpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈、營銷型網(wǎng)站建設(shè)商城網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
91口爆吞精国产对白| 色偷偷亚洲精品一区二区| 日韩欧美国产精品一区| 91超碰这里只有精品国产| 美女诱惑福利视频久久久| 日韩三级一区二区三区| 日韩精品少妇一区二区| 国产精品欧美日韩精品| 欧美精品色精品免费观看| 中文精品字幕人妻熟女小妇| 国产精品三级av在线播放| 美女少妇性高潮的视频| 后入蜜桃臀美女在线观看| 扒开少妇毛茸茸的大荫萍蒂| 搡老熟女老女人一区二区| 日本美女阴部毛茸茸视频| 中文字幕一区中出爽亚洲| 欧美生活一区二区三区| 成年人黄色免费网站在线观看| 曰本真人性做爰视频免费| 欧美亚洲另类在线第一页| 亚洲av乱码久久精品蜜桃| 欧美午夜视频一区二区福利| 午夜福利视频在线一区| 青青草视频在线针对华人| 亚洲一区二区中文字幕av| 欧美黄色日本一区二区| 农村人妻一区二区三区视频| 日韩精品高清中文字幕| 在线播放亚洲一区二区三区| 韩国三级福利在线观看| 午夜毛片免费在线播放| 国内自拍一区二区三区| 日本a亚洲中文字幕永远| 成人黄色18免费网站| 肉肉开房天天操夜夜操| 99久久精品国产国产毛片| 男女裸体做爰一进一出视频| 日本一区二区中文字幕视频| 日本人妻中文字幕在线一区| 97在线观看视频在线观看|