歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java讀取ipa中info.plist獲取版本信息

和Android的manifest.xml類似,ios中一個應用的版本信息,應用名稱,兼容的最低版本等等都在ipa包中的info.plist中列出,但是對於一個打包好ipa包,裡面的info.plist是亂碼的,想要獲取信息還是相當的麻煩。而最近也要到這方面的需求,找到的第一個方案是使用java調用linux 中的plutil工具來實現對info.plist的解析,這樣做雖然可以實現但感覺太牽強了,,第二個方案是繼續尋找純java的解決方案,找啊找最後還是在老外的一個網站上(overstackflow.com)上找到有人提這樣的問題,幸運的是還有很多哥們回復,老外果然是牛逼,最後照著做,可行了,具體的是找到了一個jar包,簡單調用一下就Ok,先貼一下代碼,對於怎樣從ipa中提取info.plist就不羅嗦了,使用zip流就可以搞定,提供一個別人弄好的實現參考一下就ok(http://code.google.com/p/sunlab/source/detail?r=339):

[java]

  1. import java.io.File;  
  2.   
  3. import com.dd.plist.PropertyListParser;  
  4.   
  5. public class Plist {  
  6.     public static void main(String[] args) throws Exception {  
  7.         File file = new File("d:\\angryInfo.plist");  
  8.         File file1 = new File("d:\\angryInfo1.plist");  
  9.           
  10.         PropertyListParser.convertToXml(file, file1) ;  
  11.           
  12.           
  13.            
  14.         //InputStream input = Plist.class.getClassLoader().getResourceAsStream("");   
  15. //      NSDictionary rootDict = (NSDictionary) PropertyListParser.parse(file);   
  16. //         
  17. //         
  18. //         
  19. //         
  20. //      String name = rootDict.objectForKey("Name").toString();   
  21. //      NSObject[] parameters = ((NSArray) rootDict.objectForKey("Parameters")).getArray();   
  22. //      for (NSObject param : parameters) {   
  23. //             
  24. //          System.out.println(param.toXMLPropertyList());   
  25. //             
  26. //          if (param.getClass().equals(NSNumber.class)) {   
  27. //              NSNumber num = (NSNumber) param;   
  28. //              switch (num.type()) {   
  29. //              case NSNumber.BOOLEAN: {   
  30. //                  boolean bool = num.boolValue();   
  31. //                  // ...   
  32. //                  break;   
  33. //              }   
  34. //              case NSNumber.INTEGER: {   
  35. //                  long l = num.longValue();   
  36. //                  // or int i = num.intValue();   
  37. //                  // ...   
  38. //                  break;   
  39. //              }   
  40. //              case NSNumber.REAL: {   
  41. //                  double d = num.doubleValue();   
  42. //                  // ...   
  43. //                  break;   
  44. //              }   
  45. //              }   
  46. //          }   
  47. //          // else...   
  48. //      }   
  49.     }  
  50. }  

在d盤下找到angryInfo1.plist打開,已不是亂碼的了,現在想要提取啥信息就盡管提取。

用到的jar下載:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/1月/14日/Java讀取ipa中info.plist獲取版本信息/

Copyright © Linux教程網 All Rights Reserved