精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品久久久久久一区二区三区| 性欧美lx╳lx╳| 亚洲欧美日韩国产综合在线| 亚洲一区二区久久久久久| 成熟的女同志hd| 嗯用力啊快一点好舒服小柔久久| 欧美日韩免费在线观看| 日日夜夜精品网站| 国产成人精品免费看视频| 国内自拍视频一区二区三区| 亚洲区中文字幕| 91精品视频国产| 三级在线观看视频| 综合分类小说区另类春色亚洲小说欧美 | 精品美女久久久| 欧美一区二区免费| 虎白女粉嫩尤物福利视频| 九色porny丨首页在线| 菠萝蜜视频在线观看一区| 国产精品激情av电影在线观看 | 欧美日本韩国一区二区| 韩国女主播成人在线观看| 韩国国内大量揄拍精品视频| 精品丰满少妇一区二区三区| 加勒比视频一区| 欧美精品三级日韩久久| 日本久久久精品视频| av免费网站在线| 中文字幕精品一区二区精品绿巨人 | 国产精品99| 黑人巨大精品欧美一区二区一视频| 自拍偷拍亚洲色图欧美| 你懂得网站在线| 成人av免费在线| 91在线观看免费| 国产精品第6页| 亚洲一区自拍| 97精品欧美一区二区三区| 朝桐光av在线| 日韩啪啪电影网| 亚洲性线免费观看视频成熟| 久久久久久婷婷| 日韩在线观看一区二区三区| 欧美日本精品| 国产一级揄自揄精品视频| 一起草在线视频| 视频精品一区二区三区| 91精品国产综合久久久久久| 日韩中文字幕免费在线| 欧美aa一级| 婷婷综合在线观看| 99色这里只有精品| 蜜臀av国内免费精品久久久夜夜| 亚洲欧美一区二区三区久本道91| 亚洲欧美电影在线观看| 岛国在线视频免费看| 久久久美女艺术照精彩视频福利播放 | 日韩网红少妇无码视频香港| 一区二区三区毛片免费| 乱亲女秽乱长久久久| 黄色精品视频在线观看| 日韩精品永久网址| 日韩中文字幕在线视频| 在线观看天堂av| 欧美黄色大片在线观看| 日韩在线视频观看正片免费网站| 中文字幕第二区| 久久国产电影| 久久精品国产清自在天天线| 永久免费看mv网站入口| 综合一区二区三区| 欧美巨大黑人极品精男| 国产精品二区一区二区aⅴ| 狠狠噜噜久久| 69视频在线播放| 麻豆成人免费视频| 日韩电影在线观看一区| 国产精品日韩一区| 国产精品久久综合青草亚洲AV| 久久精品国产99国产精品| 91亚洲永久免费精品| 男人天堂网在线视频| 91亚洲精品乱码久久久久久蜜桃| 欧美大香线蕉线伊人久久| av资源在线观看免费高清| 日韩一区有码在线| 青青在线视频免费观看| 手机在线观看av网站| 欧美性一二三区| 婷婷激情小说网| 红杏aⅴ成人免费视频| 国产性猛交xxxx免费看久久| 亚洲熟女毛茸茸| 亚洲天堂偷拍| 国产精品27p| www.我爱av| 久久久精品国产免大香伊| 亚洲一区二区三区免费看| 五月天激情在线| 日韩欧美在线视频日韩欧美在线视频 | 国产乱了高清露脸对白| 国产精品三级| 精品自拍视频在线观看| 亚洲精品中文字幕乱码三区91| 日韩激情在线观看| 成人3d动漫一区二区三区91| 天堂a√中文在线| 中文字幕一区二区视频| 男人插女人视频在线观看| 天堂久久午夜av| 精品国产青草久久久久福利| 色一情一交一乱一区二区三区| 久久久久久久久国产一区| 青草成人免费视频| 国产乱码精品一区二三区蜜臂| 99精品久久免费看蜜臀剧情介绍| 亚洲一区二区三区在线观看视频| 好久没做在线观看| 欧美日韩在线播放一区| 在线精品一区二区三区| 亚洲精品国产成人影院| 国产91在线高潮白浆在线观看| 精品人妻一区二区三区含羞草| 久久久国产精品午夜一区ai换脸| 天天想你在线观看完整版电影免费| 美女100%一区| 亚洲国产成人av在线| 五月天av网站| 人禽交欧美网站| 久久99精品国产99久久| 中国av在线播放| 欧美日韩不卡一区| 美女爆乳18禁www久久久久久| 欧美黄色免费| 成人黄色av播放免费| 黄色视屏网站在线免费观看| 亚洲图片有声小说| 少妇丰满尤物大尺度写真| 日韩免费久久| 国产精品成熟老女人| 五月天婷婷社区| 一区二区三区免费网站| 欧美一级特黄aaa| 色综合久久一区二区三区| 国产精品黄页免费高清在线观看| 亚洲av片在线观看| 精品久久久视频| 国产精品久久久久久在线观看| 综合激情婷婷| 亚洲自拍中文字幕| 中文字幕免费高清电视剧网站在线观看| 欧美日韩午夜在线| 中国美女黄色一级片| 免费观看在线综合色| 婷婷亚洲婷婷综合色香五月| 高清电影一区| 亚洲乱码一区av黑人高潮| 福利一区二区三区四区| jlzzjlzz亚洲日本少妇| 人人妻人人做人人爽| 成人午夜三级| 98精品国产自产在线观看 | 日韩精品一区二区三区第95| 日韩av电影网| 99精品欧美一区| 北条麻妃在线视频| 成人同人动漫免费观看| 国产精品一区二区性色av| 成人精品一区| 在线成人免费视频| 久久久99精品| 99re热视频精品| 日本黄色三级大片| 日本一区二区免费高清| 成人久久久久久久| 亚洲区欧洲区| 亚洲精品av在线播放| 97久久久久久久| 国产欧美日韩另类一区| 日本黄色的视频| 欧美成人国产| 久久大片网站| 成人国产在线| 欧美成人精品xxx| 欧美特黄一级视频| 色一区在线观看| 手机免费观看av| 国产成+人+日韩+欧美+亚洲| 精品视频免费在线播放| 久久av综合| 91免费版网站入口| 不卡专区在线| www亚洲精品| 成人久久久精品国产乱码一区二区 | 美女视频黄久久| 欧美图片激情小说| 国产一区二区三区四区| 亚洲综合视频1区| 日韩影院在线| 美日韩精品免费视频| 少妇一区二区三区四区| 欧美三级视频在线观看| 国产成人精品av久久| 国产日韩高清在线| 久久国产免费视频| 日韩电影在线看| 黄色大片中文字幕| 日韩欧美视频| 麻豆精品传媒视频| 久久久久亚洲精品中文字幕| 全球成人中文在线| 2024最新电影在线免费观看| 亚洲视频在线播放| 黄色一级大片在线免费看国产一| 在线精品视频免费观看| 国产一级视频在线观看| 国产精品美女久久久久久久网站| 国产chinese中国hdxxxx| 另类小说综合欧美亚洲| 97国产在线播放| 欧美激情日韩| 亚洲视频导航| 精品中文一区| 精品一卡二卡三卡四卡日本乱码 | 欧美日本一区二区视频在线观看 | aaa日本高清在线播放免费观看| 精品少妇一区二区三区免费观看| 小泽玛利亚一区二区三区视频| 天天色图综合网| 免费三片在线播放| 亚洲欧洲韩国日本视频| 国产jjizz一区二区三区视频| www.视频一区| 不卡的一区二区| 国产一区视频在线看| 杨幂毛片午夜性生毛片 | 亚洲精品www.| 日韩不卡一二三区| 青青在线视频免费| 老鸭窝91久久精品色噜噜导演| 福利视频一区二区三区四区| 中文字幕乱码亚洲无线精品一区| 五月天亚洲综合| 黑丝美女一区二区| 欧美日韩精品一区| 亚洲国产国产| 麻豆av一区二区三区| 午夜欧洲一区| 欧美高清性xxxxhdvideosex| 五月国产精品| 欧美日韩精品不卡| 精品大片一区二区| 日韩国产精品一区二区三区| 久草成人资源| 日韩av电影免费观看| 欧美日韩性在线观看| 日韩精品一区二区三区四区五区| 精品一区毛片| 亚洲国产精品一区在线观看不卡 | 亚洲不卡系列| 国产精品视频午夜| 日韩护士脚交太爽了| 国产日韩在线视频| 国产午夜久久av| 99久久国产免费免费| 99ri日韩精品视频| 精品午夜一区二区| 精品产国自在拍| 成人手机视频在线| 欧美午夜电影在线观看| 欧美午夜小视频| 久久精品国产清高在天天线| 天堂在线资源视频| 国产尤物一区二区| 国产免费a级片| 26uuu精品一区二区在线观看| 一区二区黄色片| 国产精品久久久久永久免费观看 | 亚洲图片欧美一区| 四虎成人永久免费视频| 欧美专区在线观看一区| 国产美女免费视频| 亚洲经典中文字幕| www在线免费观看| 欧美老少配视频| www.51av欧美视频| 国产日韩在线观看av| 91免费精品国偷自产在线在线| 久久久久资源| 99re66热这里只有精品8| 久久av综合网| 日本91福利区| 9.1在线观看免费| 久久久91精品国产一区二区精品| 日韩在线一卡二卡| 午夜精品福利一区二区蜜股av| 成人免费一级片| 欧美成人video| 成人在线免费视频| 欧美激情2020午夜免费观看| 亚洲少妇视频| 亚洲a成v人在线观看| 色先锋久久影院av| 好色先生视频污| 久久成人一区| 无码人妻丰满熟妇啪啪网站| 国产亚洲欧美日韩俺去了| 美女毛片在线观看| 欧美影院午夜播放| 亚洲av成人精品一区二区三区在线播放| 日韩在线欧美在线| 午夜影院在线播放| 亚洲japanese制服美女| 精品一区二区三区在线| 国产精品12345| 国产乱色国产精品免费视频| 91在线无精精品白丝| 午夜一区二区三区视频| 国产乱人乱偷精品视频| 亚洲三级av在线| aa视频在线观看| **亚洲第一综合导航网站| 成人羞羞动漫| 中文字幕日本最新乱码视频| 国产成人免费网站| 九九精品视频免费| 欧洲人成人精品| 深夜福利在线视频| 久久久这里只有精品视频| 精品国产三级| 亚洲一区美女| 日韩成人伦理电影在线观看| 一级国产黄色片| 亚洲国产精品一区二区www在线| 国产精品伦一区二区三区| 一区三区二区视频| 日韩欧美精品电影| 欧美精品久久久| 亚洲综合激情| 日韩无码精品一区二区| 亚洲一区二区在线免费看| 国产模特av私拍大尺度| 色哟哟入口国产精品| 最新日韩一区| 亚洲不卡一卡2卡三卡4卡5卡精品| 9色国产精品| 亚洲欧美日本一区| 天天爽夜夜爽夜夜爽精品视频| 欧美视频在线观看一区二区三区| 欧美俄罗斯性视频| 91蜜桃臀久久一区二区| 日韩xxxx视频| www.欧美色图| av中文在线播放| 亚洲精品天天看| 国模套图日韩精品一区二区| 鲁丝一区鲁丝二区鲁丝三区| 久久一区二区三区四区五区 | 国产精品久久久久久久久快鸭 | 动漫精品一区二区三区| 欧美日韩精品在线播放| 午夜视频福利在线| 日韩av黄色在线观看| 精品久久美女| 91pony九色| 亚洲免费观看高清| 成人免费公开视频| 91高清免费视频| 国产精品一线天粉嫩av| 自拍偷拍 国产| 1024国产精品| 国产手机精品视频| 国外色69视频在线观看| 小说区图片区色综合区| 午夜免费高清视频| 亚洲日本在线观看| 懂色av一区二区三区四区| 欧美一级黄色网| 成人影院在线| 欧美一级大片免费看| 午夜成人免费电影| 高清性色生活片在线观看| 成人在线播放av| 最新亚洲视频| 丰满的亚洲女人毛茸茸| 欧美一区二区三区四区五区 | 国产精品69av| 亚洲精品va| 日本一区二区三区网站| 欧美日韩免费不卡视频一区二区三区| 超碰个人在线| 久久国产精品免费一区| 美女视频网站久久| 日本网站在线免费观看| 亚洲欧美综合v| 日韩三级av高清片| 国产男女激情视频| 一区二区三区资源| 二区三区在线| 国产精品毛片一区视频|