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
efeddda3
Commit
efeddda3
authored
Jun 05, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use Java synchronize instead serial tasks
parent
ff693828
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
144 additions
and
147 deletions
+144
-147
MagiskLogFragment.java
...src/main/java/com/topjohnwu/magisk/MagiskLogFragment.java
+3
-3
SettingsActivity.java
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
+14
-27
SplashActivity.java
app/src/main/java/com/topjohnwu/magisk/SplashActivity.java
+4
-14
ModulesAdapter.java
...in/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java
+23
-37
CheckUpdates.java
...c/main/java/com/topjohnwu/magisk/asyncs/CheckUpdates.java
+1
-0
FlashZip.java
app/src/main/java/com/topjohnwu/magisk/asyncs/FlashZip.java
+3
-3
GetBootBlocks.java
.../main/java/com/topjohnwu/magisk/asyncs/GetBootBlocks.java
+6
-3
LoadModules.java
...rc/main/java/com/topjohnwu/magisk/asyncs/LoadModules.java
+3
-2
LoadRepos.java
app/src/main/java/com/topjohnwu/magisk/asyncs/LoadRepos.java
+1
-0
MagiskHide.java
...src/main/java/com/topjohnwu/magisk/asyncs/MagiskHide.java
+3
-2
ParallelTask.java
...c/main/java/com/topjohnwu/magisk/asyncs/ParallelTask.java
+15
-2
ProcessMagiskZip.java
...in/java/com/topjohnwu/magisk/asyncs/ProcessMagiskZip.java
+8
-7
RootTask.java
app/src/main/java/com/topjohnwu/magisk/asyncs/RootTask.java
+33
-0
SerialTask.java
...src/main/java/com/topjohnwu/magisk/asyncs/SerialTask.java
+0
-30
Module.java
app/src/main/java/com/topjohnwu/magisk/module/Module.java
+8
-4
Shell.java
app/src/main/java/com/topjohnwu/magisk/utils/Shell.java
+14
-0
Utils.java
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
+5
-13
No files found.
app/src/main/java/com/topjohnwu/magisk/MagiskLogFragment.java
View file @
efeddda3
...
@@ -24,7 +24,7 @@ import android.widget.ScrollView;
...
@@ -24,7 +24,7 @@ import android.widget.ScrollView;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
com.topjohnwu.magisk.asyncs.
Serial
Task
;
import
com.topjohnwu.magisk.asyncs.
Root
Task
;
import
com.topjohnwu.magisk.components.Fragment
;
import
com.topjohnwu.magisk.components.Fragment
;
import
com.topjohnwu.magisk.components.SnackbarMaker
;
import
com.topjohnwu.magisk.components.SnackbarMaker
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Shell
;
...
@@ -127,14 +127,14 @@ public class MagiskLogFragment extends Fragment {
...
@@ -127,14 +127,14 @@ public class MagiskLogFragment extends Fragment {
}
}
}
}
p
ublic
class
LogManager
extends
Serial
Task
<
Object
,
Void
,
Object
>
{
p
rivate
class
LogManager
extends
Root
Task
<
Object
,
Void
,
Object
>
{
int
mode
;
int
mode
;
File
targetFile
;
File
targetFile
;
@SuppressLint
(
"DefaultLocale"
)
@SuppressLint
(
"DefaultLocale"
)
@Override
@Override
protected
Object
doIn
Background
(
Object
...
params
)
{
protected
Object
doIn
Root
(
Object
...
params
)
{
mode
=
(
int
)
params
[
0
];
mode
=
(
int
)
params
[
0
];
switch
(
mode
)
{
switch
(
mode
)
{
case
0
:
case
0
:
...
...
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
View file @
efeddda3
...
@@ -12,7 +12,6 @@ import android.support.v7.widget.Toolbar;
...
@@ -12,7 +12,6 @@ import android.support.v7.widget.Toolbar;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
com.topjohnwu.magisk.asyncs.MagiskHide
;
import
com.topjohnwu.magisk.asyncs.MagiskHide
;
import
com.topjohnwu.magisk.asyncs.SerialTask
;
import
com.topjohnwu.magisk.components.Activity
;
import
com.topjohnwu.magisk.components.Activity
;
import
com.topjohnwu.magisk.components.AlertDialogBuilder
;
import
com.topjohnwu.magisk.components.AlertDialogBuilder
;
import
com.topjohnwu.magisk.database.SuDatabaseHelper
;
import
com.topjohnwu.magisk.database.SuDatabaseHelper
;
...
@@ -140,18 +139,11 @@ public class SettingsActivity extends Activity {
...
@@ -140,18 +139,11 @@ public class SettingsActivity extends Activity {
break
;
break
;
case
"disable"
:
case
"disable"
:
enabled
=
prefs
.
getBoolean
(
"disable"
,
false
);
enabled
=
prefs
.
getBoolean
(
"disable"
,
false
);
new
SerialTask
<
Void
,
Void
,
Void
>()
{
if
(
enabled
)
{
private
boolean
enable
=
enabled
;
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
if
(
enable
)
{
Utils
.
createFile
(
MagiskManager
.
MAGISK_DISABLE_FILE
);
Utils
.
createFile
(
MagiskManager
.
MAGISK_DISABLE_FILE
);
}
else
{
}
else
{
Utils
.
removeItem
(
MagiskManager
.
MAGISK_DISABLE_FILE
);
Utils
.
removeItem
(
MagiskManager
.
MAGISK_DISABLE_FILE
);
}
}
return
null
;
}
}.
exec
();
Toast
.
makeText
(
getActivity
(),
R
.
string
.
settings_reboot_toast
,
Toast
.
LENGTH_LONG
).
show
();
Toast
.
makeText
(
getActivity
(),
R
.
string
.
settings_reboot_toast
,
Toast
.
LENGTH_LONG
).
show
();
break
;
break
;
case
"magiskhide"
:
case
"magiskhide"
:
...
@@ -173,20 +165,15 @@ public class SettingsActivity extends Activity {
...
@@ -173,20 +165,15 @@ public class SettingsActivity extends Activity {
break
;
break
;
case
"hosts"
:
case
"hosts"
:
enabled
=
prefs
.
getBoolean
(
"hosts"
,
false
);
enabled
=
prefs
.
getBoolean
(
"hosts"
,
false
);
new
SerialTask
<
Void
,
Void
,
Void
>()
{
if
(
enabled
)
{
private
boolean
enable
=
enabled
;
Shell
.
su_async
(
null
,
@Override
"cp -af /system/etc/hosts /magisk/.core/hosts"
,
protected
Void
doInBackground
(
Void
...
voids
)
{
if
(
enable
)
{
Shell
.
su
(
"cp -af /system/etc/hosts /magisk/.core/hosts"
,
"mount -o bind /magisk/.core/hosts /system/etc/hosts"
);
"mount -o bind /magisk/.core/hosts /system/etc/hosts"
);
}
else
{
}
else
{
Shell
.
su
(
"umount -l /system/etc/hosts"
,
Shell
.
su_async
(
null
,
"umount -l /system/etc/hosts"
,
"rm -f /magisk/.core/hosts"
);
"rm -f /magisk/.core/hosts"
);
}
}
return
null
;
}
}.
exec
();
break
;
break
;
case
"su_access"
:
case
"su_access"
:
magiskManager
.
suAccessState
=
Utils
.
getPrefsInt
(
prefs
,
"su_access"
,
3
);
magiskManager
.
suAccessState
=
Utils
.
getPrefsInt
(
prefs
,
"su_access"
,
3
);
...
...
app/src/main/java/com/topjohnwu/magisk/SplashActivity.java
View file @
efeddda3
...
@@ -25,28 +25,18 @@ public class SplashActivity extends Activity{
...
@@ -25,28 +25,18 @@ public class SplashActivity extends Activity{
super
.
onCreate
(
savedInstanceState
);
super
.
onCreate
(
savedInstanceState
);
MagiskManager
magiskManager
=
getApplicationContext
();
// Init the info and configs and root shell
// Init the info and configs and root shell
magiskManager
.
init
();
getApplicationContext
()
.
init
();
// Now fire all async tasks
// Now fire all async tasks
new
GetBootBlocks
(
this
).
exec
();
new
GetBootBlocks
(
this
).
exec
();
new
LoadModules
(
this
)
{
new
LoadModules
(
this
).
setCallBack
(()
->
new
LoadRepos
(
this
).
exec
()).
exec
();
@Override
protected
void
onPostExecute
(
Void
v
)
{
super
.
onPostExecute
(
v
);
if
(
Utils
.
checkNetworkStatus
(
activity
))
{
new
LoadRepos
(
activity
).
exec
();
}
}
}.
exec
();
new
LoadApps
(
this
).
exec
();
new
LoadApps
(
this
).
exec
();
if
(
Utils
.
checkNetworkStatus
(
this
))
{
if
(
Utils
.
checkNetworkStatus
(
this
))
{
// Initialize the update check service, notify every 12 hours
// Initialize the update check service, notify every 12 hours
if
(!
TextUtils
.
equals
(
"install"
,
getIntent
().
getStringExtra
(
MagiskManager
.
INTENT_SECTION
)))
{
if
(!
TextUtils
.
equals
(
"install"
,
getIntent
().
getStringExtra
(
MagiskManager
.
INTENT_SECTION
)))
{
ComponentName
service
=
new
ComponentName
(
magiskManager
,
UpdateCheckService
.
class
);
ComponentName
service
=
new
ComponentName
(
this
,
UpdateCheckService
.
class
);
JobInfo
jobInfo
=
new
JobInfo
.
Builder
(
UPDATE_SERVICE_ID
,
service
)
JobInfo
jobInfo
=
new
JobInfo
.
Builder
(
UPDATE_SERVICE_ID
,
service
)
.
setRequiredNetworkType
(
JobInfo
.
NETWORK_TYPE_ANY
)
.
setRequiredNetworkType
(
JobInfo
.
NETWORK_TYPE_ANY
)
.
setPersisted
(
true
)
.
setPersisted
(
true
)
...
@@ -57,7 +47,7 @@ public class SplashActivity extends Activity{
...
@@ -57,7 +47,7 @@ public class SplashActivity extends Activity{
}
}
}
}
Intent
intent
=
new
Intent
(
magiskManager
,
MainActivity
.
class
);
Intent
intent
=
new
Intent
(
this
,
MainActivity
.
class
);
String
section
=
getIntent
().
getStringExtra
(
MagiskManager
.
INTENT_SECTION
);
String
section
=
getIntent
().
getStringExtra
(
MagiskManager
.
INTENT_SECTION
);
if
(
section
!=
null
)
{
if
(
section
!=
null
)
{
intent
.
putExtra
(
MagiskManager
.
INTENT_SECTION
,
section
);
intent
.
putExtra
(
MagiskManager
.
INTENT_SECTION
,
section
);
...
...
app/src/main/java/com/topjohnwu/magisk/adapters/ModulesAdapter.java
View file @
efeddda3
...
@@ -12,7 +12,6 @@ import android.widget.ImageView;
...
@@ -12,7 +12,6 @@ import android.widget.ImageView;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
com.topjohnwu.magisk.R
;
import
com.topjohnwu.magisk.R
;
import
com.topjohnwu.magisk.asyncs.SerialTask
;
import
com.topjohnwu.magisk.components.SnackbarMaker
;
import
com.topjohnwu.magisk.components.SnackbarMaker
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Shell
;
...
@@ -53,44 +52,31 @@ public class ModulesAdapter extends RecyclerView.Adapter<ModulesAdapter.ViewHold
...
@@ -53,44 +52,31 @@ public class ModulesAdapter extends RecyclerView.Adapter<ModulesAdapter.ViewHold
holder
.
checkBox
.
setOnCheckedChangeListener
(
null
);
holder
.
checkBox
.
setOnCheckedChangeListener
(
null
);
holder
.
checkBox
.
setChecked
(
module
.
isEnabled
());
holder
.
checkBox
.
setChecked
(
module
.
isEnabled
());
holder
.
checkBox
.
setOnCheckedChangeListener
((
v
,
isChecked
)
->
new
SerialTask
<
Void
,
Void
,
Void
>()
{
holder
.
checkBox
.
setOnCheckedChangeListener
((
v
,
isChecked
)
->
{
@Override
int
snack
;
protected
Void
doInBackground
(
Void
...
voids
)
{
if
(
isChecked
)
{
if
(
isChecked
)
{
module
.
removeDisableFile
();
module
.
removeDisableFile
();
snack
=
R
.
string
.
disable_file_removed
;
}
else
{
}
else
{
module
.
createDisableFile
();
module
.
createDisableFile
();
snack
=
R
.
string
.
disable_file_created
;
}
}
return
null
;
}
@Override
protected
void
onPostExecute
(
Void
v
)
{
int
snack
=
isChecked
?
R
.
string
.
disable_file_removed
:
R
.
string
.
disable_file_created
;
SnackbarMaker
.
make
(
holder
.
itemView
,
snack
,
Snackbar
.
LENGTH_SHORT
).
show
();
SnackbarMaker
.
make
(
holder
.
itemView
,
snack
,
Snackbar
.
LENGTH_SHORT
).
show
();
}
});
}.
exec
());
holder
.
delete
.
setOnClickListener
(
v
->
new
SerialTask
<
Void
,
Void
,
Void
>()
{
private
final
boolean
removed
=
module
.
willBeRemoved
();
@Override
holder
.
delete
.
setOnClickListener
(
v
->
{
protected
Void
doInBackground
(
Void
...
voids
)
{
boolean
removed
=
module
.
willBeRemoved
();
int
snack
;
if
(
removed
)
{
if
(
removed
)
{
module
.
deleteRemoveFile
();
module
.
deleteRemoveFile
();
snack
=
R
.
string
.
remove_file_deleted
;
}
else
{
}
else
{
module
.
createRemoveFile
();
module
.
createRemoveFile
();
snack
=
R
.
string
.
remove_file_created
;
}
}
return
null
;
}
@Override
protected
void
onPostExecute
(
Void
v
)
{
int
snack
=
removed
?
R
.
string
.
remove_file_deleted
:
R
.
string
.
remove_file_created
;
SnackbarMaker
.
make
(
holder
.
itemView
,
snack
,
Snackbar
.
LENGTH_SHORT
).
show
();
SnackbarMaker
.
make
(
holder
.
itemView
,
snack
,
Snackbar
.
LENGTH_SHORT
).
show
();
updateDeleteButton
(
holder
,
module
);
updateDeleteButton
(
holder
,
module
);
}
});
}.
exec
());
if
(
module
.
isUpdated
())
{
if
(
module
.
isUpdated
())
{
holder
.
notice
.
setVisibility
(
View
.
VISIBLE
);
holder
.
notice
.
setVisibility
(
View
.
VISIBLE
);
...
...
app/src/main/java/com/topjohnwu/magisk/asyncs/CheckUpdates.java
View file @
efeddda3
...
@@ -68,5 +68,6 @@ public class CheckUpdates extends ParallelTask<Void, Void, Void> {
...
@@ -68,5 +68,6 @@ public class CheckUpdates extends ParallelTask<Void, Void, Void> {
notificationManager
.
notify
(
NOTIFICATION_ID
,
builder
.
build
());
notificationManager
.
notify
(
NOTIFICATION_ID
,
builder
.
build
());
}
}
magiskManager
.
updateCheckDone
.
trigger
();
magiskManager
.
updateCheckDone
.
trigger
();
super
.
onPostExecute
(
v
);
}
}
}
}
app/src/main/java/com/topjohnwu/magisk/asyncs/FlashZip.java
View file @
efeddda3
...
@@ -21,7 +21,7 @@ import java.io.InputStream;
...
@@ -21,7 +21,7 @@ import java.io.InputStream;
import
java.io.OutputStream
;
import
java.io.OutputStream
;
import
java.util.List
;
import
java.util.List
;
public
class
FlashZip
extends
Serial
Task
<
Void
,
String
,
Integer
>
{
public
class
FlashZip
extends
Root
Task
<
Void
,
String
,
Integer
>
{
private
Uri
mUri
;
private
Uri
mUri
;
private
File
mCachedFile
,
mScriptFile
,
mCheckFile
;
private
File
mCachedFile
,
mScriptFile
,
mCheckFile
;
...
@@ -96,7 +96,7 @@ public class FlashZip extends SerialTask<Void, String, Integer> {
...
@@ -96,7 +96,7 @@ public class FlashZip extends SerialTask<Void, String, Integer> {
}
}
@Override
@Override
protected
Integer
doIn
Background
(
Void
...
voids
)
{
protected
Integer
doIn
Root
(
Void
...
voids
)
{
Logger
.
dev
(
"FlashZip Running... "
+
mFilename
);
Logger
.
dev
(
"FlashZip Running... "
+
mFilename
);
List
<
String
>
ret
;
List
<
String
>
ret
;
try
{
try
{
...
@@ -124,7 +124,6 @@ public class FlashZip extends SerialTask<Void, String, Integer> {
...
@@ -124,7 +124,6 @@ public class FlashZip extends SerialTask<Void, String, Integer> {
// -1 = error, manual install; 0 = invalid zip; 1 = success
// -1 = error, manual install; 0 = invalid zip; 1 = success
@Override
@Override
protected
void
onPostExecute
(
Integer
result
)
{
protected
void
onPostExecute
(
Integer
result
)
{
super
.
onPostExecute
(
result
);
progress
.
dismiss
();
progress
.
dismiss
();
switch
(
result
)
{
switch
(
result
)
{
case
-
1
:
case
-
1
:
...
@@ -138,6 +137,7 @@ public class FlashZip extends SerialTask<Void, String, Integer> {
...
@@ -138,6 +137,7 @@ public class FlashZip extends SerialTask<Void, String, Integer> {
onSuccess
();
onSuccess
();
break
;
break
;
}
}
super
.
onPostExecute
(
result
);
}
}
protected
void
onSuccess
()
{
protected
void
onSuccess
()
{
...
...
app/src/main/java/com/topjohnwu/magisk/asyncs/GetBootBlocks.java
View file @
efeddda3
...
@@ -5,15 +5,17 @@ import android.app.Activity;
...
@@ -5,15 +5,17 @@ import android.app.Activity;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
public
class
GetBootBlocks
extends
Serial
Task
<
Void
,
Void
,
Void
>
{
public
class
GetBootBlocks
extends
Root
Task
<
Void
,
Void
,
Void
>
{
public
GetBootBlocks
(
Activity
context
)
{
public
GetBootBlocks
(
Activity
context
)
{
super
(
context
);
super
(
context
);
}
}
@Override
@Override
protected
Void
doInBackground
(
Void
...
params
)
{
protected
Void
doInRoot
(
Void
...
params
)
{
magiskManager
.
blockList
=
Shell
.
su
(
"ls /dev/block | grep mmc"
);
magiskManager
.
blockList
=
Shell
.
su
(
"find /dev/block -type b -maxdepth 1 | grep -v -E \"loop|ram|dm-0\""
);
if
(
magiskManager
.
bootBlock
==
null
)
{
if
(
magiskManager
.
bootBlock
==
null
)
{
magiskManager
.
bootBlock
=
Utils
.
detectBootImage
();
magiskManager
.
bootBlock
=
Utils
.
detectBootImage
();
}
}
...
@@ -23,5 +25,6 @@ public class GetBootBlocks extends SerialTask<Void, Void, Void> {
...
@@ -23,5 +25,6 @@ public class GetBootBlocks extends SerialTask<Void, Void, Void> {
@Override
@Override
protected
void
onPostExecute
(
Void
v
)
{
protected
void
onPostExecute
(
Void
v
)
{
magiskManager
.
blockDetectionDone
.
trigger
();
magiskManager
.
blockDetectionDone
.
trigger
();
super
.
onPostExecute
(
v
);
}
}
}
}
app/src/main/java/com/topjohnwu/magisk/asyncs/LoadModules.java
View file @
efeddda3
...
@@ -9,14 +9,14 @@ import com.topjohnwu.magisk.utils.Logger;
...
@@ -9,14 +9,14 @@ import com.topjohnwu.magisk.utils.Logger;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.ValueSortedMap
;
import
com.topjohnwu.magisk.utils.ValueSortedMap
;
public
class
LoadModules
extends
Serial
Task
<
Void
,
Void
,
Void
>
{
public
class
LoadModules
extends
Root
Task
<
Void
,
Void
,
Void
>
{
public
LoadModules
(
Activity
context
)
{
public
LoadModules
(
Activity
context
)
{
super
(
context
);
super
(
context
);
}
}
@Override
@Override
protected
Void
doIn
Background
(
Void
...
voids
)
{
protected
Void
doIn
Root
(
Void
...
voids
)
{
Logger
.
dev
(
"LoadModules: Loading modules"
);
Logger
.
dev
(
"LoadModules: Loading modules"
);
magiskManager
.
moduleMap
=
new
ValueSortedMap
<>();
magiskManager
.
moduleMap
=
new
ValueSortedMap
<>();
...
@@ -37,5 +37,6 @@ public class LoadModules extends SerialTask<Void, Void, Void> {
...
@@ -37,5 +37,6 @@ public class LoadModules extends SerialTask<Void, Void, Void> {
@Override
@Override
protected
void
onPostExecute
(
Void
v
)
{
protected
void
onPostExecute
(
Void
v
)
{
magiskManager
.
moduleLoadDone
.
trigger
();
magiskManager
.
moduleLoadDone
.
trigger
();
super
.
onPostExecute
(
v
);
}
}
}
}
app/src/main/java/com/topjohnwu/magisk/asyncs/LoadRepos.java
View file @
efeddda3
...
@@ -184,5 +184,6 @@ public class LoadRepos extends ParallelTask<Void, Void, Void> {
...
@@ -184,5 +184,6 @@ public class LoadRepos extends ParallelTask<Void, Void, Void> {
@Override
@Override
protected
void
onPostExecute
(
Void
v
)
{
protected
void
onPostExecute
(
Void
v
)
{
magiskManager
.
repoLoadDone
.
trigger
();
magiskManager
.
repoLoadDone
.
trigger
();
super
.
onPostExecute
(
v
);
}
}
}
}
app/src/main/java/com/topjohnwu/magisk/asyncs/MagiskHide.java
View file @
efeddda3
...
@@ -6,7 +6,7 @@ import com.topjohnwu.magisk.utils.Shell;
...
@@ -6,7 +6,7 @@ import com.topjohnwu.magisk.utils.Shell;
import
java.util.List
;
import
java.util.List
;
public
class
MagiskHide
extends
Serial
Task
<
Object
,
Void
,
Void
>
{
public
class
MagiskHide
extends
Root
Task
<
Object
,
Void
,
Void
>
{
private
boolean
isList
=
false
;
private
boolean
isList
=
false
;
...
@@ -17,7 +17,7 @@ public class MagiskHide extends SerialTask<Object, Void, Void> {
...
@@ -17,7 +17,7 @@ public class MagiskHide extends SerialTask<Object, Void, Void> {
}
}
@Override
@Override
protected
Void
doIn
Background
(
Object
...
params
)
{
protected
Void
doIn
Root
(
Object
...
params
)
{
String
command
=
(
String
)
params
[
0
];
String
command
=
(
String
)
params
[
0
];
List
<
String
>
ret
=
Shell
.
su
(
"magiskhide --"
+
command
);
List
<
String
>
ret
=
Shell
.
su
(
"magiskhide --"
+
command
);
if
(
isList
)
{
if
(
isList
)
{
...
@@ -31,6 +31,7 @@ public class MagiskHide extends SerialTask<Object, Void, Void> {
...
@@ -31,6 +31,7 @@ public class MagiskHide extends SerialTask<Object, Void, Void> {
if
(
isList
)
{
if
(
isList
)
{
magiskManager
.
magiskHideDone
.
trigger
();
magiskManager
.
magiskHideDone
.
trigger
();
}
}
super
.
onPostExecute
(
v
);
}
}
public
void
add
(
CharSequence
packageName
)
{
public
void
add
(
CharSequence
packageName
)
{
...
...
app/src/main/java/com/topjohnwu/magisk/asyncs/ParallelTask.java
View file @
efeddda3
...
@@ -7,9 +7,12 @@ import com.topjohnwu.magisk.MagiskManager;
...
@@ -7,9 +7,12 @@ import com.topjohnwu.magisk.MagiskManager;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
public
abstract
class
ParallelTask
<
Params
,
Progress
,
Result
>
extends
AsyncTask
<
Params
,
Progress
,
Result
>
{
public
abstract
class
ParallelTask
<
Params
,
Progress
,
Result
>
extends
AsyncTask
<
Params
,
Progress
,
Result
>
{
protected
Activity
activity
;
protected
Activity
activity
;
protected
MagiskManager
magiskManager
;
protected
MagiskManager
magiskManager
;
private
Runnable
callback
=
null
;
public
ParallelTask
()
{}
public
ParallelTask
()
{}
public
ParallelTask
(
Activity
context
)
{
public
ParallelTask
(
Activity
context
)
{
...
@@ -17,8 +20,18 @@ public abstract class ParallelTask<Params, Progress, Result> extends AsyncTask<P
...
@@ -17,8 +20,18 @@ public abstract class ParallelTask<Params, Progress, Result> extends AsyncTask<P
magiskManager
=
Utils
.
getMagiskManager
(
context
);
magiskManager
=
Utils
.
getMagiskManager
(
context
);
}
}
@S
afeVarargs
@S
uppressWarnings
(
"unchecked"
)
public
final
void
exec
(
Params
...
params
)
{
public
void
exec
(
Params
...
params
)
{
executeOnExecutor
(
AsyncTask
.
THREAD_POOL_EXECUTOR
,
params
);
executeOnExecutor
(
AsyncTask
.
THREAD_POOL_EXECUTOR
,
params
);
}
}
@Override
protected
void
onPostExecute
(
Result
result
)
{
if
(
callback
!=
null
)
callback
.
run
();
}
public
ParallelTask
<
Params
,
Progress
,
Result
>
setCallBack
(
Runnable
next
)
{
callback
=
next
;
return
this
;
}
}
}
app/src/main/java/com/topjohnwu/magisk/asyncs/ProcessMagiskZip.java
View file @
efeddda3
...
@@ -33,13 +33,13 @@ public class ProcessMagiskZip extends ParallelTask<Void, Void, Boolean> {
...
@@ -33,13 +33,13 @@ public class ProcessMagiskZip extends ParallelTask<Void, Void, Boolean> {
@Override
@Override
protected
Boolean
doInBackground
(
Void
...
params
)
{
protected
Boolean
doInBackground
(
Void
...
params
)
{
if
(
Shell
.
rootAccess
())
{
if
(
Shell
.
rootAccess
())
{
// Running in parallel mode, open new shell
synchronized
(
Shell
.
lock
)
{
Shell
.
su
(
true
,
Shell
.
su
(
"rm -f /dev/.magisk"
,
"rm -f /dev/.magisk"
,
(
mBoot
!=
null
)
?
"echo \"BOOTIMAGE="
+
mBoot
+
"\" >> /dev/.magisk"
:
""
,
(
mBoot
!=
null
)
?
"echo \"BOOTIMAGE=/dev/block/"
+
mBoot
+
"\" >> /dev/.magisk"
:
""
,
"echo \"KEEPFORCEENCRYPT="
+
String
.
valueOf
(
mEnc
)
+
"\" >> /dev/.magisk"
,
"echo \"KEEPFORCEENCRYPT="
+
String
.
valueOf
(
mEnc
)
+
"\" >> /dev/.magisk"
,
"echo \"KEEPVERITY="
+
String
.
valueOf
(
mVerity
)
+
"\" >> /dev/.magisk"
"echo \"KEEPVERITY="
+
String
.
valueOf
(
mVerity
)
+
"\" >> /dev/.magisk"
);
);
}
return
true
;
return
true
;
}
}
return
false
;
return
false
;
...
@@ -53,5 +53,6 @@ public class ProcessMagiskZip extends ParallelTask<Void, Void, Boolean> {
...
@@ -53,5 +53,6 @@ public class ProcessMagiskZip extends ParallelTask<Void, Void, Boolean> {
}
else
{
}
else
{
Utils
.
showUriSnack
(
activity
,
mUri
);
Utils
.
showUriSnack
(
activity
,
mUri
);
}
}
super
.
onPostExecute
(
result
);
}
}
}
}
app/src/main/java/com/topjohnwu/magisk/asyncs/RootTask.java
0 → 100644
View file @
efeddda3
package
com
.
topjohnwu
.
magisk
.
asyncs
;
import
android.app.Activity
;
import
com.topjohnwu.magisk.utils.Shell
;
public
abstract
class
RootTask
<
Params
,
Progress
,
Result
>
extends
ParallelTask
<
Params
,
Progress
,
Result
>
{
public
RootTask
()
{}
public
RootTask
(
Activity
context
)
{
super
(
context
);
}
@SafeVarargs
@Override
final
protected
Result
doInBackground
(
Params
...
params
)
{
synchronized
(
Shell
.
lock
)
{
return
doInRoot
(
params
);
}
}
@SuppressWarnings
(
"unchecked"
)
abstract
protected
Result
doInRoot
(
Params
...
params
);
@SuppressWarnings
(
"unchecked"
)
@Override
public
void
exec
(
Params
...
params
)
{
if
(
Shell
.
rootAccess
())
{
super
.
exec
(
params
);
}
}
}
app/src/main/java/com/topjohnwu/magisk/asyncs/SerialTask.java
deleted
100644 → 0
View file @
ff693828
package
com
.
topjohnwu
.
magisk
.
asyncs
;
import
android.app.Activity
;
import
android.os.AsyncTask
;
import
com.topjohnwu.magisk.MagiskManager
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Utils
;
/**
* This class is only used for running root commands
**/
public
abstract
class
SerialTask
<
Params
,
Progress
,
Result
>
extends
AsyncTask
<
Params
,
Progress
,
Result
>
{
protected
Activity
activity
;
protected
MagiskManager
magiskManager
;
public
SerialTask
()
{}
public
SerialTask
(
Activity
context
)
{
activity
=
context
;
magiskManager
=
Utils
.
getMagiskManager
(
context
);
}
@SafeVarargs
public
final
void
exec
(
Params
...
params
)
{
if
(!
Shell
.
rootAccess
())
return
;
executeOnExecutor
(
AsyncTask
.
SERIAL_EXECUTOR
,
params
);
}
}
app/src/main/java/com/topjohnwu/magisk/module/Module.java
View file @
efeddda3
...
@@ -33,11 +33,13 @@ public class Module extends BaseModule {
...
@@ -33,11 +33,13 @@ public class Module extends BaseModule {
}
}
public
void
createDisableFile
()
{
public
void
createDisableFile
()
{
mEnable
=
!
Utils
.
createFile
(
mDisableFile
);
mEnable
=
false
;
Utils
.
createFile
(
mDisableFile
);
}
}
public
void
removeDisableFile
()
{
public
void
removeDisableFile
()
{
mEnable
=
Utils
.
removeItem
(
mDisableFile
);
mEnable
=
true
;
Utils
.
removeItem
(
mDisableFile
);
}
}
public
boolean
isEnabled
()
{
public
boolean
isEnabled
()
{
...
@@ -45,11 +47,13 @@ public class Module extends BaseModule {
...
@@ -45,11 +47,13 @@ public class Module extends BaseModule {
}
}
public
void
createRemoveFile
()
{
public
void
createRemoveFile
()
{
mRemove
=
Utils
.
createFile
(
mRemoveFile
);
mRemove
=
true
;
Utils
.
createFile
(
mRemoveFile
);
}
}
public
void
deleteRemoveFile
()
{
public
void
deleteRemoveFile
()
{
mRemove
=
!
Utils
.
removeItem
(
mRemoveFile
);
mRemove
=
false
;
Utils
.
removeItem
(
mRemoveFile
);
}
}
public
boolean
willBeRemoved
()
{
public
boolean
willBeRemoved
()
{
...
...
app/src/main/java/com/topjohnwu/magisk/utils/Shell.java
View file @
efeddda3
package
com
.
topjohnwu
.
magisk
.
utils
;
package
com
.
topjohnwu
.
magisk
.
utils
;
import
com.topjohnwu.magisk.asyncs.RootTask
;
import
java.io.DataOutputStream
;
import
java.io.DataOutputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -14,6 +16,7 @@ public class Shell {
...
@@ -14,6 +16,7 @@ public class Shell {
// -1 = problematic/unknown issue; 0 = not rooted; 1 = properly rooted
// -1 = problematic/unknown issue; 0 = not rooted; 1 = properly rooted
public
static
int
rootStatus
;
public
static
int
rootStatus
;
public
static
final
Object
lock
=
new
Object
();
private
static
boolean
isInit
=
false
;
private
static
boolean
isInit
=
false
;
private
static
Process
rootShell
;
private
static
Process
rootShell
;
...
@@ -212,4 +215,15 @@ public class Shell {
...
@@ -212,4 +215,15 @@ public class Shell {
return
new
ArrayList
<>(
res
);
return
new
ArrayList
<>(
res
);
}
}
public
static
void
su_async
(
List
<
String
>
result
,
String
...
commands
)
{
new
RootTask
<
Void
,
Void
,
Void
>()
{
@Override
protected
Void
doInRoot
(
Void
...
params
)
{
List
<
String
>
ret
=
Shell
.
su
(
commands
);
if
(
result
!=
null
)
result
.
addAll
(
ret
);
return
null
;
}
}.
exec
();
}
}
}
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
View file @
efeddda3
...
@@ -39,23 +39,15 @@ public class Utils {
...
@@ -39,23 +39,15 @@ public class Utils {
return
isValidShellResponse
(
ret
)
&&
Boolean
.
parseBoolean
(
ret
.
get
(
0
));
return
isValidShellResponse
(
ret
)
&&
Boolean
.
parseBoolean
(
ret
.
get
(
0
));
}
}
public
static
boolean
commandExists
(
String
s
)
{
public
static
void
createFile
(
String
path
)
{
String
command
=
"if [ -z $(which "
+
s
+
") ]; then echo false; else echo true; fi"
;
List
<
String
>
ret
=
Shell
.
sh
(
command
);
return
isValidShellResponse
(
ret
)
&&
Boolean
.
parseBoolean
(
ret
.
get
(
0
));
}
public
static
boolean
createFile
(
String
path
)
{
String
folder
=
path
.
substring
(
0
,
path
.
lastIndexOf
(
'/'
));
String
folder
=
path
.
substring
(
0
,
path
.
lastIndexOf
(
'/'
));
String
command
=
"mkdir -p "
+
folder
+
" 2>/dev/null; touch "
+
path
+
" 2>/dev/null; if [ -f \""
+
path
+
"\" ]; then echo true; else echo false; fi"
;
String
command
=
"mkdir -p "
+
folder
+
" 2>/dev/null; touch "
+
path
+
" 2>/dev/null; if [ -f \""
+
path
+
"\" ]; then echo true; else echo false; fi"
;
List
<
String
>
ret
=
Shell
.
su
(
command
);
Shell
.
su_async
(
null
,
command
);
return
isValidShellResponse
(
ret
)
&&
Boolean
.
parseBoolean
(
ret
.
get
(
0
));
}
}
public
static
boolean
removeItem
(
String
path
)
{
public
static
void
removeItem
(
String
path
)
{
String
command
=
"rm -rf "
+
path
+
" 2>/dev/null; if [ -e "
+
path
+
" ]; then echo false; else echo true; fi"
;
String
command
=
"rm -rf "
+
path
+
" 2>/dev/null; if [ -e "
+
path
+
" ]; then echo false; else echo true; fi"
;
List
<
String
>
ret
=
Shell
.
su
(
command
);
Shell
.
su_async
(
null
,
command
);
return
isValidShellResponse
(
ret
)
&&
Boolean
.
parseBoolean
(
ret
.
get
(
0
));
}
}
public
static
List
<
String
>
getModList
(
String
path
)
{
public
static
List
<
String
>
getModList
(
String
path
)
{
...
@@ -116,7 +108,7 @@ public class Utils {
...
@@ -116,7 +108,7 @@ public class Utils {
"BOOTIMAGE=`readlink /dev/block/by-name/$PARTITION || readlink /dev/block/platform/*/by-name/$PARTITION || readlink /dev/block/platform/*/*/by-name/$PARTITION`"
,
"BOOTIMAGE=`readlink /dev/block/by-name/$PARTITION || readlink /dev/block/platform/*/by-name/$PARTITION || readlink /dev/block/platform/*/*/by-name/$PARTITION`"
,
"if [ ! -z \"$BOOTIMAGE\" ]; then break; fi"
,
"if [ ! -z \"$BOOTIMAGE\" ]; then break; fi"
,
"done"
,
"done"
,
"echo \"$
{BOOTIMAGE##*/}
\""
"echo \"$
BOOTIMAGE
\""
};
};
List
<
String
>
ret
=
Shell
.
su
(
commands
);
List
<
String
>
ret
=
Shell
.
su
(
commands
);
if
(
isValidShellResponse
(
ret
))
{
if
(
isValidShellResponse
(
ret
))
{
...
...
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