Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
ad0e6511
Commit
ad0e6511
authored
Oct 31, 2022
by
vvb2060
Committed by
John Wu
Dec 27, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Stop embedding stub.apk in magiskinit
parent
a4a73445
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
55 additions
and
79 deletions
+55
-79
MagiskInstaller.kt
...n/java/com/topjohnwu/magisk/core/tasks/MagiskInstaller.kt
+1
-1
build.py
build.py
+0
-15
Setup.kt
buildSrc/src/main/java/Setup.kt
+38
-44
embed.hpp
native/src/base/include/embed.hpp
+0
-2
init.cpp
native/src/init/init.cpp
+0
-10
init.hpp
native/src/init/init.hpp
+0
-1
rootdir.cpp
native/src/init/rootdir.cpp
+8
-1
avd_magisk.sh
scripts/avd_magisk.sh
+1
-2
avd_patch.sh
scripts/avd_patch.sh
+4
-2
boot_patch.sh
scripts/boot_patch.sh
+3
-1
No files found.
app/src/main/java/com/topjohnwu/magisk/core/tasks/MagiskInstaller.kt
View file @
ad0e6511
...
@@ -131,7 +131,7 @@ abstract class MagiskInstallImpl protected constructor(
...
@@ -131,7 +131,7 @@ abstract class MagiskInstallImpl protected constructor(
}
}
// Extract scripts
// Extract scripts
for
(
script
in
listOf
(
"util_functions.sh"
,
"boot_patch.sh"
,
"addon.d.sh"
))
{
for
(
script
in
listOf
(
"util_functions.sh"
,
"boot_patch.sh"
,
"addon.d.sh"
,
"stub.apk"
))
{
val
dest
=
File
(
installDir
,
script
)
val
dest
=
File
(
installDir
,
script
)
context
.
assets
.
open
(
script
).
writeTo
(
dest
)
context
.
assets
.
open
(
script
).
writeTo
(
dest
)
}
}
...
...
build.py
View file @
ad0e6511
...
@@ -309,13 +309,7 @@ def binary_dump(src, var_name, compressor=xz):
...
@@ -309,13 +309,7 @@ def binary_dump(src, var_name, compressor=xz):
def
dump_bin_header
(
args
):
def
dump_bin_header
(
args
):
stub
=
op
.
join
(
config
[
'outdir'
],
f
'stub-{"release" if args.release else "debug"}.apk'
)
if
not
op
.
exists
(
stub
):
error
(
'Build stub APK before building "magiskinit"'
)
mkdir_p
(
native_gen_path
)
mkdir_p
(
native_gen_path
)
with
open
(
stub
,
'rb'
)
as
src
:
text
=
binary_dump
(
src
,
'manager_xz'
)
write_if_diff
(
op
.
join
(
native_gen_path
,
'binaries.h'
),
text
)
for
arch
in
archs
:
for
arch
in
archs
:
preload
=
op
.
join
(
'native'
,
'out'
,
arch
,
'libinit-ld.so'
)
preload
=
op
.
join
(
'native'
,
'out'
,
arch
,
'libinit-ld.so'
)
with
open
(
preload
,
'rb'
)
as
src
:
with
open
(
preload
,
'rb'
)
as
src
:
...
@@ -432,11 +426,6 @@ def build_app(args):
...
@@ -432,11 +426,6 @@ def build_app(args):
build_apk
(
args
,
'app'
)
build_apk
(
args
,
'app'
)
def
build_stub
(
args
):
header
(
'* Building the stub app'
)
build_apk
(
args
,
'stub'
)
def
cleanup
(
args
):
def
cleanup
(
args
):
support_targets
=
{
'native'
,
'java'
}
support_targets
=
{
'native'
,
'java'
}
if
args
.
target
:
if
args
.
target
:
...
@@ -554,7 +543,6 @@ def patch_avd_ramdisk(args):
...
@@ -554,7 +543,6 @@ def patch_avd_ramdisk(args):
def
build_all
(
args
):
def
build_all
(
args
):
build_stub
(
args
)
build_binary
(
args
)
build_binary
(
args
)
build_app
(
args
)
build_app
(
args
)
...
@@ -582,9 +570,6 @@ binary_parser.set_defaults(func=build_binary)
...
@@ -582,9 +570,6 @@ binary_parser.set_defaults(func=build_binary)
app_parser
=
subparsers
.
add_parser
(
'app'
,
help
=
'build the Magisk app'
)
app_parser
=
subparsers
.
add_parser
(
'app'
,
help
=
'build the Magisk app'
)
app_parser
.
set_defaults
(
func
=
build_app
)
app_parser
.
set_defaults
(
func
=
build_app
)
stub_parser
=
subparsers
.
add_parser
(
'stub'
,
help
=
'build the stub app'
)
stub_parser
.
set_defaults
(
func
=
build_stub
)
avd_parser
=
subparsers
.
add_parser
(
avd_parser
=
subparsers
.
add_parser
(
'emulator'
,
help
=
'setup AVD for development'
)
'emulator'
,
help
=
'setup AVD for development'
)
avd_parser
.
add_argument
(
'-s'
,
'--skip'
,
action
=
'store_true'
,
avd_parser
.
add_argument
(
'-s'
,
'--skip'
,
action
=
'store_true'
,
...
...
buildSrc/src/main/java/Setup.kt
View file @
ad0e6511
...
@@ -15,8 +15,7 @@ import org.gradle.api.tasks.Copy
...
@@ -15,8 +15,7 @@ import org.gradle.api.tasks.Copy
import
org.gradle.api.tasks.Delete
import
org.gradle.api.tasks.Delete
import
org.gradle.api.tasks.StopExecutionException
import
org.gradle.api.tasks.StopExecutionException
import
org.gradle.api.tasks.Sync
import
org.gradle.api.tasks.Sync
import
org.gradle.kotlin.dsl.filter
import
org.gradle.kotlin.dsl.*
import
org.gradle.kotlin.dsl.named
import
org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
import
org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
import
java.io.ByteArrayInputStream
import
java.io.ByteArrayInputStream
import
java.io.ByteArrayOutputStream
import
java.io.ByteArrayOutputStream
...
@@ -40,7 +39,7 @@ private fun BaseExtension.kotlinOptions(configure: Action<KotlinJvmOptions>) =
...
@@ -40,7 +39,7 @@ private fun BaseExtension.kotlinOptions(configure: Action<KotlinJvmOptions>) =
}
}
private
val
Project
.
android
:
BaseAppModuleExtension
private
val
Project
.
android
:
BaseAppModuleExtension
get
()
=
extensions
.
getByName
(
"android"
)
as
BaseAppModuleExtension
get
()
=
extensions
[
"android"
]
as
BaseAppModuleExtension
fun
Project
.
setupCommon
()
{
fun
Project
.
setupCommon
()
{
androidBase
{
androidBase
{
...
@@ -112,14 +111,14 @@ private fun Project.setupAppCommon() {
...
@@ -112,14 +111,14 @@ private fun Project.setupAppCommon() {
}
}
buildTypes
{
buildTypes
{
signingConfigs
.
getByName
(
"config"
)
.
also
{
signingConfigs
[
"config"
]
.
also
{
getByName
(
"debug"
)
{
debug
{
signingConfig
=
if
(
it
.
storeFile
?.
exists
()
==
true
)
it
signingConfig
=
if
(
it
.
storeFile
?.
exists
()
==
true
)
it
else
signingConfigs
.
getByName
(
"debug"
)
else
signingConfigs
[
"debug"
]
}
}
getByName
(
"release"
)
{
release
{
signingConfig
=
if
(
it
.
storeFile
?.
exists
()
==
true
)
it
signingConfig
=
if
(
it
.
storeFile
?.
exists
()
==
true
)
it
else
signingConfigs
.
getByName
(
"debug"
)
else
signingConfigs
[
"debug"
]
}
}
}
}
}
}
...
@@ -147,7 +146,7 @@ private fun Project.setupAppCommon() {
...
@@ -147,7 +146,7 @@ private fun Project.setupAppCommon() {
fun
Project
.
setupApp
()
{
fun
Project
.
setupApp
()
{
setupAppCommon
()
setupAppCommon
()
val
syncLibs
=
tasks
.
register
(
"syncLibs"
,
Sync
::
class
.
java
)
{
val
syncLibs
by
tasks
.
registering
(
Sync
::
class
)
{
into
(
"src/main/jniLibs"
)
into
(
"src/main/jniLibs"
)
into
(
"armeabi-v7a"
)
{
into
(
"armeabi-v7a"
)
{
from
(
rootProject
.
file
(
"native/out/armeabi-v7a"
))
{
from
(
rootProject
.
file
(
"native/out/armeabi-v7a"
))
{
...
@@ -180,8 +179,23 @@ fun Project.setupApp() {
...
@@ -180,8 +179,23 @@ fun Project.setupApp() {
}
}
}
}
val
sync
Assets
=
tasks
.
register
(
"syncAssets"
,
Sync
::
class
.
java
)
{
val
sync
Resources
by
tasks
.
registering
(
Sync
::
class
)
{
dependsOn
(
syncLibs
)
dependsOn
(
syncLibs
)
into
(
"src/main/resources/META-INF/com/google/android"
)
from
(
rootProject
.
file
(
"scripts/update_binary.sh"
))
{
rename
{
"update-binary"
}
}
from
(
rootProject
.
file
(
"scripts/flash_script.sh"
))
{
rename
{
"updater-script"
}
}
}
android
.
applicationVariants
.
all
{
val
variantCapped
=
name
.
capitalize
(
Locale
.
ROOT
)
val
variantLowered
=
name
.
toLowerCase
(
Locale
.
ROOT
)
val
syncAssets
=
tasks
.
register
(
"sync${variantCapped}Assets"
,
Sync
::
class
)
{
dependsOn
(
syncResources
)
inputs
.
property
(
"version"
,
Config
.
version
)
inputs
.
property
(
"version"
,
Config
.
version
)
inputs
.
property
(
"versionCode"
,
Config
.
versionCode
)
inputs
.
property
(
"versionCode"
,
Config
.
versionCode
)
into
(
"src/main/assets"
)
into
(
"src/main/assets"
)
...
@@ -196,6 +210,14 @@ fun Project.setupApp() {
...
@@ -196,6 +210,14 @@ fun Project.setupApp() {
include
(
"kernel_data_key.vbprivk"
,
"kernel.keyblock"
)
include
(
"kernel_data_key.vbprivk"
,
"kernel.keyblock"
)
}
}
}
}
val
task
=
tasks
.
getByPath
(
":stub:package$variantCapped"
)
dependsOn
(
task
)
val
apk
=
task
.
outputs
.
files
.
asFileTree
.
filter
{
it
.
name
.
endsWith
(
".apk"
)
}
from
(
apk
)
{
rename
{
"stub.apk"
}
}
filesMatching
(
"**/util_functions.sh"
)
{
filesMatching
(
"**/util_functions.sh"
)
{
filter
{
filter
{
it
.
replace
(
it
.
replace
(
...
@@ -207,35 +229,7 @@ fun Project.setupApp() {
...
@@ -207,35 +229,7 @@ fun Project.setupApp() {
}
}
}
}
val
syncResources
=
tasks
.
register
(
"syncResources"
,
Sync
::
class
.
java
)
{
preBuildProvider
.
get
().
dependsOn
(
syncAssets
)
dependsOn
(
syncAssets
)
into
(
"src/main/resources/META-INF/com/google/android"
)
from
(
rootProject
.
file
(
"scripts/update_binary.sh"
))
{
rename
{
"update-binary"
}
}
from
(
rootProject
.
file
(
"scripts/flash_script.sh"
))
{
rename
{
"updater-script"
}
}
}
android
.
applicationVariants
.
all
{
val
variantCapped
=
name
.
capitalize
(
Locale
.
ROOT
)
val
variantLowered
=
name
.
toLowerCase
(
Locale
.
ROOT
)
val
copyStub
=
tasks
.
register
(
"copy${variantCapped}StubApk"
,
Copy
::
class
.
java
)
{
dependsOn
(
syncResources
)
into
(
"src/main/assets"
)
from
(
rootProject
.
file
(
"out/stub-${variantLowered}.apk"
))
{
rename
{
"stub.apk"
}
}
onlyIf
{
if
(
inputs
.
sourceFiles
.
files
.
size
!=
1
)
throw
StopExecutionException
(
"Please build stub first! (./build.py stub)"
)
true
}
}
preBuildProvider
.
get
().
dependsOn
(
copyStub
)
val
keysDir
=
rootProject
.
file
(
"tools/keys"
)
val
keysDir
=
rootProject
.
file
(
"tools/keys"
)
val
outSrcDir
=
File
(
buildDir
,
"generated/source/keydata/$name"
)
val
outSrcDir
=
File
(
buildDir
,
"generated/source/keydata/$name"
)
...
...
native/src/base/include/embed.hpp
View file @
ad0e6511
#include <binaries.h>
#if defined(__arm__)
#if defined(__arm__)
#include <armeabi-v7a_binaries.h>
#include <armeabi-v7a_binaries.h>
#elif defined(__aarch64__)
#elif defined(__aarch64__)
...
...
native/src/init/init.cpp
View file @
ad0e6511
...
@@ -61,10 +61,6 @@ void restore_ramdisk_init() {
...
@@ -61,10 +61,6 @@ void restore_ramdisk_init() {
}
}
}
}
int
dump_manager
(
const
char
*
path
,
mode_t
mode
)
{
return
dump_bin
(
manager_xz
,
sizeof
(
manager_xz
),
path
,
mode
);
}
int
dump_preload
(
const
char
*
path
,
mode_t
mode
)
{
int
dump_preload
(
const
char
*
path
,
mode_t
mode
)
{
return
dump_bin
(
init_ld_xz
,
sizeof
(
init_ld_xz
),
path
,
mode
);
return
dump_bin
(
init_ld_xz
,
sizeof
(
init_ld_xz
),
path
,
mode
);
}
}
...
@@ -87,12 +83,6 @@ int main(int argc, char *argv[]) {
...
@@ -87,12 +83,6 @@ int main(int argc, char *argv[]) {
if
(
name
==
"magisk"
sv
)
if
(
name
==
"magisk"
sv
)
return
magisk_proxy_main
(
argc
,
argv
);
return
magisk_proxy_main
(
argc
,
argv
);
if
(
argc
>
1
&&
argv
[
1
]
==
"-x"
sv
)
{
if
(
argc
>
2
&&
argv
[
2
]
==
"manager"
sv
)
return
dump_manager
(
argv
[
3
],
0644
);
return
1
;
}
if
(
getpid
()
!=
1
)
if
(
getpid
()
!=
1
)
return
1
;
return
1
;
...
...
native/src/init/init.hpp
View file @
ad0e6511
...
@@ -36,7 +36,6 @@ bool check_two_stage();
...
@@ -36,7 +36,6 @@ bool check_two_stage();
void
setup_klog
();
void
setup_klog
();
const
char
*
backup_init
();
const
char
*
backup_init
();
void
restore_ramdisk_init
();
void
restore_ramdisk_init
();
int
dump_manager
(
const
char
*
path
,
mode_t
mode
);
int
dump_preload
(
const
char
*
path
,
mode_t
mode
);
int
dump_preload
(
const
char
*
path
,
mode_t
mode
);
/***************
/***************
...
...
native/src/init/rootdir.cpp
View file @
ad0e6511
...
@@ -151,6 +151,7 @@ static void patch_socket_name(const char *path) {
...
@@ -151,6 +151,7 @@ static void patch_socket_name(const char *path) {
static
void
extract_files
(
bool
sbin
)
{
static
void
extract_files
(
bool
sbin
)
{
const
char
*
m32
=
sbin
?
"/sbin/magisk32.xz"
:
"magisk32.xz"
;
const
char
*
m32
=
sbin
?
"/sbin/magisk32.xz"
:
"magisk32.xz"
;
const
char
*
m64
=
sbin
?
"/sbin/magisk64.xz"
:
"magisk64.xz"
;
const
char
*
m64
=
sbin
?
"/sbin/magisk64.xz"
:
"magisk64.xz"
;
const
char
*
stub_xz
=
sbin
?
"/sbin/stub.xz"
:
"stub.xz"
;
if
(
access
(
m32
,
F_OK
)
==
0
)
{
if
(
access
(
m32
,
F_OK
)
==
0
)
{
auto
magisk
=
mmap_data
(
m32
);
auto
magisk
=
mmap_data
(
m32
);
...
@@ -172,7 +173,13 @@ static void extract_files(bool sbin) {
...
@@ -172,7 +173,13 @@ static void extract_files(bool sbin) {
xsymlink
(
"./magisk32"
,
"magisk"
);
xsymlink
(
"./magisk32"
,
"magisk"
);
}
}
dump_manager
(
"stub.apk"
,
0
);
{
auto
stub
=
mmap_data
(
stub_xz
);
unlink
(
stub_xz
);
int
fd
=
xopen
(
"stub.apk"
,
O_WRONLY
|
O_CREAT
,
0
);
unxz
(
fd
,
stub
.
buf
,
stub
.
sz
);
close
(
fd
);
}
}
}
#define ROOTMIR MIRRDIR "/system_root"
#define ROOTMIR MIRRDIR "/system_root"
...
...
scripts/avd_magisk.sh
View file @
ad0e6511
...
@@ -120,6 +120,7 @@ fi
...
@@ -120,6 +120,7 @@ fi
# Magisk stuff
# Magisk stuff
mkdir
-p
$MAGISKBIN
2>/dev/null
mkdir
-p
$MAGISKBIN
2>/dev/null
unzip
-oj
magisk.apk
'assets/*.sh'
-d
$MAGISKBIN
unzip
-oj
magisk.apk
'assets/*.sh'
-d
$MAGISKBIN
unzip
-oj
magisk.apk
'assets/stub.apk'
-d
$MAGISKTMP
mkdir
$NVBASE
/modules 2>/dev/null
mkdir
$NVBASE
/modules 2>/dev/null
mkdir
$POSTFSDATAD
2>/dev/null
mkdir
$POSTFSDATAD
2>/dev/null
mkdir
$SERVICED
2>/dev/null
mkdir
$SERVICED
2>/dev/null
...
@@ -143,8 +144,6 @@ ln -s ./magisk $MAGISKTMP/resetprop
...
@@ -143,8 +144,6 @@ ln -s ./magisk $MAGISKTMP/resetprop
ln
-s
./magisk
$MAGISKTMP
/magiskhide
ln
-s
./magisk
$MAGISKTMP
/magiskhide
ln
-s
./magiskpolicy
$MAGISKTMP
/supolicy
ln
-s
./magiskpolicy
$MAGISKTMP
/supolicy
./magiskinit
-x
manager
$MAGISKTMP
/stub.apk
mkdir
-p
$MAGISKTMP
/.magisk/mirror
mkdir
-p
$MAGISKTMP
/.magisk/mirror
mkdir
$MAGISKTMP
/.magisk/block
mkdir
$MAGISKTMP
/.magisk/block
touch
$MAGISKTMP
/.magisk/config
touch
$MAGISKTMP
/.magisk/config
...
...
scripts/avd_patch.sh
View file @
ad0e6511
...
@@ -43,7 +43,7 @@ if [ -z "$FIRST_STAGE" ]; then
...
@@ -43,7 +43,7 @@ if [ -z "$FIRST_STAGE" ]; then
fi
fi
# Extract files from APK
# Extract files from APK
unzip
-oj
magisk.apk
'assets/util_functions.sh'
unzip
-oj
magisk.apk
'assets/util_functions.sh'
'assets/stub.apk'
.
./util_functions.sh
.
./util_functions.sh
api_level_arch_detect
api_level_arch_detect
...
@@ -65,6 +65,7 @@ touch config
...
@@ -65,6 +65,7 @@ touch config
./magiskboot
compress
=
xz magisk32 magisk32.xz
./magiskboot
compress
=
xz magisk32 magisk32.xz
./magiskboot
compress
=
xz magisk64 magisk64.xz
./magiskboot
compress
=
xz magisk64 magisk64.xz
./magiskboot
compress
=
xz stub.apk stub.xz
export
KEEPVERITY
=
false
export
KEEPVERITY
=
false
export
KEEPFORCEENCRYPT
=
true
export
KEEPFORCEENCRYPT
=
true
...
@@ -75,10 +76,11 @@ export KEEPFORCEENCRYPT=true
...
@@ -75,10 +76,11 @@ export KEEPFORCEENCRYPT=true
"mkdir 0750 overlay.d/sbin"
\
"mkdir 0750 overlay.d/sbin"
\
"add 0644 overlay.d/sbin/magisk32.xz magisk32.xz"
\
"add 0644 overlay.d/sbin/magisk32.xz magisk32.xz"
\
"add 0644 overlay.d/sbin/magisk64.xz magisk64.xz"
\
"add 0644 overlay.d/sbin/magisk64.xz magisk64.xz"
\
"add 0644 overlay.d/sbin/stub.xz stub.xz"
\
"patch"
\
"patch"
\
"backup ramdisk.cpio.orig"
\
"backup ramdisk.cpio.orig"
\
"mkdir 000 .backup"
\
"mkdir 000 .backup"
\
"add 000 .backup/.magisk config"
"add 000 .backup/.magisk config"
rm
-f
ramdisk.cpio.orig config magisk
*
.xz
rm
-f
ramdisk.cpio.orig config magisk
*
.xz
stub.xz
./magiskboot
compress
=
gzip
ramdisk.cpio ramdisk.cpio.gz
./magiskboot
compress
=
gzip
ramdisk.cpio ramdisk.cpio.gz
scripts/boot_patch.sh
View file @
ad0e6511
...
@@ -164,6 +164,7 @@ if [ -f magisk64 ]; then
...
@@ -164,6 +164,7 @@ if [ -f magisk64 ]; then
./magiskboot
compress
=
xz magisk64 magisk64.xz
./magiskboot
compress
=
xz magisk64 magisk64.xz
unset
SKIP64
unset
SKIP64
fi
fi
./magiskboot
compress
=
xz stub.apk stub.xz
./magiskboot cpio ramdisk.cpio
\
./magiskboot cpio ramdisk.cpio
\
"add 0750
$INIT
magiskinit"
\
"add 0750
$INIT
magiskinit"
\
...
@@ -171,12 +172,13 @@ fi
...
@@ -171,12 +172,13 @@ fi
"mkdir 0750 overlay.d/sbin"
\
"mkdir 0750 overlay.d/sbin"
\
"
$SKIP32
add 0644 overlay.d/sbin/magisk32.xz magisk32.xz"
\
"
$SKIP32
add 0644 overlay.d/sbin/magisk32.xz magisk32.xz"
\
"
$SKIP64
add 0644 overlay.d/sbin/magisk64.xz magisk64.xz"
\
"
$SKIP64
add 0644 overlay.d/sbin/magisk64.xz magisk64.xz"
\
"add 0644 overlay.d/sbin/stub.xz stub.xz"
\
"patch"
\
"patch"
\
"backup ramdisk.cpio.orig"
\
"backup ramdisk.cpio.orig"
\
"mkdir 000 .backup"
\
"mkdir 000 .backup"
\
"add 000 .backup/.magisk config"
"add 000 .backup/.magisk config"
rm
-f
ramdisk.cpio.orig config magisk
*
.xz
rm
-f
ramdisk.cpio.orig config magisk
*
.xz
stub.xz
#################
#################
# Binary Patches
# Binary Patches
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment