A. patchesocplist鎬庝箞鍚堝苟鍒癱onfigplist
瑕佸皢patchesocplist鏂囦歡鍚堝苟鍒癱onfigplist鏂囦歡涓錛屾偍闇瑕佹寜鐓т互涓嬫ラよ繘琛屾搷浣錛
1. 紜淇漰atchesocplist鏂囦歡鍜宑onfigplist鏂囦歡閮藉湪鍚屼竴鐩褰曚笅銆
2. 鎵撳紑configplist鏂囦歡錛屽苟鎵懼埌鎮ㄦ兂瑕佹坊鍔爌atchesocplist鏂囦歡鍐呭圭殑鐩稿簲閿鍊煎廣
3. 鎵撳紑patchesocplist鏂囦歡錛屽苟鎵懼埌鎮ㄦ兂瑕佸嶅埗鍒癱onfigplist鏂囦歡鐨勯敭鍊煎廣
4. 灝唒atchesocplist鏂囦歡涓瀵瑰簲鐨勯敭鍊煎瑰嶅埗鍒癱onfigplist鏂囦歡涓鐩稿簲鐨勯敭鍊煎瑰悗闈銆
5. 淇濆瓨configplist鏂囦歡騫跺叧闂銆
璇鋒敞鎰忥紝鍚堝苟鏂囦歡鏃訛紝鎮ㄩ渶瑕佺『淇濅袱涓鏂囦歡涓鐨勯敭鍊煎逛笉浼氬彂鐢熷啿紿併傚傛灉瀛樺湪鍐茬獊錛屾偍闇瑕佹牴鎹瀹為檯鎯呭喌榪涜岄傚綋鐨勫勭悊錛屼緥濡傝嗙洊鎴栦繚鐣欏師鏈夌殑閿鍊煎廣傛ゅ栵紝鍚堝苟鍚庣殑鏂囦歡鍙鑳介渶瑕侀噸鏂頒繚瀛樺苟鐢熸垚鏂扮殑鏂囦歡鍚嶃
B. ios怎麼更新plist文件里的數據
方法:用ifile或者ifunbox等文件管理器 改名(個人建議在plist後面加個「備份 來改掉擴展名)或刪除(不建議)/System/Library/LaunchDaemons下的 egcom.apple.mobile.softwareupdated.plist - OTA升級,不需要自動更新系統功能的,可安全改名或刪除. com.apple.OTATaskingAgent.plist - 通知系統進行ota升級,不需要OTA自動更新的,可安全改名或刪除. com.apple.softwareupdateservicesd.plist - OTA升級服務,不需要OTA自動更新的,可安全改名或刪除. 改名或者刪除後記得必須重啟!!! 此方法即保證了不會手動升級到5.1,也可以防止蘋果自動悄悄升級到5.1,而且還可以節約系統運存,ps:這個目錄下的文件的刪除或者改名操作是絕對安全的,不會系統崩潰的。大家盡可放心!有人反映說禁用ota會會影響appstore無法使用,本人親測無任何問題,大家也可以測試一下,退一萬步講大不了再把名字改回來恢復ota功能即可,ifile在修改文件的時候早已幫你把源文件備份好了。 ! 特別處理:手機已經下載升級包的處理辦法:1、刪除已經在/var/mobile/Library/Assets/com_apple_MobileAsset_SoftwareUpdate目錄下的 OTA 下載臨時固件包 2、清除掉設置右上角的紅色帶圈數字1 的辦法 :cydia里安裝BadgeClear這個軟體,先讓圖標閃動起來,然後迅速連續多次點擊圖標,在彈出來的BadgeClear小窗口裡點擊刪除即可。 3、清除掉通用 以及 軟體更新右側的數字1 的辦法 :進入System/Library/CoreServices這個文件夾,找到SystemVersion.plist 將ProctBuildVersion的數值改為9B179,然後重啟手機,發現討厭的數字1消失了,這時後再改為原來的數值例如9A405後重啟即可。(這里只是臨時更改以欺騙ios誤以為系統已經最新自動去掉數字1而已,因此不建議長期修改為9B179,會導致很多後遺症) 可選操作:幹掉軟體更新: 在手機上用ifile在根目錄下找到「 Applications/Preferences.app/General.plist」這個文件,點一下在彈出的窗口中選「屬性表編輯器」,接著進入「數組」刪掉第三項 「2:」 點右上角 "完成" 即可 幹掉抹除還原:在手機上用ifile在根目錄下找到「 Applications/Preferences.app/reset.plist」這個文件 , 點一下在彈出的窗口中選「屬性表編輯器」,接著進入「數組」刪掉第三項 「2:」 點右上角 "完成" 即可 摘自威鋒鋒友國際旅遊島
C. ios的應用沙箱運行是怎麼一回事
1、IOS沙盒機制
IOS應用程序只能在本應用程序中創建的文件系統中讀取文件,不可以去其它地方訪問,此區域被成為沙盒,所有的非代碼文件都要保存在此,例如圖像,圖標,聲音,映像,屬性列表,文本文件等。
1.1、每個應用程序都有自己的存儲空間
1.2、應用程序不能翻過自己的圍牆去訪問別的存儲空間的內容
1.3、應用程序請求的數據都要通過許可權檢測,假如不符合條件的話,不會被放行。
通過這張圖只能從表層上理解sandbox是一種安全體系,應用程序的所有操作都要通過這個體系來執行,其中核心內容是:sandbox對應用程序執行各種操作的許可權限制。
2、打開模擬器沙盒目錄
下面看看模擬器的沙盒文件夾在mac電腦上的什麼位置。
文件都在個人用戶名文件夾下的一個隱藏文件夾里,中文叫資源庫,英文名是Library。
下面介紹一種簡單方法前往該文件夾:在Finder上點->前往->前往文件夾
進入模擬器後,裡面就包含了各個應用程序的沙盒。
進入一個應用程序,如下圖,就是一個沙箱了。
下面介紹一下沙箱的目錄結構:
默認情況下,每個沙盒含有3個文件夾:Documents, Library 和 tmp和一個應用程序文件(也是一個文件)。因為應用的沙盒機制,應用只能在幾個目錄下讀寫文件
Documents:蘋果建議將程序中建立的或在程序中瀏覽到的文件數據保存在該目錄下,iTunes備份和恢復的時候會包括此目錄
Library:存儲程序的默認設置或其它狀態信息;
Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除
tmp:提供一個即時創建臨時文件的地方。
iTunes在與iPhone同步時,備份所有的Documents和Library文件。
iPhone在重啟時,會丟棄所有的tmp文件。
注意:這里很容易和bundle混淆在一起,下面根據自己的一點理解說明二者的區別:
bundle :生成 iOS 應用程序時,Xcode 將它捆綁成一個包。捆綁包 (bundle) 是文件系統中的一個目錄,它將相關資源成組在一個地方。一個 iOS 應用程序捆綁包中,含有其可執行文件和支持資源文件(如應用程序圖標、圖像文件和已本地化的內容)。
A bundle(包裹、捆、束) is a directory with a standardizedhierarchical structure that holds executable code and the resources used by that code.
所以可以將整個應用程序其實就可以看做一個bundle。
沙箱的概念和bundle沒直接關系,沙箱只是說明程序資源與外界隔離
下面通過一個簡單的例子說明一下bundle和sandbox。
//新建的plist文件是在應用程序中的,可以通過bundle存取到該文件
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"MyPlist" ofType:@"plist"];
NSMutableArray *array = [NSMutableArray arrayWithContentsOfFile:plistPath];
//向數組中新添加一個項目
[array addObject:@"3"];
//重新寫回plist文件中
BOOL value = [array writeToFile:plistPath atomically:YES];
if (value) {
NSMutableArray *newArray = [NSMutableArray arrayWithContentsOfFile:plistPath];
NSLog(@"new array = %@",newArray);
}
/* 輸出:
new array = (
0,
1,
2,
3
)
*/
//獲取沙箱中document的path
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *newPath = [documentsDirectory :@"data.plist"];
//將數組寫入到沙箱的document中的data.plist文件中
[array writeToFile:newPath atomically:YES];
NSMutableArray *arr = [[NSMutableArray alloc] initWithContentsOfFile:newPath];
NSLog(@"array in data.plist = %@",arr);
/* 輸出:
array in data.plist = (
0,
1,
2,
3
)
*/
說明:我們首先在項目中新建一個plist文件(root項的類型為數組),添加了3個元素。因為新建的plist文件是在應用程序中的,我們可以通過bundle獲取到這個plist文件,讀取出這個數組,添加一個數據元素後,重新寫回plist文件中。接著我們獲取沙箱document的path,然後將這個文件寫入到沙箱中的data.plist文件中(如果不存在,會自動新建一個的),然後再從data.plist讀取出這個數組。
關於新建的MyPlist.plist文件,我們寫迴文件的數組中添加了一項新的元素,但是我們在xcode中查看這個MyPlist.plist文件時,發現並沒有顯示出新增的數組元素,但是我們到沙箱中查看就可以看到了,這個估計是xoode本身的問題。
關於document中data.plist文件查看我們也可以到沙箱中進行查看。如下圖:
3、獲取沙盒目錄:
//1、獲取程序的Home目錄
NSString *homeDirectory = NSHomeDirectory();
NSLog(@"path:%@", homeDirectory);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671
//2、獲取document目錄
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/Documents
//3、獲取Cache目錄
NSArray *paths = (NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/Library/Caches
//4、獲取Library目錄
NSArray *paths = (NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/Library
//5、獲取tmp目錄
NSString *tmpDir = NSTemporaryDirectory();
NSLog(@"path:%@", tmpDir);
//path:/Users/ios/Library/Application Support/iPhone Simulator/6.1/Applications/BF38C9E3-1A4A-4929-B5F2-3E46E41CC671/tmp/
4、文件操作之NSFileManager
4.1 、在document中創建一個文件目錄
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"documentsDirectory%@",documentsDirectory);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testDirectory = [documentsDirectory :@"test"];
// 創建目錄
[fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil];
4.2 、 在test目錄下創建文件
創建文件怎麼辦呢?接著上面的代碼 testPath 要用拼接上你要生成的文件名,比如test11.txt。這樣才能在test目錄下寫入文件。
testDirectory是上面代碼生成的路徑哦,不要忘了。我往test文件夾里寫入三個文件,test11.txt ,test22.txt,text.33.txt。內容都是寫入內容,write String。
實現代碼如下:
NSString *testPath1 = [testDirectory :@"test1.txt"];
NSString *testPath2 = [testDirectory :@"test2.txt"];
NSString *testPath3 = [testDirectory :@"test3.txt"];
NSString *string = @"寫入內容,write String";
[fileManager createFileAtPath:testPath1 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
[fileManager createFileAtPath:testPath2 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
[fileManager createFileAtPath:testPath3 contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
4.3獲取目錄列里所有文件名
兩種方法獲取:subpathsOfDirectoryAtPath 和 subpathsAtPath
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"documentsDirectory%@",documentsDirectory);
NSFileManager *fileManage = [NSFileManager defaultManager];
NSString *myDirectory = [documentsDirectory :@"test"];
//方法一
NSArray *file = [fileManage subpathsOfDirectoryAtPath: myDirectory error:nil];
NSLog(@"%@",file);
//方法二
NSArray *files = [fileManage subpathsAtPath: myDirectory ];
NSLog(@"%@",files);
獲取剛才test目錄下的所以文件名:
兩種方法都是輸出
(
"test1.txt",
"test2.txt",
"test3.txt"
)
4.4 、fileManager使用操作當前目錄
//創建文件管理器
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//更改到待操作的目錄下
[fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]];
//創建文件fileName文件名稱,contents文件的內容,如果開始沒有內容可以設置為nil,attributes文件的屬性,初始為nil
NSString * fileName = @"testFileNSFileManager.txt";
NSArray *array = [[NSArray alloc] initWithObjects:@"hello world",@"hello world1", @"hello world2",nil];
//下面是將數組類型轉換為NSData類型
NSMutableData *data = [[NSMutableData alloc] init];
for (int i = 0; i < [array count]; ++i ){
NSString *str = [array objectAtIndex:i];
NSData *temp = [str dataUsingEncoding:NSUTF8StringEncoding];
[data appendData:temp];
}
//注意contents參數的類型是NSData類型
[fileManager createFileAtPath:fileName contents:data attributes:nil];
4.5 刪除文件
接著上面的代碼就可以將剛新建的 testFileNSFileManager.txt文件刪除!
[fileManager removeItemAtPath:fileName error:nil];
4.6 混合數據的讀寫 請參看原文最後面的內容。
D. 如何將iOS工程中的.plist文件里的內容取出在android的工程中使用
.plist文件裡面放的可能是數組也可能是字典,我們如果直接用NSLog方法列印數組,字典回的時答候,我們會得到的