Module: ApkToJava::Operations

Includes:
EnvSetup
Defined in:
lib/apk_to_java.rb

Constant Summary collapse

TEMP_DIR =
'apkToJavaTmp'

Instance Method Summary collapse

Methods included from EnvSetup

#env_setup?, #initialize_setup, #supported_os

Instance Method Details

#clean_upObject



60
61
62
63
64
# File 'lib/apk_to_java.rb', line 60

def clean_up
  print_info 'Cleaning the mess..'
  `rm -rf #{TEMP_DIR}`
  print_success 'done!'
end

#convert_to_dex(apk) ⇒ Object



70
71
72
73
74
75
76
77
# File 'lib/apk_to_java.rb', line 70

def convert_to_dex(apk)
  print_info 'Converting to dex..'
  copy_apk apk
  apk_name = apk.split('/').last.split('.').first
  unzip apk_name
  print_success 'Done!'
  path_to_dex
end

#copy_apk(apk) ⇒ Object



38
39
40
41
# File 'lib/apk_to_java.rb', line 38

def copy_apk(apk)
  `mkdir #{TEMP_DIR}`
  `cp #{apk} #{TEMP_DIR}/`
end

#create_jar(dex_file) ⇒ Object



52
53
54
# File 'lib/apk_to_java.rb', line 52

def create_jar(dex_file)
  `#{supported_os.dex2jar} #{dex_file} --force`
end

#dex_to_jar(apk) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/apk_to_java.rb', line 79

def dex_to_jar(apk)
  dex_file = convert_to_dex apk
  print_info 'Converting dex to jar..'
  create_jar dex_file
  print_success 'Done!'
  path_to_jar
end

#open_code_in_gui(jar_file) ⇒ Object



66
67
68
# File 'lib/apk_to_java.rb', line 66

def open_code_in_gui(jar_file)
  `#{supported_os.jadx}  #{jar_file} > /dev/null 2>&1 & disown`
end

#path_to_dexObject



48
49
50
# File 'lib/apk_to_java.rb', line 48

def path_to_dex
  `pwd`.chomp + "/#{TEMP_DIR}/classes.dex"
end

#path_to_jarObject



56
57
58
# File 'lib/apk_to_java.rb', line 56

def path_to_jar
  `pwd`.chomp + '/classes-dex2jar.jar'
end

#unzip(apk_name) ⇒ Object



43
44
45
46
# File 'lib/apk_to_java.rb', line 43

def unzip(apk_name)
  `mv #{TEMP_DIR}/#{apk_name}.apk #{TEMP_DIR}/#{apk_name}.zip`
  `unzip #{TEMP_DIR}/#{apk_name}.zip -d #{TEMP_DIR}/`
end

#view_as_java_code(apk) ⇒ Object



87
88
89
90
91
92
93
# File 'lib/apk_to_java.rb', line 87

def view_as_java_code(apk)
  jar_file = dex_to_jar apk
  clean_up
  print_info 'Opening in gui interface..'
  print_success 'Please be patient, apkToJava might take some time to load your project in gui interface'
  open_code_in_gui jar_file
end