class Flappy::IpaInfo::Ipa
Public Class Methods
new(path)
click to toggle source
include Parser::Common
# File lib/flappy/util/ipa_info.rb, line 8 def initialize(path) @path = path # ipa包的路径 end
Public Instance Methods
app()
click to toggle source
# File lib/flappy/util/ipa_info.rb, line 34 def app @app ||= App.new(app_path, is_stored) end
app_path()
click to toggle source
# File lib/flappy/util/ipa_info.rb, line 30 def app_path @app_path ||= Dir.glob(File.join(contents, 'Payload', '*.app')).first end
cleanup()
click to toggle source
# File lib/flappy/util/ipa_info.rb, line 38 def cleanup return unless @contents FileUtils.rm_rf(@contents) @contents = nil end
contents()
click to toggle source
# File lib/flappy/util/ipa_info.rb, line 12 def contents # contents为ipa解压路径 return @contents if @contents @contents = "#{Dir.tmpdir}/#{Time.now.strftime('%Y%m%d%H%M%S')}_ipa_files" Zip::File.open(@path) do |zip_file| # zip_file为待解压的文件路径 # puts "zipfile: #{zip_file}" zip_file.each do |f| # f为解压出来的文件 # puts "file: #{f}" f_path = File.join(@contents, f.name) # f_path为解压出来的文件路径 # puts "path: #{f_path}" # FileUtils.mkdir_p(File.dirname(f_path)) # File.dirname(f_path)为所有的文件夹、资源束文件;这里建立压缩包里面的每个文件夹,这一步可以省略的 # puts "dir: #{File.dirname(f_path)}" zip_file.extract(f, f_path) unless File.exist?(f_path) # 解压文件到相应位置 end end @contents end
has_metadata?()
click to toggle source
# File lib/flappy/util/ipa_info.rb, line 53 def has_metadata? File.file?(metadata_path) end
is_stored()
click to toggle source
# File lib/flappy/util/ipa_info.rb, line 61 def is_stored # 是否是appstore包 has_metadata? ? true : false end
metadata()
click to toggle source
# File lib/flappy/util/ipa_info.rb, line 44 def metadata return unless has_metadata? begin @metadata ||= CFPropertyList.native_types(CFPropertyList::List.new(file: metadata_path).value) rescue CFFormatError @metadata = {} end end
metadata_path()
click to toggle source
# File lib/flappy/util/ipa_info.rb, line 57 def metadata_path @metadata_path ||= File.join(contents, 'iTunesMetadata.plist') end