Release 2.1.2

This commit is contained in:
topjohnwu 2018-11-25 03:23:34 -05:00
parent 88a25df617
commit a0f69636f4
38 changed files with 566 additions and 58 deletions

View File

@ -1,4 +1,4 @@
# 2.1.1
# 2.1.2
## Bug fixes
- Fix a bug that could cause `new SuFile(parent, name)` to fail
@ -8,7 +8,6 @@
## API Changes
- Add `boolean Shell.waitAndClose(long, TimeUnit)` and `void Shell.waitAndClose()`. You can now wait for all tasks to finish before closing the shell instance.
- Add `Shell.Config.setTimeout(long)`. Use it to set the maximum time for waiting a new shell construction. The default value is 20 seconds.
- Deprecate `ContainerApp`. libsu can now automatically inject root shells directly into Application contexts without any configuration, so `ContainerApp` is no longer needed. This class will be removed in the next update.
# 2.0.3

View File

@ -29,14 +29,65 @@ repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.topjohnwu:libsu:2.1.1'
implementation 'com.github.topjohnwu:libsu:2.1.2'
}
```
## Quick Tutorial
### Setup Container
If you don't extend `Application` in your app, directly use `ContainerApp` as application:
```xml
<!-- AndroidManifest.xml -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...>
<application
android:name="com.topjohnwu.superuser.ContainerApp"
...>
...
</application>
</manifest>
```
Or if you use your own `Application` class, extend `ContainerApp`:
```java
public class MyApplication extends ContainerApp {
@Override
public void onCreate() {
super.onCreate();
// You can configure Shell here
Shell.Config.setFlags(Shell.FLAG_REDIRECT_STDERR);
Shell.Config.verboseLogging(BuildConfig.DEBUG);
// Use libsu's internal BusyBox
BusyBox.setup(this);
/* Your other code */
...
}
}
```
Or if you cannot change you base class, here is a workaround:
```java
public class MyApplication extends CustomApplication {
// Create a new Container field to store the root shell
private Shell.Container container;
@Override
public void onCreate() {
super.onCreate();
// Assign the container with a pre-configured Container
container = Shell.Config.newContainer();
/* Configure shell and your other code */
...
}
}
```
### Shell Operations
High level APIs: `Shell.su()`/`Shell.sh()`:
Once you have the container setup, you can directly use the high level APIs: `Shell.su()`/`Shell.sh()`:
```java
// Run commands and get output immediately

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>All Classes (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
@ -14,6 +14,7 @@
<ul>
<li><a href="com/topjohnwu/superuser/BusyBox.html" title="class in com.topjohnwu.superuser" target="classFrame">BusyBox</a></li>
<li><a href="com/topjohnwu/superuser/CallbackList.html" title="class in com.topjohnwu.superuser" target="classFrame">CallbackList</a></li>
<li><a href="com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser" target="classFrame">ContainerApp</a></li>
<li><a href="com/topjohnwu/superuser/NoShellException.html" title="class in com.topjohnwu.superuser" target="classFrame">NoShellException</a></li>
<li><a href="com/topjohnwu/superuser/Shell.html" title="class in com.topjohnwu.superuser" target="classFrame">Shell</a></li>
<li><a href="com/topjohnwu/superuser/Shell.Config.html" title="class in com.topjohnwu.superuser" target="classFrame">Shell.Config</a></li>

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>All Classes (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
@ -14,6 +14,7 @@
<ul>
<li><a href="com/topjohnwu/superuser/BusyBox.html" title="class in com.topjohnwu.superuser">BusyBox</a></li>
<li><a href="com/topjohnwu/superuser/CallbackList.html" title="class in com.topjohnwu.superuser">CallbackList</a></li>
<li><a href="com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser">ContainerApp</a></li>
<li><a href="com/topjohnwu/superuser/NoShellException.html" title="class in com.topjohnwu.superuser">NoShellException</a></li>
<li><a href="com/topjohnwu/superuser/Shell.html" title="class in com.topjohnwu.superuser">Shell</a></li>
<li><a href="com/topjohnwu/superuser/Shell.Config.html" title="class in com.topjohnwu.superuser">Shell.Config</a></li>

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>BusyBox (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>CallbackList (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/topjohnwu/superuser/BusyBox.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
<li><a href="../../../com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/topjohnwu/superuser/CallbackList.html" target="_top">Frames</a></li>
@ -479,7 +479,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/AbstractLis
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/topjohnwu/superuser/BusyBox.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
<li><a href="../../../com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/topjohnwu/superuser/CallbackList.html" target="_top">Frames</a></li>

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>NoShellException (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@ -41,7 +41,7 @@
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../com/topjohnwu/superuser/Shell.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
@ -180,7 +180,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeExce
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../com/topjohnwu/superuser/Shell.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Shell.Config (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@ -18,7 +18,7 @@
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9};
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@ -166,6 +166,12 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/topjohnwu/superuser/Shell.Config.html#setTimeout-long-">setTimeout</a></span>(long&nbsp;timeout)</code>
<div class="block">Set the maximum time to wait for a new shell construction.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/topjohnwu/superuser/Shell.Config.html#verboseLogging-boolean-">verboseLogging</a></span>(boolean&nbsp;verbose)</code>
<div class="block">Set whether enable verbose logging.</div>
</td>
@ -280,6 +286,24 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
</dl>
</li>
</ul>
<a name="setTimeout-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTimeout</h4>
<pre>public static&nbsp;void&nbsp;setTimeout(long&nbsp;timeout)</pre>
<div class="block">Set the maximum time to wait for a new shell construction.
<p>
After the timeout occurs and the new shell still have no response,
the shell process will be force-closed and throw <a href="../../../com/topjohnwu/superuser/NoShellException.html" title="class in com.topjohnwu.superuser"><code>NoShellException</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>timeout</code> - the maximum time to wait in seconds.
The default timeout is 20 seconds.</dd>
</dl>
</li>
</ul>
<a name="verboseLogging-boolean-">
<!-- -->
</a>

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Shell.Container (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@ -98,16 +98,20 @@ var activeTableTab = "activeTableTab";
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser">ContainerApp</a></dd>
</dl>
<dl>
<dt>Enclosing class:</dt>
<dd><a href="../../../com/topjohnwu/superuser/Shell.html" title="class in com.topjohnwu.superuser">Shell</a></dd>
</dl>
<hr>
<br>
<pre>public static interface <span class="typeNameLabel">Shell.Container</span></pre>
<div class="block">A container to store the global <code>Shell</code> instance.
<div class="block">The container to store the global <code>Shell</code> instance.
<p>
In order to store a shell instance somewhere in a component of your app, the easiest way
is to create a new non-static <a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser"><code>Shell.Container</code></a> field in the class and assign it with
is to create a new non-static <a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser"><code>Shell.Container</code></a> field in your class and assign the value with
the object returned from <a href="../../../com/topjohnwu/superuser/Shell.Config.html#newContainer--"><code>Shell.Config.newContainer()</code></a>.
<p>
If you decide to go the more complicated route by implementing <a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser"><code>Shell.Container</code></a> in your

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Shell.GetShellCallback (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Shell.Initializer (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Shell.Job (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Shell.Result (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Shell.ResultCallback (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Shell.Task (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:55 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Shell (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@ -116,14 +116,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></pre>
<div class="block">A class providing an API to an interactive (root) shell.
<p>
Sharing shells means that a <code>Shell</code> instance would need to be stored somewhere globally.
By default, libsu will inject a root shell directly into the application context, so the shell
lives along with the application lifecycle. If for some reason one would want to store the
global <code>Shell</code> instance somewhere else, check the documentation of <a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser"><code>Shell.Container</code></a>.
Sharing shells means that the <code>Shell</code> instance would need to be stored somewhere.
Generally, most developers would want to have the <code>Shell</code> instance shared globally
across the application. In that case, the developer can directly use or subclass the the readily
available <a href="../../../com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser"><code>ContainerApp</code></a> and the setup is all done. If you already
overridden <a href="https://developer.android.com/reference/android/app/Application.html?is-external=true" title="class or interface in android.app"><code>Application</code></a>, and it is impossible to change the base class,
or for some reason one would want to store the <code>Shell</code> instance somewhere else, check the
documentation of <a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser"><code>Shell.Container</code></a> for more info. Once a global <a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser"><code>Shell.Container</code></a> is registered,
use <a href="../../../com/topjohnwu/superuser/Shell.html#getShell--"><code>getShell()</code></a> or <a href="../../../com/topjohnwu/superuser/Shell.html#getShell-com.topjohnwu.superuser.Shell.GetShellCallback-"><code>getShell(GetShellCallback)</code></a> to get/construct <code>Shell</code>.
<p>
Use <a href="../../../com/topjohnwu/superuser/Shell.html#getShell--"><code>getShell()</code></a> or <a href="../../../com/topjohnwu/superuser/Shell.html#getShell-com.topjohnwu.superuser.Shell.GetShellCallback-"><code>getShell(GetShellCallback)</code></a> to get/construct <code>Shell</code>.
However in most cases, developers do not need to use a <code>Shell</code> instance directly.
Use these high level APIs instead:
However in most cases, developers do not need to deal with a <code>Shell</code> instance.
Use these high level APIs:
<ul>
<li><a href="../../../com/topjohnwu/superuser/Shell.html#sh-java.lang.String...-"><code>sh(String...)</code></a></li>
<li><a href="../../../com/topjohnwu/superuser/Shell.html#su-java.lang.String...-"><code>su(String...)</code></a></li>
@ -161,7 +164,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
<tr class="rowColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser">Shell.Container</a></span></code>
<div class="block">A container to store the global <code>Shell</code> instance.</div>
<div class="block">The container to store the global <code>Shell</code> instance.</div>
</td>
</tr>
<tr class="altColor">
@ -487,8 +490,15 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
<pre>public static final&nbsp;int FLAG_REDIRECT_STDERR</pre>
<div class="block">If set, STDERR outputs will be stored in STDOUT outputs.
<p>
This flag will NOT affect <a href="../../../com/topjohnwu/superuser/Shell.Job.html#to-java.util.List-java.util.List-"><code>Shell.Job.to(List, List)</code></a>, since
that method explicitly requests to store stderr outputs to a specific List.
Note: This flag only affects the following methods:
<ul>
<li><a href="../../../com/topjohnwu/superuser/Shell.html#sh-java.lang.String...-"><code>sh(String...)</code></a></li>
<li><a href="../../../com/topjohnwu/superuser/Shell.html#su-java.lang.String...-"><code>su(String...)</code></a></li>
<li><a href="../../../com/topjohnwu/superuser/Shell.html#sh-java.io.InputStream-"><code>sh(InputStream)</code></a></li>
<li><a href="../../../com/topjohnwu/superuser/Shell.html#su-java.io.InputStream-"><code>su(InputStream)</code></a></li>
<li><a href="../../../com/topjohnwu/superuser/Shell.Job.html#to-java.util.List-"><code>Shell.Job.to(List)</code></a></li>
</ul>
Check the descriptions of each method above for more details.
<p>
Constant value 8.</div>
<dl>

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>ShellUtils (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>SuFile (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>SuFileInputStream (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>SuFileOutputStream (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>SuProcessFileInputStream (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>SuProcessFileOutputStream (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>SuRandomAccessFile (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>com.topjohnwu.superuser.io (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>com.topjohnwu.superuser.io (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>com.topjohnwu.superuser.io Class Hierarchy (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>com.topjohnwu.superuser (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@ -22,6 +22,7 @@
<ul title="Classes">
<li><a href="BusyBox.html" title="class in com.topjohnwu.superuser" target="classFrame">BusyBox</a></li>
<li><a href="CallbackList.html" title="class in com.topjohnwu.superuser" target="classFrame">CallbackList</a></li>
<li><a href="ContainerApp.html" title="class in com.topjohnwu.superuser" target="classFrame">ContainerApp</a></li>
<li><a href="Shell.html" title="class in com.topjohnwu.superuser" target="classFrame">Shell</a></li>
<li><a href="Shell.Config.html" title="class in com.topjohnwu.superuser" target="classFrame">Shell.Config</a></li>
<li><a href="Shell.Initializer.html" title="class in com.topjohnwu.superuser" target="classFrame">Shell.Initializer</a></li>

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>com.topjohnwu.superuser (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@ -83,7 +83,7 @@
<tr class="altColor">
<td class="colFirst"><a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser">Shell.Container</a></td>
<td class="colLast">
<div class="block">A container to store the global <code>Shell</code> instance.</div>
<div class="block">The container to store the global <code>Shell</code> instance.</div>
</td>
</tr>
<tr class="rowColor">
@ -127,6 +127,12 @@
<div class="block">An <a href="https://docs.oracle.com/javase/8/docs/api/java/util/AbstractList.html?is-external=true" title="class or interface in java.util"><code>AbstractList</code></a> that calls <code>onAddElement</code> when a new element is added to the list.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser">ContainerApp</a></td>
<td class="colLast">
<div class="block">A subclass of <a href="https://developer.android.com/reference/android/app/Application.html?is-external=true" title="class or interface in android.app"><code>Application</code></a> with a <a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser"><code>Shell.Container</code></a> injected.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../com/topjohnwu/superuser/Shell.html" title="class in com.topjohnwu.superuser">Shell</a></td>
<td class="colLast">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>com.topjohnwu.superuser Class Hierarchy (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
@ -89,6 +89,19 @@
</ul>
</li>
<li type="circle">com.topjohnwu.superuser.<a href="../../../com/topjohnwu/superuser/BusyBox.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">BusyBox</span></a></li>
<li type="circle">android.content.<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content"><span class="typeNameLink">Context</span></a>
<ul>
<li type="circle">android.content.<a href="https://developer.android.com/reference/android/content/ContextWrapper.html?is-external=true" title="class or interface in android.content"><span class="typeNameLink">ContextWrapper</span></a>
<ul>
<li type="circle">android.app.<a href="https://developer.android.com/reference/android/app/Application.html?is-external=true" title="class or interface in android.app"><span class="typeNameLink">Application</span></a> (implements android.content.<a href="https://developer.android.com/reference/android/content/ComponentCallbacks2.html?is-external=true" title="class or interface in android.content">ComponentCallbacks2</a>)
<ul>
<li type="circle">com.topjohnwu.superuser.<a href="../../../com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">ContainerApp</span></a> (implements com.topjohnwu.superuser.<a href="../../../com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser">Shell.Container</a>)</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li type="circle">com.topjohnwu.superuser.<a href="../../../com/topjohnwu/superuser/Shell.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Shell</span></a> (implements java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>)</li>
<li type="circle">com.topjohnwu.superuser.<a href="../../../com/topjohnwu/superuser/Shell.Config.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Shell.Config</span></a></li>
<li type="circle">com.topjohnwu.superuser.<a href="../../../com/topjohnwu/superuser/Shell.Initializer.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">Shell.Initializer</span></a></li>

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Constant Field Values (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>API Help (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Index (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
@ -138,6 +138,12 @@
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/io/SuFile.html#compareTo-java.io.File-">compareTo(File)</a></span> - Method in class com.topjohnwu.superuser.io.<a href="com/topjohnwu/superuser/io/SuFile.html" title="class in com.topjohnwu.superuser.io">SuFile</a></dt>
<dd>&nbsp;</dd>
<dt><a href="com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">ContainerApp</span></a> - Class in <a href="com/topjohnwu/superuser/package-summary.html">com.topjohnwu.superuser</a></dt>
<dd>
<div class="block">A subclass of <a href="https://developer.android.com/reference/android/app/Application.html?is-external=true" title="class or interface in android.app"><code>Application</code></a> with a <a href="com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser"><code>Shell.Container</code></a> injected.</div>
</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/ContainerApp.html#ContainerApp--">ContainerApp()</a></span> - Constructor for class com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser">ContainerApp</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/io/SuFile.html#createNewFile--">createNewFile()</a></span> - Method in class com.topjohnwu.superuser.io.<a href="com/topjohnwu/superuser/io/SuFile.html" title="class in com.topjohnwu.superuser.io">SuFile</a></dt>
<dd>&nbsp;</dd>
</dl>
@ -270,6 +276,8 @@
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/io/SuFile.html#getPath--">getPath()</a></span> - Method in class com.topjohnwu.superuser.io.<a href="com/topjohnwu/superuser/io/SuFile.html" title="class in com.topjohnwu.superuser.io">SuFile</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/ContainerApp.html#getShell--">getShell()</a></span> - Method in class com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser">ContainerApp</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/Shell.Container.html#getShell--">getShell()</a></span> - Method in interface com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser">Shell.Container</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/Shell.html#getShell--">getShell()</a></span> - Static method in class com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/Shell.html" title="class in com.topjohnwu.superuser">Shell</a></dt>
@ -517,8 +525,14 @@
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/io/SuFile.html#setReadOnly--">setReadOnly()</a></span> - Method in class com.topjohnwu.superuser.io.<a href="com/topjohnwu/superuser/io/SuFile.html" title="class in com.topjohnwu.superuser.io">SuFile</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/ContainerApp.html#setShell-com.topjohnwu.superuser.Shell-">setShell(Shell)</a></span> - Method in class com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser">ContainerApp</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/Shell.Container.html#setShell-com.topjohnwu.superuser.Shell-">setShell(Shell)</a></span> - Method in interface com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser">Shell.Container</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/Shell.Config.html#setTimeout-long-">setTimeout(long)</a></span> - Static method in class com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/Shell.Config.html" title="class in com.topjohnwu.superuser">Shell.Config</a></dt>
<dd>
<div class="block">Set the maximum time to wait for a new shell construction.</div>
</dd>
<dt><span class="memberNameLink"><a href="com/topjohnwu/superuser/BusyBox.html#setup-android.content.Context-">setup(Context)</a></span> - Static method in class com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/BusyBox.html" title="class in com.topjohnwu.superuser">BusyBox</a></dt>
<dd>
<div class="block">Setup a busybox environment using the bundled busybox binaries.</div>
@ -547,7 +561,7 @@
</dd>
<dt><a href="com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser"><span class="typeNameLink">Shell.Container</span></a> - Interface in <a href="com/topjohnwu/superuser/package-summary.html">com.topjohnwu.superuser</a></dt>
<dd>
<div class="block">A container to store the global <code>Shell</code> instance.</div>
<div class="block">The container to store the global <code>Shell</code> instance.</div>
</dd>
<dt><a href="com/topjohnwu/superuser/Shell.GetShellCallback.html" title="interface in com.topjohnwu.superuser"><span class="typeNameLink">Shell.GetShellCallback</span></a> - Interface in <a href="com/topjohnwu/superuser/package-summary.html">com.topjohnwu.superuser</a></dt>
<dd>

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>libsu API</title>
<script type="text/javascript">
tmpTargetPage = "" + window.location.search;

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Overview List (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Overview (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Class Hierarchy (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
@ -90,6 +90,19 @@
</ul>
</li>
<li type="circle">com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/BusyBox.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">BusyBox</span></a></li>
<li type="circle">android.content.<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content"><span class="typeNameLink">Context</span></a>
<ul>
<li type="circle">android.content.<a href="https://developer.android.com/reference/android/content/ContextWrapper.html?is-external=true" title="class or interface in android.content"><span class="typeNameLink">ContextWrapper</span></a>
<ul>
<li type="circle">android.app.<a href="https://developer.android.com/reference/android/app/Application.html?is-external=true" title="class or interface in android.app"><span class="typeNameLink">Application</span></a> (implements android.content.<a href="https://developer.android.com/reference/android/content/ComponentCallbacks2.html?is-external=true" title="class or interface in android.content">ComponentCallbacks2</a>)
<ul>
<li type="circle">com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/ContainerApp.html" title="class in com.topjohnwu.superuser"><span class="typeNameLink">ContainerApp</span></a> (implements com.topjohnwu.superuser.<a href="com/topjohnwu/superuser/Shell.Container.html" title="interface in com.topjohnwu.superuser">Shell.Container</a>)</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li type="circle">java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io"><span class="typeNameLink">File</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
<ul>
<li type="circle">com.topjohnwu.superuser.io.<a href="com/topjohnwu/superuser/io/SuFile.html" title="class in com.topjohnwu.superuser.io"><span class="typeNameLink">SuFile</span></a></li>

View File

@ -2,7 +2,7 @@
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 02:44:56 EST 2018 -->
<!-- Generated by javadoc (1.8.0_152-release) on Sun Nov 25 03:20:51 EST 2018 -->
<title>Serialized Form (libsu API)</title>
<meta name="date" content="2018-11-25">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">