原文地址:http://blog.csdn.net/huanghr_1/article/details/7857211
由于操作比较简单,就不上截图了,简单说一下:
1)从ipa提取图片资源文件。
>> 解压ipa(其实ipa也是一种压缩格式的文件,改名为zip即可解压),解压后,有个Payload目录,里面有个“应用名.app”(其实是个目录);
>> 打开终端命令行,cd 到 ***/***/应用名.app 目录
>> 创建一个ruby脚本(mac可以直接执行ruby脚本),该脚本用来将ipa包内的png文件反优化”成可以浏览的图片文件,命令:vi uncrush.rb
- <span style="font-size:18px;"> files = Dir.glob("*.png")
- puts "Creating directory: uncrushed"
- if File.directory?("uncrushed")
- puts "Directory already exists... delete and proceed? (y/n)"
- input = gets.strip
- if input == "y"
- deletefiles = Dir.glob("uncrushed/*.png")
- deletefiles.each do |f|
- File.delete(f)
- end
- Dir.delete("uncrushed")
- else
- abort
- end
- else
- end
- Dir.mkdir("uncrushed")
- files.each do |f|
- puts "Found file: #{f}... uncrushing it because we street!"
- `/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -revert-iphone-optimizations -q #{f} uncrushed/#{f}`
- puts "Creating new file: #{f}"
- end </span>
>> 保存并执行脚本:ruby uncrush.rb ,在当前目录的 "uncrushed"文件夹,你可以找到原始的png文件,很酷吧。
2)从iOS设备提取ipa文件
方法一:使用iTunes,备份ipa到本地目录(由于同步规则复杂,我们用第二种,最简单的)
方法二:使用iTools,可以看成一个与Apple帐号无关的iTunes,支持MAC和Windows(据说是QQ二把手创业的作品),连接后可以把已安装的ipa逐个备份到本地,也可以查看应用内的数据库及产生的图片,文档等。同样,对一些需要付费的软件,你可以备份到本地,然后安装到其它越狱的iOS设备。
(完)
=========补充1=========
mac 默认不隐藏文件后缀名及隐藏文件,可以通过一下命名设置为显示,设置完成后需要 Force Quit 【Finder】。
显示Mac隐藏文件的命令:
defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏Mac隐藏文件的命令:
defaults write com.apple.finder AppleShowAllFiles -bool false
=========补充2=========
执行时可能会提示pngcrush 无法找到,不同的电脑Xcode安装目录有所不同,进入 Application -> Xcode -> 右键 Show Package Contents -> 邮件 Get Info,查看所在的绝对路径,替换即可。某些资源文件如果在打包时没有设置decode的话,是不用执行pngcrush的。以下是我的xcode 安装路径
- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
xcrun -sdk iphoneos -find pngcrush
files = Dir.glob("*.png")
puts "Creating directory: uncrushed"
if File.directory?("uncrushed")
puts "Directory already exists... delete and proceed? (y/n)"
input = gets.strip
if input == "y"
deletefiles = Dir.glob("uncrushed/*.png")
deletefiles.each do |f|
File.delete(f)
end
Dir.delete("uncrushed")
else
abort
end
else
end
Dir.mkdir("uncrushed")
files.each do |f|
puts "Found file: #{f}... uncrushing it because we street!"
`/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -revert-iphone-optimizations -q #{f} uncrushed/#{f}`
puts "Creating new file: #{f}"
end