From 76b4966007369ccde2cbc84b3860f707323b835d Mon Sep 17 00:00:00 2001 From: cfig Date: Wed, 12 Oct 2016 12:31:54 +0800 Subject: [PATCH] support Android N recovery binaries --- build.gradle | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index d285c4e..eb2004b 100644 --- a/build.gradle +++ b/build.gradle @@ -34,9 +34,10 @@ model { def workdir='build/unzip_boot' project.ext.rootWorkDir = new File(workdir).getAbsolutePath() def defaultRootDir = workdir + "/root" -String[] bins = [ "sh", "logcat", "logd", "linker", "toolbox", "toybox", "applypatch" ] -//String[] libs = [ "libdl.so", "libutils.so", "libc++.so", "libc.so", "libm.so", "libz.so", "libstdc++.so", "libcutils.so", "libselinux.so", "liblog.so", "libpcre.so", "libsysutils.so", "libnl.so", "libbase.so", "libbacktrace.so", "libunwind.so" ] -String[] libs = [ "libdl.so", "libutils.so", "libc++.so", "libc.so", "libm.so", "libz.so", "libstdc++.so", "libcutils.so", "libselinux.so", "liblog.so", "libpcre.so", "libsysutils.so", "libnl.so", "libbase.so", "libbacktrace.so", "libunwind.so", "libcrypto.so", "libpackagelistparser.so" ] +def sdkVersion = 7; +String[] bins = [ "sh", "logcat", "logd", "linker", "toolbox", "toybox", "applypatch", "debuggerd", "reboot" ] +String[] libs_6 = [ "libdl.so", "libutils.so", "libc++.so", "libc.so", "libm.so", "libz.so", "libstdc++.so", "libcutils.so", "libselinux.so", "liblog.so", "libpcre.so", "libsysutils.so", "libnl.so", "libbase.so", "libbacktrace.so", "libunwind.so" ] +String[] libs = [ "libdl.so", "libutils.so", "libc++.so", "libc.so", "libm.so", "libz.so", "libstdc++.so", "libcutils.so", "libselinux.so", "liblog.so", "libpcre.so", "libsysutils.so", "libnl.so", "libbase.so", "libbacktrace.so", "libunwind.so", "libcrypto.so", "libpackagelistparser.so", "libpcrecpp.so", "liblzma.so" ] boolean gDebug=true String activeImg = null; if (new File("boot.img").exists()) { @@ -44,7 +45,6 @@ if (new File("boot.img").exists()) { } else if (new File("recovery.img").exists()) { activeImg = "recovery.img"; } -def sdkVersion = 7; project.ext.outClearIMg = new File(String.format("%s.clear", activeImg)).getAbsolutePath() project.ext.mkbootimgBin = new File("src/mkbootimg/mkbootimg").getAbsolutePath() println("Active image target: " + activeImg); @@ -299,7 +299,7 @@ task addSystemBin(type: Copy) { from System.getProperty("ANDROID_PRODUCT_OUT") + '/system/bin' into workdir + "/root/system/bin" include { details -> - inTargetList(details.file.name, bins) + inTargetList(details.file.name, "bin") } } @@ -307,11 +307,26 @@ task addSystemLib(type: Copy) { from System.getProperty("ANDROID_PRODUCT_OUT") + '/system/lib' into workdir + "/root/system/lib" include { details -> - inTargetList(details.file.name, libs) + inTargetList(details.file.name, "lib") + } +} + +boolean inTargetList(String file, String inType) { + switch (inType) { + "bin": + return inArray(file, bins); + "lib": + if (sdkVersion <= 6) { + return inArray(file, libs_6); + } else { + return inArray(file, libs); + } + default: + throw new RuntimeException("illegal type"); } } -boolean inTargetList(String file, String[] inArray) { +boolean inArray(String file, String[] inArray) { for (String item : inArray) { if (item.equals(file)) { return true;