mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-22 16:07:39 +00:00
Enable Zygisk by default in emulators
Make sure CI tests Zygisk
This commit is contained in:
parent
6e7a995716
commit
5c92d39498
@ -3,6 +3,7 @@ use std::fs::File;
|
|||||||
use std::io;
|
use std::io;
|
||||||
use std::sync::{Mutex, OnceLock};
|
use std::sync::{Mutex, OnceLock};
|
||||||
|
|
||||||
|
use crate::get_prop;
|
||||||
use base::{cstr, Directory, ResultExt, Utf8CStr, Utf8CStrBuf, Utf8CStrBufRef, WalkResult};
|
use base::{cstr, Directory, ResultExt, Utf8CStr, Utf8CStrBuf, Utf8CStrBufRef, WalkResult};
|
||||||
|
|
||||||
use crate::logging::{magisk_logging, zygisk_logging};
|
use crate::logging::{magisk_logging, zygisk_logging};
|
||||||
@ -13,10 +14,20 @@ pub static MAGISKD: OnceLock<MagiskD> = OnceLock::new();
|
|||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct MagiskD {
|
pub struct MagiskD {
|
||||||
pub logd: Mutex<RefCell<Option<File>>>,
|
pub logd: Mutex<RefCell<Option<File>>>,
|
||||||
|
is_emulator: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn daemon_entry() {
|
pub fn daemon_entry() {
|
||||||
let magiskd = MagiskD::default();
|
let mut qemu = get_prop(cstr!("ro.kernel.qemu"), false);
|
||||||
|
if qemu.is_empty() {
|
||||||
|
qemu = get_prop(cstr!("ro.boot.qemu"), false);
|
||||||
|
}
|
||||||
|
let is_emulator = qemu == "1";
|
||||||
|
|
||||||
|
let magiskd = MagiskD {
|
||||||
|
logd: Default::default(),
|
||||||
|
is_emulator,
|
||||||
|
};
|
||||||
magiskd.start_log_daemon();
|
magiskd.start_log_daemon();
|
||||||
MAGISKD.set(magiskd).ok();
|
MAGISKD.set(magiskd).ok();
|
||||||
magisk_logging();
|
magisk_logging();
|
||||||
@ -29,10 +40,14 @@ pub fn zygisk_entry() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_magiskd() -> &'static MagiskD {
|
pub fn get_magiskd() -> &'static MagiskD {
|
||||||
MAGISKD.get().unwrap()
|
unsafe { MAGISKD.get().unwrap_unchecked() }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MagiskD {}
|
impl MagiskD {
|
||||||
|
pub fn is_emulator(&self) -> bool {
|
||||||
|
self.is_emulator
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn find_apk_path(pkg: &[u8], data: &mut [u8]) -> usize {
|
pub fn find_apk_path(pkg: &[u8], data: &mut [u8]) -> usize {
|
||||||
use WalkResult::*;
|
use WalkResult::*;
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
#include <socket.hpp>
|
#include <socket.hpp>
|
||||||
#include <base.hpp>
|
#include <base.hpp>
|
||||||
|
|
||||||
|
#include "core.hpp"
|
||||||
|
|
||||||
#define DB_VERSION 12
|
#define DB_VERSION 12
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@ -116,7 +118,7 @@ db_settings::db_settings() {
|
|||||||
data[SU_MULTIUSER_MODE] = MULTIUSER_MODE_OWNER_ONLY;
|
data[SU_MULTIUSER_MODE] = MULTIUSER_MODE_OWNER_ONLY;
|
||||||
data[SU_MNT_NS] = NAMESPACE_MODE_REQUESTER;
|
data[SU_MNT_NS] = NAMESPACE_MODE_REQUESTER;
|
||||||
data[DENYLIST_CONFIG] = false;
|
data[DENYLIST_CONFIG] = false;
|
||||||
data[ZYGISK_CONFIG] = false;
|
data[ZYGISK_CONFIG] = rust::get_magiskd().is_emulator();
|
||||||
}
|
}
|
||||||
|
|
||||||
int db_settings::get_idx(string_view key) const {
|
int db_settings::get_idx(string_view key) const {
|
||||||
|
@ -48,6 +48,7 @@ pub mod ffi {
|
|||||||
fn get_log_pipe(self: &MagiskD) -> i32;
|
fn get_log_pipe(self: &MagiskD) -> i32;
|
||||||
fn close_log_pipe(self: &MagiskD);
|
fn close_log_pipe(self: &MagiskD);
|
||||||
fn setup_logfile(self: &MagiskD);
|
fn setup_logfile(self: &MagiskD);
|
||||||
|
fn is_emulator(self: &MagiskD) -> bool;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +66,9 @@ if [ -d /dev/avd-magisk ]; then
|
|||||||
rm -rf /dev/avd-magisk 2>/dev/null
|
rm -rf /dev/avd-magisk 2>/dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Make sure boot completed props are not set to 1
|
||||||
|
setprop sys.boot_completed 0
|
||||||
|
|
||||||
# Mount /cache if not already mounted
|
# Mount /cache if not already mounted
|
||||||
if ! grep -q ' /cache ' /proc/mounts; then
|
if ! grep -q ' /cache ' /proc/mounts; then
|
||||||
mount -t tmpfs -o 'mode=0755' tmpfs /cache
|
mount -t tmpfs -o 'mode=0755' tmpfs /cache
|
||||||
|
@ -35,7 +35,7 @@ cleanup() {
|
|||||||
wait_for_boot() {
|
wait_for_boot() {
|
||||||
adb wait-for-device
|
adb wait-for-device
|
||||||
while true; do
|
while true; do
|
||||||
if [ "stopped" = "$(adb exec-out getprop init.svc.bootanim)" ]; then
|
if [ "1" = "$(adb exec-out getprop sys.boot_completed)" ]; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
sleep 2
|
sleep 2
|
||||||
|
Loading…
x
Reference in New Issue
Block a user