From df7b9a617eaf0399b0f360fba1a8600e64ceb8a5 Mon Sep 17 00:00:00 2001 From: Ben Holland Date: Thu, 5 Mar 2015 16:12:07 -0600 Subject: [PATCH] Fix system apps directory path for newer (API 21+) Android builds Android API 21+ seems to have changed the build directory structure for intermdiates slightly, running PScout on API 21 fails to find system apps so this fix adds a secondary directory check in case PScout is run over new builds, also added return line in println for consistent output formatting --- bin/getclasses.pl | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/bin/getclasses.pl b/bin/getclasses.pl index bf7b210..d6579b2 100755 --- a/bin/getclasses.pl +++ b/bin/getclasses.pl @@ -9,11 +9,22 @@ while () { chomp($_); if ($_ =~ m/ \/system\/app\/(.*).apk/) { - $sysapp = $1; + $sysapp = $1; # gets the system app directory path, ie "Calendar/Calendar" if (-e "$mydroid_dir$sysapp_dir$sysapp"."_intermediates/classes-full-debug.jar") { system("cp $mydroid_dir$sysapp_dir$sysapp"."_intermediates/classes-full-debug.jar $sysapp.jar"); + } elsif (-e "$mydroid_dir$sysapp_dir$sysapp"."_intermediates/classes.jar") { + system("cp $mydroid_dir$sysapp_dir$sysapp"."_intermediates/classes.jar $sysapp.jar"); } else { - print "???Cannot find compiled classes for $sysapp???"; + # newer Android builds removed the subdirectory, so trim the path + @fw_parts = split m%/%, $fw; # splits on / + $fw = shift @fw_parts; # grabs first array element, ie "Calendar" + if (-e "$mydroid_dir$sysapp_dir$sysapp"."_intermediates/classes-full-debug.jar") { + system("cp $mydroid_dir$sysapp_dir$sysapp"."_intermediates/classes-full-debug.jar $sysapp.jar"); + } elsif (-e "$mydroid_dir$sysapp_dir$sysapp"."_intermediates/classes.jar") { + system("cp $mydroid_dir$sysapp_dir$sysapp"."_intermediates/classes.jar $sysapp.jar"); + } else { + print "???Cannot find compiled classes for $sysapp???\n"; + } } } elsif ($_ =~ m/ \/system\/framework\/(.*).jar/) { $fw = $1;