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获取版本信息/

你可能感兴趣的:(Java读取ipa中info.plist获取版本信息)