topjohnwu
8e82113bce
Release new canary build
2024-08-23 01:07:45 -07:00
vvb2060
f723ef153b
zygisk_node: skip magisk32 if 64bit zygote only
2024-08-22 11:58:29 -07:00
topjohnwu
1dc723fb6d
Attempt to reuse cache on Windows
2024-08-21 22:06:12 -07:00
topjohnwu
8f271c2575
Custom sccache support in CI
2024-08-21 16:51:30 -07:00
topjohnwu
7cf56b4406
Simplify ramdisk test
2024-08-21 16:46:37 -07:00
Wang Han
c2eb603957
Require GMS to be system app
...
Fixes https://github.com/topjohnwu/Magisk/issues/8279 .
2024-08-20 10:36:14 -07:00
topjohnwu
e6bd2ff60f
Fix stock image restore
...
Fix #8211
2024-08-20 02:23:20 -07:00
topjohnwu
5604074eba
Fix module auto install
...
Fix #8208
2024-08-20 01:09:25 -07:00
topjohnwu
3f061c1a1e
Update dependencies
2024-08-19 17:54:02 -07:00
LoveSy
55e78a7b1a
BYD XDJA container support
2024-08-19 17:50:16 -07:00
vvb2060
000f1d6041
Revert "Don't support alternative binary paths"
...
This reverts commit 1eeb2a34a1 .
2024-08-19 11:52:55 -07:00
vvb2060
2cbec20238
find_boot_image: test GKI 1.0
2024-08-19 03:05:24 -07:00
vvb2060
4b724c7257
find_boot_image: test previous kernels (<=4.19)
2024-08-19 03:05:24 -07:00
vvb2060
ab04c6ab39
find_boot_image: keep symlink
2024-08-19 03:05:24 -07:00
topjohnwu
821a6c6954
Only save gradle cache on asset build job
2024-08-18 21:42:28 -07:00
topjohnwu
5f27a62221
Use gradle version catalog
2024-08-18 13:12:23 -07:00
topjohnwu
c76cc4c6bd
Update cuttlefish hostside tools
2024-08-16 15:58:29 -07:00
𝗦𝗵𝗟𝗲𝗿𝗣
52b75c53b6
Update TR Locales
2024-08-16 11:38:36 -07:00
topjohnwu
9db2e99086
Test 16k on Cuttlefish
2024-08-15 22:51:40 -07:00
LoveSy
e9e2ecf2dd
load partition_map only once
2024-08-15 10:10:18 -07:00
LoveSy
9a9e617c35
Use find_if
2024-08-15 10:10:18 -07:00
LoveSy
3a0becc783
Use parse_impl for partition_map
2024-08-15 10:10:18 -07:00
ChsBuffer
1f974cb220
Use androidboot.partition_map as a fallback for matching partition names in the preinit finding.
2024-08-15 10:10:18 -07:00
LoveSy
1db80228e8
Move worker mount to magiskinit
2024-08-15 02:39:51 -07:00
LoveSy
838e1e254d
Move devpts mount to magiskinit
2024-08-15 02:39:51 -07:00
topjohnwu
554eda8fe1
Switch to gmake on macOS
2024-08-15 02:37:59 -07:00
topjohnwu
2bdc047c4d
Call sqlite3_free only on sqlite3 malloc-ed objects
2024-08-14 13:23:59 -07:00
topjohnwu
e64f59ce5b
Make CI faster
2024-08-14 00:21:45 -07:00
topjohnwu
b8140ad4e6
Re-enable Windows CI
2024-08-13 21:12:06 -07:00
LoveSy
5a55483698
Set -fno-threadsafe-statics for crt0
...
Since crt0 has no pthread support, we don't need lock for statics.
2024-08-12 10:57:45 -07:00
vvb2060
2d341863f5
set MAGISKTMP
2024-08-12 02:05:58 -07:00
LoveSy
278046becb
Fix wrong cxx_extern return value
...
This fix UB
2024-08-12 02:05:26 -07:00
topjohnwu
5c0497354f
Temporarily disable Windows CI
2024-08-12 02:04:13 -07:00
topjohnwu
98c258df93
Update AGP
2024-08-11 04:30:01 -07:00
topjohnwu
c578cccfd5
Update to ONDK r27.4
2024-08-11 04:16:19 -07:00
Andrew Gunnerson
07835a3e0e
util_functions.sh: Fix syntax error due to missing then
...
Signed-off-by: Andrew Gunnerson <accounts+github@chiller3.com >
2024-08-06 01:16:19 -07:00
topjohnwu
09131aca89
Fix find_boot_image
...
Close #8255
2024-08-05 11:24:30 -07:00
topjohnwu
9ce998a6df
Fix arab strings
2024-08-04 01:54:28 -07:00
topjohnwu
ca36b42d79
Update release.sh
2024-08-03 01:55:03 -07:00
topjohnwu
37df39ec37
Address clippy warnings
2024-08-03 01:52:16 -07:00
topjohnwu
1701361a73
Update cargo dependencies
2024-08-03 01:49:14 -07:00
topjohnwu
4c14ae33f5
Properly configure Rust builds
2024-08-03 01:28:53 -07:00
topjohnwu
d4a9ef7b7f
Cleanup build.py
2024-08-03 00:05:49 -07:00
topjohnwu
1539cfe888
Support setting custom ABI list
...
Also stop building riscv64 by default
2024-08-01 14:33:08 -07:00
topjohnwu
9093be1329
Run commands through shell on Windows
2024-07-31 17:21:18 -07:00
topjohnwu
606d076251
Build debug with thin lto
2024-07-31 17:00:01 -07:00
残页
46a34e19bc
Check vendor boot ramdisk table size
2024-07-31 16:59:51 -07:00
topjohnwu
5ac7dc0b37
Support vendor boot unpack/repack
...
Fix #6460 , close #6620
2024-07-30 04:00:12 -07:00
topjohnwu
3b27de3715
Output logs to files
2024-07-25 03:48:13 -07:00
topjohnwu
939bfac920
Make sure version is fetched correctly
2024-07-25 03:04:27 -07:00
muhammadbahaa2001
f601bf12d5
Updated Arabic
2024-07-25 03:03:49 -07:00
topjohnwu
0495468d02
Release new canary build
2024-07-24 23:13:21 -07:00
topjohnwu
300a2a242c
Add release script
2024-07-24 23:10:57 -07:00
topjohnwu
33aebb5976
Stop embedding executables
2024-07-24 22:49:48 -07:00
pndwal
b3d6809c0b
Update README.MD
...
Remove redundant Canary changelog link
2024-07-24 19:04:50 -07:00
LoveSy
461f7e9f89
Use metadata even if it is f2fs
2024-07-24 19:02:35 -07:00
LoveSy
9cc50b20d8
Correctly handle comments in sepolicy.rule
2024-07-24 19:02:25 -07:00
LoveSy
f488e9df8f
Fix sepolicy rule path
2024-07-24 19:02:12 -07:00
LoveSy
0dc596e206
Update Chinese translation
2024-07-24 19:01:59 -07:00
topjohnwu
c3bf03190b
Use K2 in kapt
2024-07-24 17:06:41 -07:00
topjohnwu
021ae891a9
Update dependencies
2024-07-24 16:53:15 -07:00
topjohnwu
9c03514eb1
Create :app:clean task
2024-07-24 16:46:47 -07:00
topjohnwu
eb74b266e1
Do not modify args
...
Close #8242
2024-07-24 16:37:22 -07:00
topjohnwu
80eb6ff25a
Update README
2024-07-23 21:37:04 -07:00
topjohnwu
7b81e2d2d1
Release new canary build
2024-07-23 17:23:50 -07:00
topjohnwu
a8789073f1
Run copy_preinit_files in run_migrations
2024-07-23 02:21:49 -07:00
残页
c8fe0f5524
Catch possible exceptions when the receiver is already unregistered
2024-07-23 02:06:15 -07:00
vvb2060
d33b077a13
Remove NVBASE
...
We only move /cache/data_adb/magisk and /data/magisk to /data/adb/magisk (#7638 ), so NVBASE is redundant and we can just use MAGISKBIN.
2024-07-23 02:03:47 -07:00
vvb2060
2282365cf8
clean code
2024-07-23 02:02:56 -07:00
vvb2060
9a00b7b942
update copy_preinit_files
2024-07-23 02:02:56 -07:00
vvb2060
d54baadbed
Use ro.crypto.metadata.enabled
2024-07-23 02:02:56 -07:00
LoveSy
0869a90fe3
Use symlink to setup preinit
2024-07-23 02:02:56 -07:00
LoveSy
2754b1dcf8
Add comment about the choice
2024-07-23 02:02:56 -07:00
LoveSy
0db6314661
Refactor preinit finding
2024-07-23 02:02:56 -07:00
topjohnwu
b5d2ef18e8
Move more data and function into HookContext
2024-07-22 20:36:55 -07:00
topjohnwu
6e22476acc
Update test scripts
2024-07-22 03:39:04 -07:00
topjohnwu
b26db8cee6
Switch over to ANDROID_HOME
...
Keep ANDROID_SDK_ROOT as a fallback
2024-07-21 00:53:13 -07:00
topjohnwu
33cb39c8af
Minor code changes for hook.cpp
2024-07-21 00:52:43 -07:00
LoveSy
f247759a6e
No need _orig to call backup
2024-07-20 21:36:26 -07:00
LoveSy
de7e5bdfe7
Update comments
2024-07-20 21:36:26 -07:00
LoveSy
53a8ba8cfe
Use hookJniNativeMethods to hook zygote pre/post fork
2024-07-20 21:36:26 -07:00
LoveSy
f2d057baba
Refine hookJniNativeMethods
2024-07-20 21:36:26 -07:00
LoveSy
93bcf2cd25
Correct debug symbol configuration
2024-07-20 20:29:58 -07:00
LoveSy
6d82515cfc
No default features of pb-rs
2024-07-20 20:29:38 -07:00
topjohnwu
a177d3b022
Fix AVD test on API 23
2024-07-20 15:08:06 -07:00
topjohnwu
92b2e06e57
Increase cgu on debug builds
2024-07-20 04:59:20 -07:00
topjohnwu
f919bb0e99
Minor changes
2024-07-20 04:52:25 -07:00
topjohnwu
054971e899
Add permissions
2024-07-20 03:43:06 -07:00
topjohnwu
93c3d36452
Add Cuttlefish tests in CI
2024-07-20 03:10:18 -07:00
topjohnwu
4c38af994d
Sync native and Java implementation
2024-07-19 23:22:08 -07:00
topjohnwu
bbb8efe92c
Support Cuttlefish
2024-07-19 22:08:35 -07:00
topjohnwu
659dd09723
Do not modify system-images contents when patching
2024-07-19 16:47:12 -07:00
LoveSy
4931825912
Fix zygisk v5
2024-07-17 10:52:16 -07:00
topjohnwu
ef81cdab4f
Prebuild Busybox
...
Prebuild with tools in ndk-box-kitchen
2024-07-17 02:58:31 -07:00
topjohnwu
7c0b25cad9
Release new canary build
2024-07-12 15:54:16 -07:00
topjohnwu
b38ab2a7d6
Use K2 to compile buildSrc
...
Make all Kotlin source code build with K2.
K2 seems to have bugs with lazy property assignment, revert it to set().
2024-07-12 15:27:04 -07:00
LoveSy
a97191052b
Upgrade gradle
2024-07-12 13:46:06 -07:00
vvb2060
2963d4ca9e
Rewrite get_manager
2024-07-12 13:45:48 -07:00
vvb2060
6aab856de7
Enhanced denylist app id tracking
2024-07-12 13:45:48 -07:00
topjohnwu
94d1c66f8a
Make AVD test timeout at 10 minutes
2024-07-12 11:39:11 -07:00
topjohnwu
7ff4d7608e
Update dependencies
2024-07-11 23:28:01 -07:00
sn-o-w
46ef915c83
Update Romanian
2024-07-11 22:31:32 -07:00
LoveSy
63b0a0d96b
Fix incomplete native debug symbols
...
See https://github.com/android/ndk/issues/2039
2024-07-11 22:31:09 -07:00
LoveSy
ea4cabdfc5
Use simple property assignment
2024-07-11 22:28:59 -07:00
LoveSy
0185ddf577
Fix building on higher version of jdk
2024-07-11 22:28:59 -07:00
topjohnwu
ddae568741
Move SplashActivity logic into core module
2024-07-11 22:08:01 -07:00
topjohnwu
fcb7ebb090
Cleanup resources
2024-07-11 17:58:52 -07:00
topjohnwu
8d446fcc16
Move all core code into the same parent package
2024-07-11 16:49:01 -07:00
topjohnwu
881d3b5221
App migration minor refactoring
2024-07-11 16:28:56 -07:00
topjohnwu
fe9ec3bc6d
Move app initialization routine into core module
2024-07-11 16:10:49 -07:00
topjohnwu
480198dcd0
Improve package migration
2024-07-11 15:50:40 -07:00
topjohnwu
4ab7bc0d97
Minor SettingsItem cleanup
2024-07-11 02:44:38 -07:00
topjohnwu
7173693d1b
Use platform LocaleManager if possible
2024-07-11 02:44:38 -07:00
topjohnwu
6b81716440
Update stub implementation
2024-07-11 02:44:38 -07:00
topjohnwu
88e8e15607
Create singleton AppContext
2024-07-11 02:44:38 -07:00
LoveSy
69181a6b72
Fix wrong sepolicy rule
2024-07-08 12:09:45 -07:00
Wang Han
b11b81122a
Tighten rules for tmpfs file
...
Before magiskd is executed, all files in magisk tmpfs still shares
tmpfs label. This commit tightens the rule to only allow init, zygote
and shell to access magisk tmpfs files. Zygotes rules is needed
because lower Android versions don't have rule for zygote itself
using memfd even memfd is supported in kernel.
2024-07-08 12:06:49 -07:00
Wang Han
648e3ee36b
Update build.yml
2024-07-08 12:02:51 -07:00
LoveSy
724b94f320
Update README.MD ( #8192 )
...
Co-authored-by: 南宫雪珊 <vvb2060@gmail.com >
2024-07-08 12:02:14 -07:00
topjohnwu
a6e65f9a7e
Fix building release builds
2024-07-06 01:55:09 -07:00
topjohnwu
af5c4d09c4
Re-enable nonTransitiveRClass
2024-07-06 01:31:43 -07:00
topjohnwu
872394cb58
Decouple core module from AppCompatActivity
2024-07-05 00:49:26 -07:00
topjohnwu
fcbbe9a22e
Move :app to :app:apk
2024-07-04 02:27:20 -07:00
topjohnwu
b168163ef0
Move :stub to :app:stub
2024-07-04 00:21:34 -07:00
topjohnwu
3e38b8fed1
Separate core codebase into its own module
...
- Separate UI specific code and resources outside of the core
application logic
- Allow most of the code to move forward and use KSP for annotation
processing and isolate rotton code that is stuck with databinding
- Make full UI rewrite more feasible
2024-07-04 00:02:42 -07:00
kubalav
f90c548f27
Update Slovak translation
2024-07-03 22:55:31 -07:00
igor
c981c40218
Update Portuguese translation
2024-07-03 22:55:12 -07:00
Rom
dcbf37c5e8
Update French translation
...
To match with changes of "Add option to disable filename randomization"
2024-07-03 22:54:47 -07:00
topjohnwu
300b233a27
Simplify MediaStoreUtils
2024-07-02 17:15:27 -07:00
topjohnwu
e32cd03d0b
Update docs to cover riscv64
2024-07-02 14:53:46 -07:00
LoveSy
a07b9315a5
Add riscv64 support
2024-07-02 14:34:22 -07:00
topjohnwu
e9694c6195
Add option to disable filename randomization
2024-07-02 14:28:26 -07:00
Wang Han
4a2a37c87a
Catch PendingIntent.CanceledException caused by send()
...
Accidentally changed in 050a073 .
2024-07-02 14:24:27 -07:00
vvb2060
7dca5b831a
check empty init_boot partition
...
For upgrading devices that continue to use Android 12 or older kernel versions, the generic ramdisk remains where it was with no requirement for a new init_boot image.
2024-07-02 14:23:28 -07:00
topjohnwu
be5ff68140
Exclude apache commons codec resources
2024-07-01 18:56:08 -07:00
topjohnwu
59f40d5fe5
Move manager.sh to app_functions.sh
2024-07-01 18:42:05 -07:00
topjohnwu
1fbd053a42
Prevent polluting global shell env
2024-07-01 18:20:21 -07:00
topjohnwu
966c6314f8
Cleanup configs
2024-07-01 17:23:48 -07:00
Li Hua
c92204c724
Update Simplified Chinese Translation
...
Signed-off-by: Li Hua <lihua@email.com >
2024-07-01 14:51:06 -07:00
igor
bb9947d4d2
Update Portuguese translation
2024-07-01 14:50:52 -07:00
Wang Han
7c8cdb4ad6
Set default visibility of restart button to GONE
...
This fixes the issue that button still shows when installation fails.
2024-07-01 14:50:34 -07:00
Wang Han
bd7f9c9e46
Unset FLAG_ACTIVITY_NO_HISTORY for SuRequestActivity
...
This fixes device credential confirm activity on OnePlus devices
because SuRequestActivity is accidentally finished before a valid
response is delivered to it.
2024-07-01 14:50:09 -07:00
vvb2060
9a33a4dfe2
Fix StackOverflowError
...
Now field from base class java.io.ByteArrayOutputStream shadows the property with custom getter from derived class com.topjohnwu.magisk.core.utils.AXML.RawByteStream. This behavior will be changed soon in favor of the property. Please use explicit cast to java.io.ByteArrayOutputStream if you wish to preserve current behavior. See https://youtrack.jetbrains.com/issue/KT-55017 for details
2024-07-01 14:36:20 -07:00
topjohnwu
47e918bc92
Fix vbmeta.img tar patching
2024-07-01 03:20:09 -07:00
Wang Han
c194168d9b
Fix item match when extracting lib from stub
...
Close #8083 .
2024-06-29 22:14:24 -07:00
topjohnwu
cacc60b1ac
Migrate to Apache commons-compress
...
Close #8121
2024-06-29 22:11:02 -07:00
topjohnwu
52063b3652
Update to Kotlin 2.0.0
2024-06-29 17:04:40 -07:00
topjohnwu
85a4eaff59
Release new canary build
2024-06-28 16:16:41 -07:00
topjohnwu
45fa1fce70
Update libsu
2024-06-28 15:45:40 -07:00
loselarry
2112c916f5
chore: remove repetitive word
...
Signed-off-by: loselarry <bikangning@yeah.net >
2024-06-22 19:17:20 -07:00
LoveSy
d6e159bff9
Use pidfd in more senarios
2024-06-22 19:16:58 -07:00
LoveSy
2f710a564f
allow more -v for build.py for more verbose output
2024-06-22 19:16:37 -07:00
Fontan030
27cfc4945c
Kazakh translation
2024-06-22 18:53:14 -07:00
eklerismunir
7cdada92c8
Improve azerbaijani locales and add the missing strings
2024-06-22 18:52:59 -07:00
topjohnwu
8f1e57d4f9
16k pages on x64 is broken
2024-06-22 18:51:44 -07:00
topjohnwu
8178666b49
Add 16k page testing in CI
2024-06-21 03:13:16 -07:00
topjohnwu
313532dcaa
Disable verbose output by default
2024-06-21 02:45:48 -07:00
topjohnwu
2f8f3dc266
Add new test cases
2024-06-20 21:39:30 -07:00
topjohnwu
df6ada5ce3
Update avd_test to support custom type
2024-06-20 18:25:49 -07:00
topjohnwu
a89b9e6af1
Support 16K page size
2024-06-18 22:04:53 -07:00
topjohnwu
23ed275614
Update to ONDK r27.2
2024-06-18 14:34:30 -07:00
topjohnwu
cfd1e0cf22
Update libsu and dependencies
2024-06-18 11:26:18 -07:00
topjohnwu
eb400f19b1
Support Python 3.12+
2024-06-18 03:36:16 -07:00
LoveSy
19f15f16f6
Use icf to further minimize binary size
2024-06-10 14:47:26 -07:00
topjohnwu
e158cfddfa
Update system_properties
2024-06-07 13:51:24 -07:00
pndwal
d0cf93a08d
Fix typos install.md
2024-06-06 21:12:18 -07:00
LoveSy
08ad0e74dd
Upgrade deps
...
Co-authored-by: vvb2060 <vvb2060@gmail.com >
2024-06-06 21:11:52 -07:00
topjohnwu
722374a024
Update system_properties
2024-06-05 18:42:30 -07:00
LoveSy
c6f0762510
Use pidfd_open for setns
...
which is more efficient on newer kernel
2024-05-20 03:26:55 +08:00
LoveSy
941a363c5a
Support waiting on non-exist prop
2024-05-18 13:55:33 +08:00
Arbri çoçka
2afcdc64a0
Update strings.xml sq
2024-05-18 13:52:31 +08:00
VD $ VD171 @ Priv8
3c66c4bbc5
Update PORTUGUESE translation
2024-05-18 13:52:14 +08:00
VD $ VD171 @ Priv8
9f5cd5e1cc
Update PORTUGUESE translation
2024-05-18 13:52:14 +08:00
kubalav
a35f2bb73b
Update Slovak translation
2024-05-18 13:51:59 +08:00
topjohnwu
6cf00130f4
Check Magisk version instead of app version
2024-05-15 12:42:55 +08:00
topjohnwu
6c27ba6b88
Rename db entry name
2024-05-15 12:42:55 +08:00
vvb2060
dd3b9980e7
app: add safe mode config to menu
2024-05-15 12:42:55 +08:00
vvb2060
02e189a029
core: add safe mode config to db
2024-05-15 12:42:55 +08:00
topjohnwu
72b8d12ee4
Update development guide
2024-05-11 20:40:33 -07:00
topjohnwu
eed03080c1
Update to ONDK r27.1
2024-05-09 09:42:40 -07:00
LoveSy
090cb4b0f9
Upgrade AGP to 8.4.0
2024-05-09 09:42:27 -07:00
topjohnwu
6f2c76b898
Fix build script
2024-05-09 02:19:24 -07:00
topjohnwu
f61827cbec
Switch rustup_wrapper to Rust implementation
...
For better Windows portability
2024-05-09 02:19:07 -07:00
topjohnwu
3f2264f2c7
Support rustup wrapper
2024-05-09 00:34:12 -07:00
topjohnwu
c1cadf4bdc
Update build.py to use pathlib
2024-05-09 00:31:41 -07:00
Rodrigo Martínez
0e56991369
Improve and add missing strings for Spanish
2024-04-29 22:23:02 -07:00
LoveSy
4dc1c59040
add missing xz_dec_end
2024-04-29 22:22:47 -07:00
topjohnwu
33b7b8b297
Update resetprop
2024-04-26 16:42:24 -07:00
topjohnwu
e6af5ed460
Address Rust warnings
2024-04-26 16:28:46 -07:00
topjohnwu
b678afa4b6
Update to ONDK r27.0
...
Co-authored-by: LoveSy <shana@zju.edu.cn >
2024-04-26 03:09:44 -07:00
WINZORT
4bac2df4e7
Improve turkish locales and add the missing strings
2024-04-18 02:14:21 -07:00
igor
50416eee09
Improve Portuguese translation
2024-04-18 02:13:50 -07:00
igor
73cf501d33
Improve Brazilian Portuguese translation
2024-04-18 02:13:50 -07:00
Hen_Ry
d2b7907bed
Update german strings.xml
2024-04-18 02:13:28 -07:00
topjohnwu
99d5dd5ea8
Update crt0
2024-04-17 10:12:27 -07:00
cloudchamb3r
5fdb841fa8
Fix typo
...
Fix typo in values-ko/strings.xml
2024-04-17 09:18:14 -07:00
topjohnwu
7c88484d64
Fix #7988
2024-04-16 19:45:01 -07:00
topjohnwu
b22b6a4204
Refactor cpio
2024-04-10 22:46:21 -07:00
topjohnwu
2a3d34c812
Fix mkdirs
2024-04-10 22:36:47 -07:00
topjohnwu
c50ee722a1
Use memmem for finding needle in haystack
2024-04-10 14:57:44 -07:00
topjohnwu
ffc1e38e48
Add 32 bit CI
2024-04-10 02:56:23 -07:00
topjohnwu
6219d5fcbf
Update crt0 for 32 bit
2024-04-10 02:43:37 -07:00
topjohnwu
2e4440b702
Support 32-bit magiskboot
2024-04-09 19:34:14 -07:00
topjohnwu
0d9ec0931b
Code cleanup
2024-04-08 23:00:59 -07:00
vvb2060
60e8415369
Make denylist work when zygisk is disabled
...
Co-authored-by: topjohnwu <topjohnwu@gmail.com >
2024-04-08 23:00:50 -07:00
LoveSy
652a26d5d9
Fix comment of sepolicy
2024-04-03 21:03:41 -07:00
topjohnwu
f57839379a
Update RustCrypto dependencies
2024-04-03 21:03:05 -07:00
LoveSy
36bd00a046
Add p521 to magiskboot
2024-04-03 21:03:05 -07:00
topjohnwu
fb5ee86615
Install one single ABI in ramdisk
2024-03-31 22:01:22 -07:00
topjohnwu
30bf5c8448
Fix typos
2024-03-31 14:17:25 -07:00
topjohnwu
2051836a73
Remove unused code
2024-03-30 21:03:51 -07:00
topjohnwu
2cb0af1ff3
Move revert_unmount into Rust
2024-03-30 02:51:39 -07:00
topjohnwu
a1b6568226
Implement preinit related features in Rust
2024-03-28 14:11:03 -07:00
topjohnwu
1eddbfd72c
Use const_format for const strings
2024-03-26 18:03:40 -07:00
topjohnwu
21ed095601
Update crt0
2024-03-25 16:11:02 -07:00
Js0n
000a2e4d59
Upgrade AGP to 8.3.1
2024-03-22 17:02:18 -07:00
Js0n
7abe635de9
fix: AGP 8.3.X
2024-03-22 17:02:18 -07:00
topjohnwu
9a008c17ba
Optimize for binary size
2024-03-22 16:53:44 -07:00
topjohnwu
08dbf728a4
Allow platform_app to access MagiskSU
2024-03-22 16:53:44 -07:00
topjohnwu
4670f762d3
Disable debug only features
2024-03-22 16:53:44 -07:00
topjohnwu
efa49567fa
Fix parsing logic for term and sterm
2024-03-21 18:17:28 -07:00
topjohnwu
0ffc4527a7
Better error reporting
2024-03-21 15:10:34 -07:00
topjohnwu
dd9d43be96
Move sepolicy parsing error message into Rust
2024-03-21 14:07:28 -07:00
topjohnwu
865fca71a5
Optimize sepolicy rules
...
Close #7916
Co-authored-by: vvb2060 <vvb2060@gmail.com >
2024-03-21 01:51:35 -07:00
topjohnwu
6b4baa3bcd
Change a little parsing handling
2024-03-21 00:04:09 -07:00
topjohnwu
a9ee2d7d18
Fix xperm parsing logic
2024-03-20 23:13:54 -07:00
topjohnwu
d654b9cb97
Several code cleanups in sepolicy
2024-03-20 23:09:22 -07:00
LoveSy
4d2921e742
Rewrite sepolicy statement parsing in Rust
2024-03-20 10:12:23 -07:00
vvb2060
ecc74d45d1
Let magic mount optional
2024-03-19 23:21:41 -07:00
vvb2060
5de597f079
No need to unshare
2024-03-19 23:21:41 -07:00
LoveSy
156b0e67ca
No need extra tmpfs for worker
2024-03-19 23:21:41 -07:00
vvb2060
10069215f4
Rename dir name
2024-03-19 23:21:41 -07:00
LoveSy
92b305a389
Remove unnecessary mirror for magic mount
...
Mirror was previously used for accessing the original file during
magic mount when we are using a tmpfs to cover the target. However,
since we introduce atomic mount, we switch all tmpfs mount in
worker and then move to the target at once. It means that we can
still access the original file when we are constructing the tmpfs
mount point. Thus we no longer need mirror.
2024-03-19 23:21:41 -07:00
topjohnwu
d20b30c771
Update libsepol
...
Close #7915
2024-03-19 02:54:01 -07:00
topjohnwu
83209b21ff
Release new canary build
2024-03-19 00:51:07 -07:00
topjohnwu
81658d45f7
Support tar with files larger than 8GiB
...
Fix #7838
2024-03-14 16:54:46 -07:00
topjohnwu
c951b208a1
Always update stub APK when upgrade
2024-03-14 14:31:02 -07:00
topjohnwu
050a073771
Make all I/O suspendable
2024-03-12 03:24:42 -07:00
topjohnwu
21d374214f
Minor cleanup of DownloadEngine
2024-03-12 03:14:06 -07:00
LoveSy
19ea25a9d0
Upgrade AGP
2024-03-08 17:12:46 -08:00
topjohnwu
dbf6e40dfe
Ensure stub APK is expected
...
Fix #7884
2024-03-08 17:09:54 -08:00
topjohnwu
d56f4fbc90
Fix stub on API 34
2024-03-08 15:57:49 -08:00
topjohnwu
73c3d741a7
Reorganize some code
2024-03-06 18:07:01 -08:00
pndwal
2b5fc75127
Update faq.md
...
Since system Safe Mode may activate without Magisk 'Safe Mode', this clarification will prevent users from erroneously concluding either that Safe Mode doesn't work or that modules are not the issue since 'Safe Mode' was apparently triggered...
Fixes this: #4624
2024-03-06 17:48:54 -08:00
osm0sis
991802ab82
Add no decompression flag to magiskboot split
2024-03-06 16:15:30 -08:00
WindowsFan9600
7f6b5305ba
Improve Turkish language translation
...
Updated "reboot_download" string
2024-03-06 02:37:58 -08:00
canyie
825c6c4316
Reverse format template argument order
2024-03-06 01:39:16 -08:00
canyie
f00408c793
Fix zygote restart monitor
2024-03-06 01:39:16 -08:00
topjohnwu
a6ff3672af
Update crt0
2024-03-04 16:42:25 -08:00
LoveSy
2290ddeb89
Fix segfault when sepolicy.rule has empty line
2024-03-02 06:15:45 -08:00
topjohnwu
74af79ad03
Update crt0
2024-03-02 05:57:48 -08:00
LoveSy
b6c24a3a8a
No more sony init.real tricks
...
Co-authored-by: canyie <a1364259@163.com >
Co-authored-by: vvb2060 <vvb2060@gmail.com >
2024-02-29 23:40:00 -08:00
LoveSy
a8c2ae223a
Avoid hexpatch /init for 2SI when possible
...
Previous we hexpatch /init from /system/bin/init to /data/magiskinit
to redirect the second stage init. However, some devices like sony
has /init that does not directly invoke /system/bin/init, and thus
the hexpatch fails.
In this patch, we further make use of AOSP `SwitchRoot` to help us
bind mount /data/magisk to /system/bin/init after `SwitchRoot`.
Two important assumption about 2SI are i) that the second stage init
is always /system/bin/init and ii) that the /sdcard (path after
`SwitchRoot`) is always a symlink to `/storage/self/primary`. When
these assumptions hold, during first stage init (before `SwitchRoot`)
we can bind mount magiskinit to /sdcard, and create a symlink
/storage/self/primary to /system/system/bin/init. By these steps,
during `SwitchRoot`, AOSP init will try to mount move /sdcard to
/system/sdcard. And /system/sdcard is symlink to /storage/self/primary,
it will try to mount move /sdcard to /storage/self/primary. And
/storage/self/primary in ramfs is now a symlink that points to
/system/system/bin/init, thus AOSP will try to mount move /sdcard
(which is a bind mount to magiskinit) to /system/system/bin/init.
After chroot done by AOSP init, we then have a magiskinit bind mount
on /system/bin/init, which is the second stage init.
An edge case is that some devices (like meizu) use 2SI but
does not switch root. In this case, they must already have a /sdcard
in the ramfs, thus we can check if /sdcard exists and fallback to
hexpatch.
2024-02-29 23:40:00 -08:00
topjohnwu
953d44302c
Remove ancient NDK binaries
2024-02-29 23:26:58 -08:00
topjohnwu
24e46a5971
Build magiskboot with crt0
2024-02-29 02:36:05 -08:00
topjohnwu
b1297c4192
Less usage of C stdio
2024-02-28 15:52:03 -08:00
topjohnwu
9ae328fd84
Further reduce code size
2024-02-28 11:19:56 -08:00
topjohnwu
625a1d6f44
Remove seek support from streams
2024-02-28 11:07:53 -08:00
topjohnwu
987e5f5413
Address clippy warnings
2024-02-27 21:03:34 -08:00
topjohnwu
715284b70d
Reorganize code
2024-02-27 18:14:30 -08:00
LoveSy
62fc7868ac
Use self implemented parse_mount_info
2024-02-27 17:03:22 -08:00
topjohnwu
1a70796339
Replace all parse_mount_info usage with Rust
2024-02-27 03:49:17 -08:00
topjohnwu
af6965eefa
Update init logging implementation
...
Use less std::fs
2024-02-26 17:49:11 -08:00
topjohnwu
8f7d2e38f7
Make crt0 an external submodule
2024-02-26 17:34:17 -08:00
topjohnwu
be433fa667
Use Rust for formatting
...
The fprintf implementation included in crt0 is too rudimental
2024-02-26 00:26:23 -08:00
topjohnwu
0ccd6e7381
Fix fread and fwrite implementation
2024-02-25 23:20:30 -08:00
topjohnwu
907bbbda41
Remove usage of patched static lib
2024-02-25 22:11:34 -08:00
topjohnwu
4393bc077d
Implement string routines
2024-02-25 21:12:19 -08:00
topjohnwu
365b373480
Make it easy to build without crt0
2024-02-24 22:32:22 -08:00
topjohnwu
47e6dd286d
Minor fixes
2024-02-24 22:00:09 -08:00
topjohnwu
0dbaf52566
Make all platforms build properly
2024-02-24 05:10:54 -08:00
topjohnwu
66f49dfab5
Remove unnecessary lock usage
2024-02-24 04:20:28 -08:00
topjohnwu
f8967e9274
Implement strerror
2024-02-24 04:02:46 -08:00
topjohnwu
a4f008fde5
Reorganize files
2024-02-24 03:41:22 -08:00
topjohnwu
e9980c778b
Implement stub functions
2024-02-24 03:41:03 -08:00
topjohnwu
06b6fb0c33
Add setenv
2024-02-24 03:27:09 -08:00
topjohnwu
38cb3d4105
Add dirent implementation
2024-02-24 03:26:53 -08:00
topjohnwu
db99caf258
Use execve directly
2024-02-24 01:47:11 -08:00
topjohnwu
39dbffadfe
Complete stdio
2024-02-24 01:28:58 -08:00
topjohnwu
b7505c3c9c
Remove fopen usage in magiskinit
2024-02-24 00:45:07 -08:00
topjohnwu
3185e5a7ca
Introduce string/mem functions
2024-02-23 23:56:31 -08:00
topjohnwu
e0cbe28711
Add the generic syscall function
2024-02-23 18:41:39 -08:00
topjohnwu
66cee19cea
Add printf and sscanf family
2024-02-23 17:44:12 -08:00
topjohnwu
2ec29ade79
Add all missing syscalls
2024-02-23 14:35:12 -08:00
topjohnwu
c865d4e187
Add memory allocator
2024-02-22 21:22:27 -08:00
topjohnwu
a42a0a53ce
Declare more symbols
2024-02-22 21:22:27 -08:00
topjohnwu
6d79de7d71
Initial crt0 implementation
...
Builds but cannot link, missing a lot of symbols
2024-02-22 21:22:27 -08:00
topjohnwu
7e9abe6e90
Update ONDK
2024-02-22 20:58:40 -08:00
残页
4d5510be4f
Prompt users to use reboot button in System Updates
...
So the update engine can write verify info of partitions which fixes bootloop on newer Pixel devices
2024-02-19 02:14:12 -08:00
topjohnwu
b04e1394c0
Update README
2024-02-07 14:39:53 -08:00
topjohnwu
2aa923191e
Rename DownloadManager to DownloadEngine
...
Also add some documentation
2024-02-06 17:54:15 -08:00
topjohnwu
4bf1c74164
Disable foreground service on API 34+
2024-02-06 17:29:42 -08:00
topjohnwu
472c7878b2
Update AGP
2024-02-06 17:04:48 -08:00
topjohnwu
38ad871e33
Use user-initiated jobs for download tasks on API 34+
2024-02-06 17:04:39 -08:00
topjohnwu
c5d34670c4
Isolate download logic from service lifecycle
2024-02-06 00:56:14 -08:00
topjohnwu
154121f3dd
Release new canary build
2024-02-02 23:51:35 -08:00
topjohnwu
3d91a561fe
Update README
2024-02-02 23:35:14 -08:00
topjohnwu
2c6adbc69b
Release Magisk v27.0
2024-02-02 22:54:41 -08:00
topjohnwu
5280982363
Add v27.0 changelog
2024-02-02 22:47:35 -08:00
topjohnwu
18c45ae289
Update cxx and Rust dependencies
2024-02-02 14:35:30 -08:00
LoveSy
41fbd2a7be
Upgrade gradle
2024-02-02 10:55:11 -08:00
LoveSy
5e45884af4
Use Apple Silicon for CI
...
https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source/
2024-02-01 15:09:42 -08:00
topjohnwu
d78ee171bc
Release new canary build
2024-01-30 15:59:02 -08:00
LoveSy
356ee1febd
Code clean up
2024-01-30 11:07:37 -08:00
LoveSy
cc044ccc4c
Fix zygisk unload
2024-01-30 11:07:37 -08:00
LoveSy
9c638cc463
Remove rust workaround
2024-01-29 15:07:21 -08:00
topjohnwu
df786eb2b6
Separate Linux and other jobs
2024-01-29 01:53:09 -08:00
topjohnwu
8e7186eebb
Try out composite actions
2024-01-29 01:36:51 -08:00
topjohnwu
74b7b84561
Test all APIs on Linux
2024-01-28 00:46:03 -08:00
topjohnwu
308c9999fa
Properly detect package changes
2024-01-28 00:42:43 -08:00
topjohnwu
930bb8687f
Minor zygisk refactoring
2024-01-25 00:17:47 -08:00
topjohnwu
f2c4288d2d
Run pthread_atfork only once
...
Close #7704
2024-01-25 00:17:05 -08:00
topjohnwu
b44141ae39
Run tests on Linux
2024-01-22 18:10:26 -08:00
kam821
86e0020964
Update Polish translation
...
- Added missing strings, fixed translation, escaped quotas.
- Some context dependent values (like target_pid) may require better translation in the future.
- Also, 'DenyList' translation, although correct, could be replaced in the future by better fitting polish equivalent of 'block list' / 'rejection list'.
2024-01-17 16:13:20 -08:00
残页
94d3daeadf
Fix Sony init.real check
2024-01-17 16:09:50 -08:00
LoveSy
79334b7702
One stage zygisk loading
2024-01-11 16:19:39 -08:00
LoveSy
df66458db6
Check full path of init.rc instead of its dir
...
Some devices has `/system/etc/init/hw` but has no init.rc in it.
2024-01-11 16:18:57 -08:00
LoveSy
97705704e2
install or uninstall apk asynchronously
2024-01-11 16:16:36 -08:00
topjohnwu
1206179580
Update dependencies
2024-01-10 15:46:30 -08:00
topjohnwu
a0b8aa4da6
Release new canary build
2023-12-27 01:42:42 +08:00
topjohnwu
65207f96c8
Create custom cxx binding to Utf8CStr
2023-12-26 23:10:55 +08:00
Abhishek Girish
062e498bdd
Update Malayalam translations
2023-12-25 18:46:08 +08:00
topjohnwu
1057cb3e3c
Set serial on Rust binding
2023-12-24 04:36:58 +08:00
topjohnwu
2dd23b2518
Update system_properties
2023-12-24 04:36:58 +08:00
RafaeloxMC
8cab12998c
Update strings.xml / German translation
2023-12-23 16:49:47 +08:00
topjohnwu
48b1c26dc8
Prevent race condition in wait
2023-12-23 06:33:12 +08:00
topjohnwu
f1e0bc3e4a
Use platform implementation if possible
2023-12-23 06:24:20 +08:00
topjohnwu
38527cd58f
Slightly change wait usage and API
2023-12-23 06:23:29 +08:00
LoveSy
e94d65b4b2
Add resetprop -w for waiting property change
...
It's very easy to wait for property change both in Java and C++,
but it's not the case in shell script. With this patch, developers
can now easily to wait for property change, just like what we have
in `.rc` files, and to wait for boot complete.
2023-12-23 00:12:42 +08:00
LoveSy
27ece3c7df
Keep mirror shared before magic mount
...
This allows mounting during post-fs-data be kept after magic mount
2023-12-22 21:39:03 +08:00
LoveSy
06687abffc
Fix magisk --stop by making mirror shared
...
Previously mirror is private and then unshared to zygote, which
makes magisk --stop cannot propagate umount mirror to zygote.
2023-12-22 21:39:03 +08:00
vvb2060
deedb462a0
Hide magisk internal mount point
2023-12-22 21:38:15 +08:00
igor
c48962bdf7
Update Portuguese translation
2023-12-22 01:31:55 +08:00
Wang Han
1ef3f6e13b
Remove useless rule for prctl PR_SET_MM
...
* There is no use-case for it now.
2023-12-22 00:36:06 +08:00
topjohnwu
83a34a9004
Update emulator
2023-12-21 21:30:35 +08:00
topjohnwu
e30bda6c8d
Rebase libsepol to AOSP main
2023-12-21 19:23:02 +08:00
vvb2060
00e9d76a5a
Revert "Avoid doing any unmounts for SysUI"
2023-12-20 17:23:17 +08:00
LoveSy
6cda6c2fae
Upgrade github action deps
2023-12-18 16:25:56 +08:00
VD $ VD171 @ Priv8
6dfda6dc39
Update Portuguese Translation
2023-12-18 16:24:14 +08:00
LoveSy
f41994cb52
Skip svc for ro properties
...
ro properties' triggers should only be triggered once, otherwise it
may undefined behaviour.
This patch avoids triggering ro properties' actions again when using
resetprop to modify them.
Co-authored-by: 5ec1cff <ewtqyqyewtqyqy@gmail.com >
2023-12-18 16:21:08 +08:00
topjohnwu
a003336497
Update system_properties for pre Android 10
2023-12-18 16:21:08 +08:00
LoveSy
401090d6fe
Avoid zygiskd restarts when boot-complete
2023-12-18 16:21:08 +08:00
LoveSy
90dcc1cd30
Do not always zero initialize for rust resize vec
2023-12-18 16:21:08 +08:00
LoveSy
2ac464b186
Only compress regular file
2023-12-18 16:21:08 +08:00
LoveSy
8b7fae278b
Support compressing during cpio backup
2023-12-18 16:21:08 +08:00
topjohnwu
d73c2daf6d
Use special emulator to make tests less flaky
2023-12-16 15:50:53 +08:00
topjohnwu
ca25935de3
Release new canary build
2023-12-14 03:21:22 +08:00
LoveSy
d7750b7220
uiautomator dump to /data/local/tmp
2023-12-13 03:28:30 +08:00
LoveSy
98861f0b5a
Clone dir attr for tmpfs in advance
2023-12-13 03:28:30 +08:00
topjohnwu
e35925d520
Properly version zygisk APIs
2023-12-13 03:27:38 +08:00
Kieron Quinn
685a2d2101
Fixes for Android 14 QPR2 B2
...
Added new method signatures and arguments
2023-12-13 00:16:54 +08:00
LoveSy
f7e471616d
Fix clone_attr for newly created dirs
2023-12-10 23:37:47 +08:00
残页
c013a349af
Update install guide
...
- Remove boot vbmeta patching because the checkbox is removed in b1363ee
- Remove meaningless slot argument from `fastboot flash` as it will automatically flash the active slot. Fix #7571
2023-12-10 23:37:02 +08:00
topjohnwu
61ea59a27b
API 34 AOSP ATD image is released
2023-12-08 17:59:24 +08:00
VD $ VD171 @ Priv8
e55f338367
Update Portuguese Translation
2023-12-08 17:03:48 +08:00
VD $ VD171 @ Priv8
1425cf4105
Update Portuguese Translation
2023-12-08 17:03:48 +08:00
topjohnwu
b493a985b0
Update dependencies
2023-12-08 17:03:18 +08:00
canyie
1fe9ede940
Update selinux to disable validation for policydb
2023-12-08 16:50:45 +08:00
LoveSy
1fd49e4987
Make tmpfs mount of magic mount atomic
...
This avoid system libraries disappear temporarily during magic mount,
which causes some dynamic executables fails to run during post-fs-data.
2023-12-08 13:59:02 +08:00
LoveSy
d49b02b274
Fix zygiskd not restart when zygote restarts
2023-12-07 20:44:44 +08:00
LoveSy
d47e70cfaa
Fix native symbol strips
...
`ndkVersion` is also needed by app for striping native symbols.
Set it in `setupCommon` instead.
2023-12-04 00:37:09 +08:00
topjohnwu
40cb031af5
Release new canary build
2023-12-04 00:30:46 +08:00
topjohnwu
1dcf325547
Minor cleanup
2023-12-03 19:32:58 +08:00
LoveSy
4e99997013
Upgrade AGP
2023-12-02 15:25:58 +08:00
LoveSy
334554697d
Enable rust parallel front-end
...
See https://blog.rust-lang.org/2023/11/09/parallel-rustc.html
2023-12-02 15:25:41 +08:00
LoveSy
e77cbd0c15
Upgrade gradle
2023-11-30 11:49:40 +08:00
topjohnwu
46ba008b9d
Disable SCCACHE_DIRECT
2023-11-30 01:55:38 +08:00
LoveSy
58aded31c2
Enable iter_intersperse
2023-11-29 23:47:51 +08:00
LoveSy
6f6b0ade06
Correct cpio's norm_path
2023-11-29 23:47:51 +08:00
topjohnwu
d9b67a207b
Update ONDK
2023-11-27 17:41:11 +08:00
topjohnwu
c7083659aa
Directly guard boot state with mutex
2023-11-27 17:40:58 +08:00
topjohnwu
a6d1803105
Update dependencies
2023-11-26 23:09:20 +08:00
Re*Index. (ot_inc)
66eef75673
Update strings.xml
2023-11-26 22:54:53 +08:00
Alessandro Sangiorgi
367f5f7b44
Update italian translation
...
Co-authored-by: Francesco Saltori <francescosaltori@gmail.com >
2023-11-26 22:54:33 +08:00
topjohnwu
0edcb03c45
Update test API levels
2023-11-26 21:41:43 +08:00
canyie
63eef153de
Warn about unsupported installation methods
2023-11-17 13:58:41 -08:00
canyie
68442f38ac
Misc changes
...
- actions: Update all actions/checkout references to v4
- magiskboot: Add missing new line to dtb help message
- docs: Update documents, fix some errors and remove outdated info
2023-11-17 13:58:41 -08:00
topjohnwu
8d5b9e5329
C++/Rust 2 way binding for MagiskD
2023-11-17 13:35:50 -08:00
topjohnwu
6c0966b795
Move some global state into Rust
2023-11-16 15:38:38 -08:00
topjohnwu
7c2e93d266
Introduce owned_fd
2023-11-16 15:38:38 -08:00
topjohnwu
1ff7b9055f
Add LSPosed launch test
2023-11-16 15:38:38 -08:00
topjohnwu
49f241b77c
Allow running scripts with incomplete env
2023-11-10 00:55:05 -08:00
topjohnwu
cfb20b0f86
Zygisk refactoring part 2
2023-11-09 20:55:58 -08:00
topjohnwu
6d6f14fcb3
Use bitflags
2023-11-09 14:35:49 -08:00
topjohnwu
977c981265
Make sure native bridge is restored on daemon restart
2023-11-08 17:55:25 -08:00
topjohnwu
ef48abf19d
Reorganize zygisk code
2023-11-08 17:46:39 -08:00
topjohnwu
65c18f9c09
Restructure project files
2023-11-08 01:46:02 -08:00
残页
ecb31eed40
Prevent Zygisk from closing new fds created by Zygote itself
2023-11-08 00:34:38 -08:00
topjohnwu
a80cadf587
Refactor hookJniNativeMethods
...
Utilize NativeBridgeRuntimeCallbacks we obtained from native bridge
to directly fetch and modify registered native JNI methods.
By doing so, we do not need to keep a copy of every single
JNINativeMethod registered in order to provide JNI hooking
functionality.
Co-authored-by: LoveSy <shana@zju.edu.cn >
2023-11-07 23:57:55 -08:00
LoveSy
fce1bf2365
Obtain NativeBridgeRuntimeCallbacks for future use
...
NativeBridgeRuntimeCallbacks can be used for better JNI method hooking
Co-authored-by: topjohnwu <topjohnwu@gmail.com >
2023-11-07 16:56:40 -08:00
LoveSy
cbc6d40b2c
Clean up codes
2023-11-07 14:25:57 -08:00
LoveSy
9fbd079560
Refactor zygisk to use native bridge to inject
...
Co-authored-by: vvb2060 <vvb2060@gmail.com >
Co-authored-by: topjohnwu <topjohnwu@gmail.com >
2023-11-07 14:25:57 -08:00
LoveSy
42eb928054
Inject zygisk.rc for sync --zygisk-restart
2023-11-06 15:39:48 -08:00
topjohnwu
577483fde1
Release new canary build
2023-11-05 23:49:35 -08:00
topjohnwu
aa6c7c15cc
Update README
2023-11-05 23:44:07 -08:00