mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-04-29 22:14:27 +02:00
Skip download in lsposed setup test
Download the zip during build time
This commit is contained in:
parent
bf591fca12
commit
ad95e8951b
@ -12,7 +12,8 @@ import org.junit.Assert.assertTrue
|
|||||||
interface BaseTest {
|
interface BaseTest {
|
||||||
val instrumentation: Instrumentation
|
val instrumentation: Instrumentation
|
||||||
get() = InstrumentationRegistry.getInstrumentation()
|
get() = InstrumentationRegistry.getInstrumentation()
|
||||||
val context: Context get() = instrumentation.targetContext
|
val appContext: Context get() = instrumentation.targetContext
|
||||||
|
val testContext: Context get() = instrumentation.context
|
||||||
val uiAutomation: UiAutomation get() = instrumentation.uiAutomation
|
val uiAutomation: UiAutomation get() = instrumentation.uiAutomation
|
||||||
val device: UiDevice get() = UiDevice.getInstance(instrumentation)
|
val device: UiDevice get() = UiDevice.getInstance(instrumentation)
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import androidx.annotation.Keep
|
|||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import com.topjohnwu.magisk.core.BuildConfig.APP_PACKAGE_NAME
|
import com.topjohnwu.magisk.core.BuildConfig.APP_PACKAGE_NAME
|
||||||
import com.topjohnwu.magisk.core.di.ServiceLocator
|
|
||||||
import com.topjohnwu.magisk.core.download.DownloadNotifier
|
import com.topjohnwu.magisk.core.download.DownloadNotifier
|
||||||
import com.topjohnwu.magisk.core.download.DownloadProcessor
|
import com.topjohnwu.magisk.core.download.DownloadProcessor
|
||||||
import com.topjohnwu.magisk.core.ktx.cachedFile
|
import com.topjohnwu.magisk.core.ktx.cachedFile
|
||||||
@ -34,9 +33,6 @@ class Environment : BaseTest {
|
|||||||
fun lsposed(): Boolean {
|
fun lsposed(): Boolean {
|
||||||
return Build.VERSION.SDK_INT >= 27 && Build.VERSION.SDK_INT <= 34
|
return Build.VERSION.SDK_INT >= 27 && Build.VERSION.SDK_INT <= 34
|
||||||
}
|
}
|
||||||
|
|
||||||
private const val LSPOSED_URL =
|
|
||||||
"https://github.com/LSPosed/LSPosed/releases/download/v1.9.2/LSPosed-v1.9.2-7024-zygisk-release.zip"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object TimberLog : CallbackList<String>(Runnable::run) {
|
object TimberLog : CallbackList<String>(Runnable::run) {
|
||||||
@ -60,13 +56,13 @@ class Environment : BaseTest {
|
|||||||
assumeTrue(lsposed())
|
assumeTrue(lsposed())
|
||||||
|
|
||||||
val notify = object : DownloadNotifier {
|
val notify = object : DownloadNotifier {
|
||||||
override val context = this@Environment.context
|
override val context = appContext
|
||||||
override fun notifyUpdate(id: Int, editor: (Notification.Builder) -> Unit) {}
|
override fun notifyUpdate(id: Int, editor: (Notification.Builder) -> Unit) {}
|
||||||
}
|
}
|
||||||
val processor = DownloadProcessor(notify)
|
val processor = DownloadProcessor(notify)
|
||||||
val zip = context.cachedFile("lsposed.zip")
|
val zip = appContext.cachedFile("lsposed.zip")
|
||||||
runBlocking {
|
runBlocking {
|
||||||
ServiceLocator.networkService.fetchFile(LSPOSED_URL).byteStream().use {
|
testContext.assets.open("lsposed.zip").use {
|
||||||
processor.handleModule(it, zip.toUri())
|
processor.handleModule(it, zip.toUri())
|
||||||
}
|
}
|
||||||
assertTrue(
|
assertTrue(
|
||||||
@ -82,7 +78,7 @@ class Environment : BaseTest {
|
|||||||
assertTrue(
|
assertTrue(
|
||||||
"App hiding failed",
|
"App hiding failed",
|
||||||
AppMigration.patchAndHide(
|
AppMigration.patchAndHide(
|
||||||
context = context,
|
context = appContext,
|
||||||
label = "Settings",
|
label = "Settings",
|
||||||
pkg = "repackaged.$APP_PACKAGE_NAME"
|
pkg = "repackaged.$APP_PACKAGE_NAME"
|
||||||
)
|
)
|
||||||
@ -95,7 +91,7 @@ class Environment : BaseTest {
|
|||||||
runBlocking {
|
runBlocking {
|
||||||
assertTrue(
|
assertTrue(
|
||||||
"App restoration failed",
|
"App restoration failed",
|
||||||
AppMigration.restoreApp(context)
|
AppMigration.restoreApp(appContext)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setupAppCommon()
|
setupTestApk()
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(libs.test.runner)
|
implementation(libs.test.runner)
|
||||||
|
@ -115,6 +115,27 @@ fun Project.setupCommon() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Project.downloadFile(url: String, checksum: String): File {
|
||||||
|
val file = layout.buildDirectory.file(checksum).get().asFile
|
||||||
|
if (file.exists()) {
|
||||||
|
val md = MessageDigest.getInstance("SHA-256")
|
||||||
|
file.inputStream().use { md.update(it.readAllBytes()) }
|
||||||
|
val hash = HexFormat.of().formatHex(md.digest())
|
||||||
|
if (hash != checksum) {
|
||||||
|
file.delete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!file.exists()) {
|
||||||
|
file.parentFile.mkdirs()
|
||||||
|
URI(url).toURL().openStream().use { dl ->
|
||||||
|
file.outputStream().use {
|
||||||
|
dl.copyTo(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return file
|
||||||
|
}
|
||||||
|
|
||||||
const val BUSYBOX_DOWNLOAD_URL =
|
const val BUSYBOX_DOWNLOAD_URL =
|
||||||
"https://github.com/topjohnwu/magisk-files/releases/download/files/busybox-1.36.1.1.zip"
|
"https://github.com/topjohnwu/magisk-files/releases/download/files/busybox-1.36.1.1.zip"
|
||||||
const val BUSYBOX_ZIP_CHECKSUM =
|
const val BUSYBOX_ZIP_CHECKSUM =
|
||||||
@ -144,24 +165,7 @@ fun Project.setupCoreLib() {
|
|||||||
|
|
||||||
val downloadBusybox by tasks.registering(Copy::class) {
|
val downloadBusybox by tasks.registering(Copy::class) {
|
||||||
dependsOn(syncLibs)
|
dependsOn(syncLibs)
|
||||||
val bb = layout.buildDirectory.file(BUSYBOX_ZIP_CHECKSUM).get().asFile
|
from(zipTree(downloadFile(BUSYBOX_DOWNLOAD_URL, BUSYBOX_ZIP_CHECKSUM)))
|
||||||
if (bb.exists()) {
|
|
||||||
val md = MessageDigest.getInstance("SHA-256")
|
|
||||||
bb.inputStream().use { md.update(it.readAllBytes()) }
|
|
||||||
val hash = HexFormat.of().formatHex(md.digest())
|
|
||||||
if (hash != BUSYBOX_ZIP_CHECKSUM) {
|
|
||||||
bb.delete()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!bb.exists()) {
|
|
||||||
bb.parentFile.mkdirs()
|
|
||||||
URI(BUSYBOX_DOWNLOAD_URL).toURL().openStream().use { dl ->
|
|
||||||
bb.outputStream().use {
|
|
||||||
dl.copyTo(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
from(zipTree(bb))
|
|
||||||
include(abiList.map { "$it/libbusybox.so" })
|
include(abiList.map { "$it/libbusybox.so" })
|
||||||
into("src/main/jniLibs")
|
into("src/main/jniLibs")
|
||||||
}
|
}
|
||||||
@ -462,3 +466,23 @@ fun Project.setupStubApk() {
|
|||||||
delete.addAll(listOf("src/debug/AndroidManifest.xml", "src/release/AndroidManifest.xml"))
|
delete.addAll(listOf("src/debug/AndroidManifest.xml", "src/release/AndroidManifest.xml"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const val LSPOSED_DOWNLOAD_URL =
|
||||||
|
"https://github.com/LSPosed/LSPosed/releases/download/v1.9.2/LSPosed-v1.9.2-7024-zygisk-release.zip"
|
||||||
|
const val LSPOSED_CHECKSUM =
|
||||||
|
"0ebc6bcb465d1c4b44b7220ab5f0252e6b4eb7fe43da74650476d2798bb29622"
|
||||||
|
|
||||||
|
fun Project.setupTestApk() {
|
||||||
|
setupAppCommon()
|
||||||
|
|
||||||
|
androidApp.applicationVariants.all {
|
||||||
|
val variantCapped = name.replaceFirstChar { it.uppercase() }
|
||||||
|
val dlTask by tasks.register("download${variantCapped}Lsposed", Sync::class) {
|
||||||
|
from(downloadFile(LSPOSED_DOWNLOAD_URL, LSPOSED_CHECKSUM)) {
|
||||||
|
rename { "lsposed.zip" }
|
||||||
|
}
|
||||||
|
into("src/${this@all.name}/assets")
|
||||||
|
}
|
||||||
|
mergeAssetsProvider.configure { dependsOn(dlTask) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user