精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解Cocoa資源文件嵌入

移動開發 iOS
Cocoa資源文件嵌入是本文要介紹的內容,軟件開發中,可能需要把用到的資源文件嵌入到二進制執行文件中,來看詳細內容。

Cocoa資源文件嵌入是本文要介紹的內容,主要是倆學習Cocoa/iPhone App/靜態庫 嵌入資源文件 rtb v0.1發布,軟件開發中,可能需要把用到的資源文件嵌入到二進制執行文件中,例如生成單個執行文件、防止機密或版權信息被PE工具查看或修改、嵌入圖片資源到靜態庫中等等。

在Mac OSX Cocoa 或iOS開發中,編譯生成的Product.app是一個APP包,其實就是個文件夾,右鍵Show Package Contents或者去掉,app 擴展后雙擊打開就可以查看包內容,修改包里面的任何資源文件都不會影響程序正常運行,要提交到App Store的程序在修改資源文件后運行下codesign(安裝Xcode時已經裝了這個dev tool)重簽名就可以了:

  1. $ codesign -fvs "Your Identity" path/to/appfile.app 

我之前寫的 ElfCodeSigner 就是基于codesign的。

所以嵌入二進制資源文件也算是一種有效的保護手段。

結合我以前Windows開發中用到的措施,我想到了三種方案:

Base64編碼。

N久前在CSDN上給一個網友提供的方法,當時他的需求是對一些中英文字符串數據的編解碼。我當時給出的Base64方案算是比較簡便而且行之有效的。Base64方法同樣適用于今天要討論的嵌入資源問題。

NSString 和 NSData可以互轉,UIImage也提供了initWithData:的創建方法,所以將image data 進行base64編碼后保存在一個NSString常量中,在用到時進行base64解碼再[UIImage initWithData:]。

此方法在處理很小的數據時比較有用,網上也有比較成熟的NSData+Base64類別類供使用。

PNG等資源的壓縮加密

經過加密處理的PNG圖像用普通看圖軟件查看時只能看到一片透明或空白圖帶點斑點這樣的無效圖,但在程序運行時圖像顯示正常,這個加密方法在j2me、iOS等游戲和應用開發被大量使用。網上現成的加密工具很多,但可以被簡單的逆向還原原圖。

轉換成bytes數組。

大多數資源嵌入都采用這種方案,原理很簡單,把資源文件的每位字符轉換成十六進制bytes[],幾乎所有語言都提供了bytes[]到data的直接轉換。

大多數十六進制編輯器可以將hex結果保存為文件。被解密或修改比較困難,需要知道圖形基本格式、熟練UE等十六進制編輯器、猜測、運氣等。

最近公司項目中需要把一些圖片資源嵌入到靜態庫中,我考慮了下還是用bytes的方法比較好,Cocoa原生支持其不會留下被修改的余地。一些簡單的圖標用CG畫上去。這樣公開出去的庫只有一個.a文件和幾個必要的.h文件。

下午閑著沒事,就操起Xcode在新配的MacBook上寫下了我這第一個跑在Mac OS上的C程序。

Release notes

rtb(Resource To Bytes)是一個命令行小工具,將二進制資源文件轉換為bytes數組,方便在程序中使用嵌入資源。

由于時間倉促,rtb僅在Mac OS SL上測試過,對應應用在Mac OS桌面程序和iOS App中測試過,以后有時間再改成跨平臺的。目前沒發現什么bug。

使用方法:打開Terminal,cd到rtb所在目錄,運行

  1. $ ./rtb image.png  

將生成

  1. unsigned char image_png[] = { ..... };  
  2. unsigned int image_png_len = 16045

變量名稱根據資源文件名而來,數字開頭的會加前綴 "__" ,文件名中非英文和數字的字符轉換為下劃線"_"(使用了isalnum()測試函數),在數組變量名稱添加"_len"后綴作為數組長度變量名稱。

例如"123te的 st5.png"將生成變量名

  1. unsigned char __123te____st5_png[] 和 unsigned int __123te____st5_png_len  

