class Danger::DangerApkanalyzer
Run [apkanalyzer](developer.android.com/studio/command-line/apkanalyzer.html) and print file size, permissions and number of method references.
@example Set APK file path. Required
apkanalyzer.apk_file = "path_to/app.apk"
@example Print file size of APK file
apkanalyzer.file_size
@example Print permissions used by application
apkanalyzer.permissions
@example Print number of method references
apkanalyzer.method_references
@see STAR-ZERO/danger-apkanalyzer @tags android
Constants
- DEFAULT_COMMAND
Attributes
apk_file[RW]
APK file path. Required. @return [String]
command_apkanalyzer[RW]
apkanalyzer command file path. Default to “apkanalyzer” @return [String]
Public Instance Methods
file_size()
click to toggle source
Print file size of APK file. @return [String]
# File lib/apkanalyzer/plugin.rb, line 40 def file_size if apk_file.nil? fail("You must set apk file path to 'apkanalyzer.apk_file'") end cmd = command_apkanalyzer || DEFAULT_COMMAND o, e, s = Open3.capture3("#{cmd} -h apk file-size #{apk_file};") if s.success? message = "#### APK file size\n\n" message << "| size |\n" message << "| --- |\n" message << "| #{o.chomp} |\n" message << "\n" markdown(message) else fail(e) end end
method_references()
click to toggle source
Print number of method references. @return [String]
# File lib/apkanalyzer/plugin.rb, line 86 def method_references if apk_file.nil? fail("You must set apk file path to 'apkanalyzer.apk_file'") end cmd = command_apkanalyzer || DEFAULT_COMMAND o, e, s = Open3.capture3("#{cmd} -h dex references #{apk_file};") if s.success? message = "#### Number of method references\n\n" message << "| Dex file | count |\n" message << "| --- | --- |\n" o.each_line do |line| v = line.chomp.split(" ") message << "| #{v[0]} | #{v[1]} |\n" end message << "\n" markdown(message) else fail(e) end end
permissions()
click to toggle source
Print permissions used by application. @return [String]
# File lib/apkanalyzer/plugin.rb, line 62 def permissions if apk_file.nil? fail("You must set apk file path to 'apkanalyzer.apk_file'") end cmd = command_apkanalyzer || DEFAULT_COMMAND o, e, s = Open3.capture3("#{cmd} -h manifest permissions #{apk_file};") return if o.empty? if s.success? message = "#### Permissions\n\n" message << "| Permissions |\n" message << "| --- |\n" o.each_line do |line| message << "| #{line.chomp} |\n" end message << "\n" markdown(message) else fail(e) end end