準備
Ruby 1.9 系のインストーラをダウンロードしインストールする。rubyinstaller-1.9.3-p286.exe をダウンロードしました。
RubyForge: Ruby Installer for Windows: ファイルリスト
http://rubyforge.org/frs/?group_id=167
コマンドプロンプトを起動する。プロクシ環境配下の場合は、プロクシ設定を行う。
>set http_proxy=proxy.example.com:8080色々入れる前にアップデート
>gem update --system --platform=mswin32 Latest version currently installed. Aborting.rubyzipのインストール
>gem install rubyzip --platform=mswin32 --verbose GET http://rubygems.org/latest_specs.4.8.gz 302 Moved Temporarily GET http://production.s3.rubygems.org/latest_specs.4.8.gz 200 OK GET http://rubygems.org/quick/Marshal.4.8/rubyzip-0.9.9.gemspec.rz 302 Moved Temporarily GET http://tokyo-m.rubygems.org/quick/Marshal.4.8/rubyzip-0.9.9.gemspec.rz 200 OK Installing gem rubyzip-0.9.9 Downloading gem rubyzip-0.9.9.gem GET http://rubygems.org/gems/rubyzip-0.9.9.gem 302 Moved Temporarily GET http://tokyo-m.rubygems.org/gems/rubyzip-0.9.9.gem 200 OK c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/samples/example.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/samples/example_filesystem.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/samples/example_recursive.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/samples/gtkRubyzip.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/samples/qtzip.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/samples/write_simple.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/samples/zipfind.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/compressor.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/constants.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/decompressor.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/deflater.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/dos_time.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/inflater.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/ioextras.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/null_compressor.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/null_decompressor.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/null_input_stream.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/pass_thru_compressor.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/pass_thru_decompressor.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/settings.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/tempfile_bugfixed.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip_central_directory.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip_entry.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip_entry_set.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip_extra_field.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip_file.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip_input_stream.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip_output_stream.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip_streamable_directory.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zip_streamable_stream.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/lib/zip/zipfilesystem.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/README.md c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/NEWS c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/TODO c:/Ruby193/lib/ruby/gems/1.9.1/gems/rubyzip-0.9.9/Rakefile Successfully installed rubyzip-0.9.9 1 gem installed Installing ri documentation for rubyzip-0.9.9... rdoc --ri --op c:/Ruby193/lib/ruby/gems/1.9.1/doc/rubyzip-0.9.9/ri lib --title rubyzip-0.9.9 Documentation --quiet Installing RDoc documentation for rubyzip-0.9.9... rdoc --op c:/Ruby193/lib/ruby/gems/1.9.1/doc/rubyzip-0.9.9/rdoc lib --title rubyzip-0.9.9 Documentation --quietインストールを確認
>gem list --local *** LOCAL GEMS *** bigdecimal (1.1.0) io-console (0.3) json (1.5.4) minitest (2.5.1) rake (0.9.2.2) rdoc (3.9.4) rubyzip (0.9.9)ruby_apkインストール
>gem install ruby_apk --platform=mswin32 --verbose GET http://rubygems.org/latest_specs.4.8.gz 302 Moved Temporarily GET http://production.s3.rubygems.org/latest_specs.4.8.gz 200 OK GET http://rubygems.org/quick/Marshal.4.8/ruby_apk-0.4.1.gemspec.rz 302 Moved Temporarily GET http://tokyo-m.rubygems.org/quick/Marshal.4.8/ruby_apk-0.4.1.gemspec.rz 200 OK GET http://rubygems.org/quick/Marshal.4.8/rubyzip-0.9.9.gemspec.rz 302 Moved Temporarily GET http://tokyo-m.rubygems.org/quick/Marshal.4.8/rubyzip-0.9.9.gemspec.rz 200 OK Installing gem ruby_apk-0.4.1 Downloading gem ruby_apk-0.4.1.gem GET http://rubygems.org/gems/ruby_apk-0.4.1.gem 302 Moved Temporarily GET http://tokyo-m.rubygems.org/gems/ruby_apk-0.4.1.gem 200 OK c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/.rspec c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/Gemfile c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/Gemfile.lock c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/LICENSE.txt c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/README.md c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/Rakefile c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/VERSION c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/apk.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/axml_parser.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/dex.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/dex/access_flag.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/dex/dex_object.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/dex/info.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/dex/utils.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/manifest.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/resource.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/android/utils.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/lib/ruby_apk.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/ruby_apk.gemspec c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/apk_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/axml_parser_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/data/sample.apk c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/data/sample_AndroidManifest.xml c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/data/sample_classes.dex c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/data/sample_resources.arsc c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/data/sample_resources_utf16.arsc c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/dex/access_flag_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/dex/dex_object_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/dex/info_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/dex/utils_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/dex_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/manifest_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/resource_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/ruby_apk_spec.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/spec_helper.rb c:/Ruby193/lib/ruby/gems/1.9.1/gems/ruby_apk-0.4.1/spec/utils_spec.rb Successfully installed ruby_apk-0.4.1 1 gem installed Installing ri documentation for ruby_apk-0.4.1... rdoc --ri --op c:/Ruby193/lib/ruby/gems/1.9.1/doc/ruby_apk-0.4.1/ri lib LICENSE.txt README.md --title ruby_apk-0.4.1 Documentation --quiet Installing RDoc documentation for ruby_apk-0.4.1... rdoc --op c:/Ruby193/lib/ruby/gems/1.9.1/doc/ruby_apk-0.4.1/rdoc lib LICENSE.txt README.md --title ruby_apk-0.4.1 Documentation --quietインストールを確認
>gem list --local *** LOCAL GEMS *** bigdecimal (1.1.0) io-console (0.3) json (1.5.4) minitest (2.5.1) rake (0.9.2.2) rdoc (3.9.4) ruby_apk (0.4.1) rubyzip (0.9.9)よし、準備が整った。
実行
こんなコードを書いて、適当なapkをくわせる。
require 'ruby_apk' apk = Android::Apk.new(ARGV.first) m = apk.manifest puts "package_name: #{m.package_name}" puts "version_name: #{m.version_name}"出力結果
package_name: com.blogspot.logroid version_name: 2.2SDK無しで情報取れるのは良いんだけど、まだまだ解析がイマイチ。
apktoolでデコードするとこんな感じのAndroidManifest.xmlが取り出される。
※先頭から一部を抜粋
<?xml version="1.0" encoding="utf-8"?> <manifest android:versionCode="220000" android:versionName="2.2" android:installLocation="internalOnly" package="com.blogspot.logroid" xmlns:android="http://schemas.android.com/apk/res/android"> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16" /> <supports-screens android:anyDensity="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:resizeable="true" android:xlargeScreens="true" /> <application android:label="@string/app_name" android:icon="@drawable/icon" android:name="TestApplication" android:hardwareAccelerated="true"> <provider android:name=".provider.TestProvider" android:exported="false" android:authorities="com.blogspot.logroid.Test"> <grant-uri-permission android:pathPrefix="/" /> </provider>apk_rubyではこんなxmlが取り出される。(manifest.to_xmlの結果)
<manifest xmlns:android='http://schemas.android.com/apk/res/android' android:versionCode='220000' android:versionName='2.2' android:installLocation='1' package='com.blogspot.logroid'> <uses-sdk android:minSdkVersion='7' android:targetSdkVersion='16'/> <supports-screens android:anyDensity='true' android:smallScreens='true' android:normalScreens='true' android:largeScreens='true' android:resizeable='true' android:xlargeScreens='true'/> <application android:label='@0x7f0b0016' android:icon='@0x7f0200dc' android:name='TestApplication' android:hardwareAccelerated='true'> <provider android:name='.provider.TestProvider' android:exported='true' android:authorities='com.blogspot.logroid.Test'> <grant-uri-permission android:pathPrefix='/'/> </provider>android:labelが@0x7f0b0016となってしまっている。
これでは、リソースから、実態を参照することが出来ない。
ちなみにリソースも、name属性と値をペアで取る事ができず、取ることが出来るのは値のみでした。
name属性分からないから、実態と照らし合わせることが出来ない。
残念。
今のところ、比較的まともに取得できるのは、AndroidManifest.xmlのみのようです。
今後に期待です。
0 件のコメント:
コメントを投稿