Example

首先執行rtb生成.h文件:

  1. $ ./rtb test.png > test.png.h 

新建一個Window Base的iPhone項目,添加test.png.h文件到項目中,在

  1. - (BOOL)application: didFinishLaunchingWithOptions: 

方法中創建一個UIImage并把它添加到一個ImageView中:

  1. #import "test.png.h"   
  2. //............   
  3.  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions   
  4.  {   
  5.      [self.window makeKeyAndVisible];   
  6.       8     unsigned char *imgBytes = test_png;   
  7.     NSUInteger imgLenght = test_png_len;  
  8.      NSData *imgData = [NSData dataWithBytesNoCopy:imgBytes length:imgLenght freeWhenDone:NO];11     
  9. // UIImage *image = [UIImage imageWithData:imgData];  
  10.     // or  
  11.      UIImage *image = [[UIImage alloc] initWithData:imgData];  
  12.      15     UIImageView *imageView = [[UIImageView alloc] initWithImage:image];  
  13.      imageView.frame = self.window.frame;  
  14.      imageView.contentMode = UIViewContentModeCenter;  
  15.      [self.window addSubview:imageView];  
  16.      [imageView release];  
  17.     [image release];  
  18.      return YES;  
  19.  } 

因為在程序加載時已經將test.png.h中的數組加載到內存中,所以使用NSData的dataWithBytesNoCopy方法即可,不需要再Copy一份,轉換成NSData后也不需要釋放它,所以freeWhenDonw參數值NO.

Code Review

