準備
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をくわせる。
1 2 3 4 5 6 | 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が取り出される。
※先頭から一部を抜粋
1 2 3 4 5 6 7 8 9 | <? 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 > |
1 2 3 4 5 6 7 | < 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 > |
これでは、リソースから、実態を参照することが出来ない。
ちなみにリソースも、name属性と値をペアで取る事ができず、取ることが出来るのは値のみでした。
name属性分からないから、実態と照らし合わせることが出来ない。
残念。
今のところ、比較的まともに取得できるのは、AndroidManifest.xmlのみのようです。
今後に期待です。
0 件のコメント:
コメントを投稿