11require_relative 'apk_to_java/pretty_printer'
2+ require_relative 'apk_to_java/mac_setup'
3+ require_relative 'apk_to_java/linux_setup'
4+ require_relative 'apk_to_java/os'
25
36module ApkToJava
47 include ApkToJava ::PrettyPrinter
5- DEX_TO_JAR = '/usr/local/Cellar/dex2jar/2.0/bin/d2j-dex2jar'
6- JADX = '/usr/local/Cellar/jadx/bin/jadx-gui'
7-
8- module Setup
9- def install_dex2jar
10- print_info ( "Installing dex2jar.." )
11- `ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null && brew install dex2jar`
12- print_success "Done!"
13- end
14-
15- def install_jadx
16- print_info ( "Installing jadx.." )
17- `cd /usr/local/Cellar && wget https://github.com/skylot/jadx/releases/download/v0.6.0/jadx-0.6.0.zip && unzip jadx-0.6.0.zip -d jadx/ && rm jadx-0.6.0.zip && cd -`
18- print_success "Done!"
19- end
20-
21- def jadx_installed?
22- File . exists? ApkToJava ::JADX
8+ module EnvSetup
9+ def supported_os
10+ if ApkToJava ::OS . mac?
11+ ApkToJava ::MacSetup . new
12+ elsif ApkToJava ::OS . linux?
13+ ApkToJava ::LinuxSetup . new
14+ end
2315 end
2416
25- def dex_to_jar_installed?
26- File . exists? ApkToJava ::DEX_TO_JAR
17+ def initialize_setup
18+ print_info ( "Initializing setup!!" )
19+ os = supported_os
20+ if !os . nil?
21+ os . install_dex2jar if !os . dex_to_jar_installed?
22+ os . install_jadx if !os . jadx_installed?
23+ print_success ( "Setup done :)" )
24+ else
25+ print_error "Sorry! apkToJava supports only MAC and Linux"
26+ end
2727 end
2828
2929 def env_setup?
30- dex_to_jar_installed? && jadx_installed?
31- end
32-
33- def initialize_setup
34- print_info ( "Initializing setup!!" )
35- install_dex2jar if !dex_to_jar_installed?
36- install_jadx if !jadx_installed?
37- print_success ( "Setup done :)" )
30+ supported_os . env_setup?
3831 end
3932 end
4033
4134 module Operations
4235 TEMP_DIR = 'apkToJavaTmp'
36+ include ApkToJava ::EnvSetup
4337
4438 def copy_apk ( apk )
4539 `mkdir #{ TEMP_DIR } `
@@ -51,16 +45,12 @@ def unzip(apk_name)
5145 `unzip #{ TEMP_DIR } /#{ apk_name } .zip -d #{ TEMP_DIR } /`
5246 end
5347
54- def create_dex
55- `#{ ApkToJava ::DEX_TO_JAR } #{ TEMP_DIR } /classes.dex`
56- end
57-
5848 def path_to_dex
5949 `pwd` . chomp + "/#{ TEMP_DIR } /classes.dex"
6050 end
6151
6252 def create_jar ( dex_file )
63- `#{ ApkToJava :: DEX_TO_JAR } #{ dex_file } --force`
53+ `#{ supported_os . dex2jar } #{ dex_file } --force`
6454 end
6555
6656 def path_to_jar
@@ -74,15 +64,14 @@ def clean_up
7464 end
7565
7666 def open_code_in_gui ( jar_file )
77- `#{ ApkToJava :: JADX } #{ jar_file } &`
67+ `#{ supported_os . jadx } #{ jar_file } &`
7868 end
7969
8070 def convert_to_dex ( apk )
8171 print_info "Converting to dex.."
8272 copy_apk apk
8373 apk_name = apk . split ( '/' ) . last . split ( '.' ) . first
8474 unzip apk_name
85- create_dex
8675 print_success "Done!"
8776 path_to_dex
8877 end
0 commit comments