我C語言很爛,就不貼代碼了。注釋、空行加起來80多行,核心功能代碼就是fopen這個資源文件:

  1. if ((fp = fopen(argv[1], "r")) != NULL)  
  2.  
  3. 從文件頭取到(getc(fp))到EOF,fprintf(stdout,"0x%02x",ch):  
  4.  
  5. for (p = 0; (length < 0 || p < length) && (ch = getc(fp)) != EOF; p++)  
  6. {  
  7.     char *c = p ? ",\n  " : "  ";          
  8.     fprintf(fpo, "%s0x%02x", (p % COLS) ? ", " : c, ch);  

Download

已收錄至Cocoa-Utilities: https://github.com/Sundae/Cocoa-Utilities

小結:詳解Cocoa資源文件嵌入的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2013-06-17 17:02:15

Windows PhoWP開發資源文件

2009-08-21 16:13:27

C#讀取資源文件

2011-06-20 14:18:27

Qt 資源 文件

2012-02-03 09:55:06

Delphi

2013-07-30 12:30:57

Windows PhoWindows Pho

2009-06-02 14:21:04

eclipse資源文件eclipse中文

2009-08-28 16:08:28

C#利用資源文件

2009-12-28 11:23:38

WPF資源文件

2020-08-25 07:16:20

Python資源文件文件

2011-07-08 18:03:30

Cocoa Touch 網絡

2011-08-10 18:47:18

Cocoa字符串

2010-01-04 16:23:42

Silverlight

2009-06-19 16:12:22

Java語言properties

2009-10-28 11:27:34

VB.NET資源文件

2009-08-12 16:44:13

.NET文件類型

2011-08-15 14:27:51

CocoaRunLoop

2011-07-26 15:29:36

Cocoa 模式

2011-07-28 16:52:34

Cocoa 框架 Mac Os

2011-08-02 13:58:18

Cocoa 框架 Mac OS

2009-06-05 09:40:59

點贊
收藏

51CTO技術棧公眾號

欧美精品成人网| 91久久久久久久| 西西444www无码大胆| av久久网站| 一区二区激情小说| 欧美日韩视频在线一区二区观看视频| 亚洲中文无码av在线| 欧美日韩mv| 中文字幕日韩高清| 在线观看一区二区三区四区| 3d欧美精品动漫xxxx无尽| 亚洲一区在线播放| 亚洲国产精品久久久久婷婷老年| www.色婷婷.com| 久久久久国内| 欧美激情综合色| 蜜臀久久99精品久久久久久| 福利片一区二区| 欧美日韩一区久久| 99视频在线免费播放| 91激情在线| 91在线高清观看| 91久久偷偷做嫩草影院| 青娱乐在线免费视频| 在线观看一区视频| 九九在线精品视频| 久久视频国产精品免费视频在线 | 国产蜜臀av在线播放| 国产婷婷色一区二区三区四区 | 精品人妻一区二区三区含羞草| 久久亚洲不卡| 91精品国产高清| 久久国产精品二区| 五月天久久久| 色狠狠久久aa北条麻妃| 亚洲国产天堂av| 亚洲日产av中文字幕| 亚洲国产另类久久精品| 中文字幕第10页| 欧美极品在线| 欧美日韩在线直播| 992kp快乐看片永久免费网址| 国产资源在线观看入口av| 亚洲综合在线视频| 成年丰满熟妇午夜免费视频| v片在线观看| 亚洲天堂2016| 色爽爽爽爽爽爽爽爽| 欧美另类极品| 亚洲三级在线看| 中文字幕色一区二区| 香蕉视频在线看| 国产精品入口麻豆原神| 一级二级三级欧美| 美女国产在线| 亚洲精品少妇30p| 热久久最新地址| 污污视频在线看| 亚洲香肠在线观看| 91九色在线观看视频| 国产资源在线观看入口av| 五月天视频一区| 欧美极品欧美精品欧美图片| 日韩电影av| 欧美精品在线观看播放| 国产999免费视频| 日韩免费成人| 日韩精品久久久久久久玫瑰园| 免费成人蒂法网站| 国产伦一区二区三区| 中文字幕亚洲欧美日韩2019| 欧美激情精品久久久久久免费| 亚洲色图网站| 性欧美暴力猛交69hd| 无码人妻精品一区二区| 日本91福利区| 999国内精品视频在线| 黄色小视频免费在线观看| wwwwww.欧美系列| 五月天色一区| 在线观看小视频| 五月婷婷欧美视频| av无码精品一区二区三区| 成人在线日韩| 日韩精品一区二区视频| 精品熟妇无码av免费久久| 中文字幕亚洲综合久久五月天色无吗''| 久久99精品久久久久久噜噜| www亚洲视频| 久草热8精品视频在线观看| 国产精品永久入口久久久| 免费av在线电影| 亚洲欧美一区二区三区国产精品| 国产男女免费视频| 成人精品一区二区三区电影| 精品免费国产二区三区| 日本一级免费视频| 激情综合亚洲| 国产精品视频免费在线| 蜜桃视频污在线观看| 国产肉丝袜一区二区| av在线免费观看国产| 亚洲爱爱视频| 亚洲精品在线网站| 99久久精品久久亚洲精品| 亚洲国产精品一区制服丝袜| 国产精品青草久久久久福利99| 亚洲大尺度网站| 国产女主播在线一区二区| 分分操这里只有精品| 久久久加勒比| 国产小视频国产精品| 精品在线免费观看视频| 久久99精品一区二区三区| 久久99精品久久久久子伦| av在线下载| 欧美日韩在线直播| 波多野结衣 在线| 亚洲天堂久久| 亚洲一区二区久久久久久| 第一福利在线| 色婷婷综合久色| 黑丝av在线播放| 国内精品福利| 91日韩在线视频| 国产日韩精品在线看| 欧美性猛交99久久久久99按摩| 一级全黄裸体片| 7777久久香蕉成人影院| 国产精品99久久久久久久久| 日本大臀精品| 欧美视频在线免费看| 私密视频在线观看| 亚洲精品色图| 国产一区二区高清视频| 二区三区在线观看| 欧美日本在线观看| 激情高潮到大叫狂喷水| 日本欧美韩国一区三区| 日韩尤物视频| a日韩av网址| 亚洲欧美日韩精品| 亚洲图片在线视频| 久久久噜噜噜久噜久久综合| 青青草原成人网| 欧美美女啪啪| 欧美综合激情网| 日本成人一区| 欧美影院一区二区| 午夜影院黄色片| 美腿丝袜亚洲三区| 一区二区三区电影| 国产精品一区二区精品| 欧美成人午夜剧场免费观看| 亚洲av综合色区无码一二三区| 亚洲伊人色欲综合网| 久久人妻少妇嫩草av无码专区| 一区二区日韩免费看| 欧美日韩免费高清| 国产成人福利夜色影视| 久热精品视频在线| 亚洲a视频在线| 天天综合日日夜夜精品| 亚洲国产无码精品| 日韩精品电影在线| 中国 免费 av| 国产精品主播在线观看| 日韩av高清不卡| 日本不卡不卡| 精品国产一区二区国模嫣然| 毛片视频网站在线观看| 国产精品网站在线观看| 麻豆av免费看| 日韩高清一区在线| 久久久成人精品一区二区三区| 99久久香蕉| 国产成人一区二区三区| www久久日com| 亚洲码在线观看| 国产精品亚洲欧美在线播放| 亚洲高清免费一级二级三级| 法国空姐电影在线观看| 国产美女av一区二区三区| www.射射射| 99久久婷婷国产综合精品电影√| 国产精品美女黄网| 国模视频一区| 欧美激情亚洲激情| 风间由美一区| 亚洲成人三级在线| 中日精品一色哟哟| 亚洲国产乱码最新视频| 美女网站视频色| 99久久777色| 国产又黄又猛的视频| 国产精品日本欧美一区二区三区| 亚洲免费不卡| 亚洲男人都懂第一日本| 91亚洲午夜在线| 英国三级经典在线观看| 欧美精品在线极品| 1pondo在线播放免费| 亚洲精品国产精品久久清纯直播 | 少妇淫片在线影院| 久久综合久中文字幕青草| 青青草在线免费视频| 日韩欧美的一区| 中文字幕免费观看视频| 婷婷亚洲久悠悠色悠在线播放| 欧美手机在线观看| 欧美经典三级视频一区二区三区| 亚洲精品乱码久久久久久蜜桃欧美| 蜜臀久久99精品久久久久久9 | 中文一区一区三区高中清不卡免费| 久久久91精品| avtt亚洲| 亚洲欧美在线看| 五月激情六月婷婷| 精品国偷自产国产一区| 国产欧美一区二区三区视频在线观看| 91成人在线免费观看| 中文字幕日韩一级| 亚洲一区二区三区在线看| 永久免费未视频| 国产精品视频线看| 国产精品一二三区在线观看| heyzo一本久久综合| 少妇精品无码一区二区| 国产黄色成人av| 久久久久久国产精品日本| 精品一区二区三区在线视频| 午夜国产一区二区三区| 麻豆亚洲精品| 国产一区亚洲二区三区| 香蕉久久夜色精品| 色综合av综合无码综合网站| 国产精品综合色区在线观看| www.玖玖玖| 一本色道久久综合亚洲精品不卡 | 日韩精品无码一区二区| 亚洲综合免费观看高清在线观看| 欧美成人精品欧美一| 亚洲欧美日韩人成在线播放| 国产高清视频免费在线观看| 亚洲欧美日韩国产综合| 日韩女优一区二区| 一区二区国产盗摄色噜噜| 久久黄色免费视频| 亚洲www啪成人一区二区麻豆| 久青草视频在线观看| 亚洲一区二区三区中文字幕 | 国产精品久久久久久久久久直播| 日本少妇精品亚洲第一区| 俄罗斯精品一区二区| 超碰成人在线免费| 久热这里只精品99re8久| 亚洲影院天堂中文av色| 日韩三级电影网站| 99久久夜色精品国产亚洲1000部| mm131午夜| 亚洲黄色影院| 欧美黄色一级片视频| 蜜桃视频一区二区三区在线观看| 污污的视频免费观看| 国产成人综合亚洲91猫咪| 国产chinese中国hdxxxx| 久久综合色婷婷| 美国黄色特级片| 亚洲免费观看高清| a v视频在线观看| 在线视频中文字幕一区二区| 国产又粗又猛视频免费| 精品三级在线观看| 视频三区在线观看| 中文精品99久久国产香蕉| 1024在线播放| 538国产精品视频一区二区| а√天堂资源国产精品| 成人av中文| 国产精品一国产精品| 免费国产成人看片在线| 亚洲美女视频在线免费观看| 污污网站免费看| 粉嫩av一区二区三区在线播放| 日韩精品卡通动漫网站| 成人免费一区二区三区视频| 日本一区二区不卡在线| 精品视频免费在线| 污视频软件在线观看| 日韩在线视频导航| 高清精品在线| 91日本在线观看| 国产精品欧美日韩一区| 日韩久久久久久久久久久久| 日日夜夜精品免费视频| 午夜福利三级理论电影| 国产精品蜜臀在线观看| 日韩少妇高潮抽搐| 欧美一级理论片| 国产精品麻豆一区二区三区 | 成人在线观看毛片| 玖玖在线精品| 色婷婷精品久久二区二区密| 中文字幕制服丝袜一区二区三区| 日本午夜视频在线观看| 欧美一级片免费看| 3d成人动漫在线| 欧美在线一级视频| ccyy激情综合| 日本道在线视频| 青青草97国产精品免费观看 | 国产免费av一区二区三区| 91免费国产精品| 九色|91porny| 99自拍偷拍视频| 一本一道综合狠狠老| 天堂成人在线观看| 久久99精品视频一区97| 亚洲精品三区| 亚欧洲精品在线视频免费观看| 国产欧美丝祙| www.17c.com喷水少妇| 亚洲午夜在线电影| 国产片高清在线观看| 色妞欧美日韩在线| 成人四虎影院| 亚洲巨乳在线观看| 日本不卡中文字幕| 性の欲びの女javhd| 色欧美日韩亚洲| 每日更新在线观看av| 91成人免费观看网站| 久久夜色电影| 日韩欧美亚洲天堂| 99久久精品国产一区二区三区 | 精品国产第一页| 在线欧美视频| 国产情侣久久久久aⅴ免费| 亚洲精品免费视频| 精品国产乱码久久久久久蜜臀网站| 久久久精品免费| 日韩精品中文字幕吗一区二区| 四虎4hu永久免费入口| 国产精品538一区二区在线| 91杏吧porn蝌蚪| 日韩欧美一级二级| 日本孕妇大胆孕交无码| 97夜夜澡人人双人人人喊| 国产综合色产| av在线播放网址| 欧美性生交xxxxxdddd| 粉嫩av一区| 国产中文欧美精品| 在线精品国产| 亚洲一区二区三区四区av| 亚洲成人精品一区| 九九九伊在人线综合| 国产精品视频一区二区三区四| 久久麻豆精品| 中文字幕一二三区| 疯狂做受xxxx高潮欧美日本 | 精品三级av| 久久久999视频| 国产精品女上位| 精品国产一级片| 91国在线精品国内播放| 九九视频精品全部免费播放| 婷婷六月天在线| 一区2区3区在线看| 婷婷国产在线| 国产深夜精品福利| 国产精品jizz在线观看美国| 超碰97在线资源站| 欧美视频在线不卡| 人人超在线公开视频| 欧美精品在线一区| 国产综合色视频| 国产欧美一区二区三区在线看蜜臂| 有码中文亚洲精品| 91精品国产乱码久久久竹菊| 北条麻妃视频在线| 亚洲综合久久久| 成人欧美一区| 成人欧美一区二区三区在线观看 | 国产精品成人一区| 欧美va天堂| 丰腴饱满的极品熟妇| 日韩一区二区三区观看| 成人av三级| 国产日韩欧美大片| 久久久久久综合| www.午夜激情| 国产精品日韩在线一区| 狠色狠色综合久久| 性色国产成人久久久精品 | 日本高清视频在线播放| 精品国产乱码久久久久久蜜柚| 久久激情综合网| 男人天堂2024| 久久久久久久久久久人体|