@@ -29,20 +29,29 @@ public ShellEnv(Context c) {
29
29
private boolean execCmd (List <String > params ) {
30
30
boolean result = true ;
31
31
try {
32
- Process process = Runtime .getRuntime ().exec (params .get (0 ));
33
- params .remove (0 );
32
+ Process process = Runtime .getRuntime ().exec ("su" );
33
+
34
+ final OutputStream stdin = process .getOutputStream ();
35
+ final InputStream stdout = process .getInputStream ();
36
+ final InputStream stderr = process .getErrorStream ();
37
+
38
+ params .add ("exit $?" );
39
+ params .add (0 , "PATH=" + PrefStore .ENV_DIR
40
+ + "/bin:$PATH; export PATH" );
41
+ if (!PrefStore .DEBUG_MODE .equals ("y" )) {
42
+ params .add (0 , "exec 2>/dev/null" );
43
+ params .add (0 , "exec 1>/dev/null" );
44
+ }
45
+ if (PrefStore .TRACE_MODE .equals ("y" ))
46
+ params .add (0 , "set -x" );
34
47
35
- OutputStream stdin = process .getOutputStream ();
36
48
DataOutputStream os = new DataOutputStream (stdin );
37
- for (String tmpCmd : params ) {
38
- os .writeBytes (tmpCmd + "\n " );
49
+ for (String cmd : params ) {
50
+ os .writeBytes (cmd + "\n " );
39
51
}
40
52
os .flush ();
41
53
os .close ();
42
54
43
- final InputStream stdout = process .getInputStream ();
44
- final InputStream stderr = process .getErrorStream ();
45
-
46
55
(new Thread () {
47
56
@ Override
48
57
public void run () {
@@ -60,6 +69,7 @@ public void run() {
60
69
}
61
70
62
71
process .waitFor ();
72
+
63
73
if (process .exitValue () != 0 )
64
74
result = false ;
65
75
@@ -110,7 +120,6 @@ public void run() {
110
120
private boolean isRooted () {
111
121
// exec linuxdeploy command
112
122
List <String > params = new ArrayList <String >();
113
- params .add ("su" );
114
123
params .add ("ls /data/local 1>/dev/null" );
115
124
if (!execCmd (params )) {
116
125
sendLogs ("Require superuser privileges (root)!\n " );
@@ -170,7 +179,7 @@ private boolean extractDir(String rootAsset, String path) {
170
179
if (!extractFile (rootAsset , path ))
171
180
return false ;
172
181
} else {
173
- String fullPath = PrefStore .ENV_DIR + path ;
182
+ String fullPath = PrefStore .ENV_DIR + path ;
174
183
File dir = new File (fullPath );
175
184
if (!dir .exists ()) {
176
185
dir .mkdir ();
@@ -200,19 +209,11 @@ public void updateEnv() {
200
209
}
201
210
202
211
List <String > params = new ArrayList <String >();
203
- params .add ("su" );
204
- if (PrefStore .TRACE_MODE .equals ("y" ))
205
- params .add ("set -x" );
206
- if (!PrefStore .DEBUG_MODE .equals ("y" )) {
207
- params .add ("exec 1>/dev/null" );
208
- params .add ("exec 2>/dev/null" );
209
- }
210
212
params .add ("mkdir " + PrefStore .ENV_DIR );
211
213
params .add ("rm -R " + PrefStore .ENV_DIR + "/bin" );
212
214
params .add ("rm -R " + PrefStore .ENV_DIR + "/etc" );
213
215
params .add ("rm -R " + PrefStore .ENV_DIR + "/deploy" );
214
216
params .add ("chmod 777 " + PrefStore .ENV_DIR );
215
- params .add ("exit" );
216
217
if (!execCmd (params )) {
217
218
sendLogs ("fail\n " );
218
219
return ;
@@ -222,37 +223,30 @@ public void updateEnv() {
222
223
sendLogs ("fail\n " );
223
224
return ;
224
225
}
225
- if (!extractDir (PrefStore .MARCH + "/all" , "" )) {
226
+ if (!extractDir (PrefStore .MARCH + "/all" , "" )) {
226
227
sendLogs ("fail\n " );
227
228
return ;
228
229
}
229
230
// PIE for Android L
230
231
if (android .os .Build .VERSION .SDK_INT >= 21 ) {
231
- if (!extractDir (PrefStore .MARCH + "/pie" , "" )) {
232
+ if (!extractDir (PrefStore .MARCH + "/pie" , "" )) {
232
233
sendLogs ("fail\n " );
233
234
return ;
234
235
}
235
236
} else {
236
- if (!extractDir (PrefStore .MARCH + "/nopie" , "" )) {
237
+ if (!extractDir (PrefStore .MARCH + "/nopie" , "" )) {
237
238
sendLogs ("fail\n " );
238
239
return ;
239
240
}
240
241
}
241
242
242
243
params .clear ();
243
- params .add ("su" );
244
- if (PrefStore .TRACE_MODE .equals ("y" ))
245
- params .add ("set -x" );
246
- if (!PrefStore .DEBUG_MODE .equals ("y" )) {
247
- params .add ("exec 1>/dev/null" );
248
- params .add ("exec 2>/dev/null" );
249
- }
244
+
250
245
if (PrefStore .BUILTIN_SHELL ) {
251
246
params .add ("chmod 755 " + PrefStore .ENV_DIR + "/bin/busybox" );
252
247
params .add (PrefStore .ENV_DIR + "/bin/busybox --install -s "
253
- + PrefStore .ENV_DIR + "/bin" );
248
+ + PrefStore .ENV_DIR + "/bin" );
254
249
}
255
- params .add ("PATH=" + PrefStore .ENV_DIR + "/bin:$PATH; export PATH" );
256
250
if (PrefStore .SYMLINK ) {
257
251
params .add ("rm -f /system/bin/linuxdeploy" );
258
252
params .add ("ln -s "
@@ -265,12 +259,13 @@ public void updateEnv() {
265
259
params .add ("echo '" + PrefStore .VERSION + "' > " + PrefStore .ENV_DIR
266
260
+ "/etc/version" );
267
261
params .add ("chmod 755 " + PrefStore .ENV_DIR );
268
- String [] files = {PrefStore .ENV_DIR + "/bin" , PrefStore .ENV_DIR + "/etc" , PrefStore .ENV_DIR + "/deploy" };
269
- for (int i = 0 ; i < files .length ; i ++) {
270
- params .add ("chmod -R 755 " + files [i ]);
271
- params .add ("find " + files [i ] + " | while read f; do chmod 755 $f; done" );
262
+ String [] dirs = { PrefStore .ENV_DIR + "/bin" ,
263
+ PrefStore .ENV_DIR + "/etc" , PrefStore .ENV_DIR + "/deploy" };
264
+ for (int i = 0 ; i < dirs .length ; i ++) {
265
+ params .add ("chmod -R 755 " + dirs [i ]);
266
+ params .add ("find " + dirs [i ]
267
+ + " | while read f; do chmod 755 $f; done" );
272
268
}
273
- params .add ("exit" );
274
269
if (!execCmd (params )) {
275
270
sendLogs ("fail\n " );
276
271
return ;
@@ -289,14 +284,6 @@ public void updateConfig() {
289
284
sendLogs ("Updating configuration file ... " );
290
285
291
286
List <String > params = new ArrayList <String >();
292
- params .add ("su" );
293
- if (PrefStore .TRACE_MODE .equals ("y" ))
294
- params .add ("set -x" );
295
- if (!PrefStore .DEBUG_MODE .equals ("y" )) {
296
- params .add ("exec 1>/dev/null" );
297
- params .add ("exec 2>/dev/null" );
298
- }
299
- params .add ("PATH=" + PrefStore .ENV_DIR + "/bin:$PATH; export PATH" );
300
287
params .add ("cd " + PrefStore .ENV_DIR );
301
288
params .add ("sed -i 's|^ENV_DIR=.*|ENV_DIR=\" " + PrefStore .ENV_DIR
302
289
+ "\" |g' " + PrefStore .ENV_DIR + "/bin/linuxdeploy" );
@@ -361,9 +348,8 @@ public void updateConfig() {
361
348
params .add ("sed -i 's|^VNC_GEOMETRY=.*|VNC_GEOMETRY=\" "
362
349
+ PrefStore .VNC_GEOMETRY + "\" |g' " + PrefStore .ENV_DIR
363
350
+ "/etc/deploy.conf" );
364
- params .add ("sed -i 's|^VNC_ARGS=.*|VNC_ARGS=\" "
365
- + PrefStore .VNC_ARGS + "\" |g' " + PrefStore .ENV_DIR
366
- + "/etc/deploy.conf" );
351
+ params .add ("sed -i 's|^VNC_ARGS=.*|VNC_ARGS=\" " + PrefStore .VNC_ARGS
352
+ + "\" |g' " + PrefStore .ENV_DIR + "/etc/deploy.conf" );
367
353
params .add ("sed -i 's|^XSERVER_DISPLAY=.*|XSERVER_DISPLAY=\" "
368
354
+ PrefStore .XSERVER_DISPLAY + "\" |g' " + PrefStore .ENV_DIR
369
355
+ "/etc/deploy.conf" );
@@ -383,7 +369,6 @@ public void updateConfig() {
383
369
+ "\" |g' " + PrefStore .ENV_DIR + "/etc/deploy.conf" );
384
370
params .add ("sed -i 's|^FB_FREEZE=.*|FB_FREEZE=\" " + PrefStore .FB_FREEZE
385
371
+ "\" |g' " + PrefStore .ENV_DIR + "/etc/deploy.conf" );
386
- params .add ("[ $? -eq 0 ] && exit 0 || exit 1" );
387
372
388
373
if (!execCmd (params )) {
389
374
sendLogs ("fail\n " );
@@ -421,11 +406,7 @@ public void deployCmd(String cmd) {
421
406
}
422
407
// exec linuxdeploy command
423
408
List <String > params = new ArrayList <String >();
424
- params .add ("su" );
425
- if (PrefStore .TRACE_MODE .equals ("y" ))
426
- params .add ("set -x" );
427
409
params .add (PrefStore .ENV_DIR + "/bin/linuxdeploy " + cmd );
428
- params .add ("exit" );
429
410
execCmd (params );
430
411
}
431
412
0 commit comments