From 02f09247aebcea2cbba79bbeaef06f31af9895b3 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Mon, 25 Jul 2022 00:33:00 +0800 Subject: [PATCH] Use striped so for debug build (#2047) --- daemon/build.gradle.kts | 3 --- .../org/lsposed/lspd/service/LogcatService.java | 7 +++++-- dex2oat/src/main/cpp/CMakeLists.txt | 4 +++- magisk-loader/build.gradle.kts | 14 ++++++-------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/daemon/build.gradle.kts b/daemon/build.gradle.kts index 88e42517..c40b4d51 100644 --- a/daemon/build.gradle.kts +++ b/daemon/build.gradle.kts @@ -89,9 +89,6 @@ fun afterEval() = android.applicationVariants.forEach { variant -> val variantCapped = variant.name.capitalize(Locale.ROOT) val variantLowered = variant.name.toLowerCase(Locale.ROOT) - tasks["merge${variantCapped}JniLibFolders"].enabled = false - tasks["merge${variantCapped}NativeLibs"].enabled = false - val app = rootProject.project(":app").extensions.getByName("android") val outSrcDir = file("$buildDir/generated/source/signInfo/${variantLowered}") val outSrc = file("$outSrcDir/org/lsposed/lspd/util/SignInfo.java") diff --git a/daemon/src/main/java/org/lsposed/lspd/service/LogcatService.java b/daemon/src/main/java/org/lsposed/lspd/service/LogcatService.java index 6f615798..06c09587 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/LogcatService.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/LogcatService.java @@ -1,7 +1,9 @@ package org.lsposed.lspd.service; import android.annotation.SuppressLint; +import android.os.Build; import android.os.ParcelFileDescriptor; +import android.os.Process; import android.os.SELinux; import android.os.SystemProperties; import android.system.Os; @@ -50,8 +52,9 @@ public class LogcatService implements Runnable { @SuppressLint("UnsafeDynamicallyLoadedCode") public LogcatService() { - String libraryPath = System.getProperty("lsp.library.path"); - System.load(libraryPath + "/" + System.mapLibraryName("daemon")); + String classPath = System.getProperty("java.class.path"); + var abi = Process.is64Bit() ? Build.SUPPORTED_64_BIT_ABIS[0] : Build.SUPPORTED_32_BIT_ABIS[0]; + System.load(classPath + "!/lib/" + abi + "/" + System.mapLibraryName("daemon")); ConfigFileManager.moveLogDir(); // Meizu devices set this prop and prevent debug logs from being recorded diff --git a/dex2oat/src/main/cpp/CMakeLists.txt b/dex2oat/src/main/cpp/CMakeLists.txt index ca3f0c82..b706f6af 100644 --- a/dex2oat/src/main/cpp/CMakeLists.txt +++ b/dex2oat/src/main/cpp/CMakeLists.txt @@ -1,7 +1,9 @@ project(dex2oat) cmake_minimum_required(VERSION 3.4.1) -add_executable(dex2oat dex2oat.c) +add_library(dex2oat SHARED dex2oat.c) + +target_link_options(dex2oat PRIVATE "-fPIE") target_link_libraries(dex2oat log) diff --git a/magisk-loader/build.gradle.kts b/magisk-loader/build.gradle.kts index 6deaf2fe..d492113f 100644 --- a/magisk-loader/build.gradle.kts +++ b/magisk-loader/build.gradle.kts @@ -144,7 +144,7 @@ fun afterEval() = android.applicationVariants.forEach { variant -> "assemble$variantCapped", ":app:package$buildTypeCapped", ":daemon:package$buildTypeCapped", - ":dex2oat:merge${buildTypeCapped}NativeLibs" + ":dex2oat:strip${buildTypeCapped}DebugSymbols" ) into(magiskDir) from("${rootProject.projectDir}/README.md") @@ -199,16 +199,14 @@ fun afterEval() = android.applicationVariants.forEach { variant -> rename(".*\\.apk", "daemon.apk") } into("lib") { - from("${buildDir}/intermediates/cmake/$variantCapped/obj") { + from("${buildDir}/intermediates/stripped_native_libs/$variantCapped/out/lib") { include("**/liblspd.so") } - from("${project(":daemon").buildDir}/intermediates/cmake/$buildTypeLowered/obj") { - include("**/libdaemon.so") - } } into("bin") { - from("${project(":dex2oat").buildDir}/intermediates/cmake/$buildTypeLowered/obj") { - include("**/dex2oat") + from("${project(":dex2oat").buildDir}/intermediates/stripped_native_libs/$buildTypeLowered/out/lib") { + include("**/libdex2oat.so") + rename { n -> n.replace("libdex2oat.so", "dex2oat") } } } val dexOutPath = if (buildTypeLowered == "release") @@ -289,7 +287,7 @@ val pushDaemonNative = task("pushDaemonNative") { } outputStream.toString().trim() } - workingDir("${project(":daemon").buildDir}/intermediates/cmake/debug/obj/$abi") + workingDir("${project(":daemon").buildDir}/intermediates/stripped_native_libs/debug/out/lib/$abi") } commandLine(adb, "push", "libdaemon.so", "/data/local/tmp/libdaemon.so") }