diff --git a/app/build.gradle b/app/build.gradle
index 073f56d38..bd304f50d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,7 +9,7 @@ android {
minSdkVersion 21
targetSdkVersion 25
versionCode 3
- versionName "3.0.0_preview4_b4_20200105"
+ versionName "3.0.1_preview1_b4_20200108"
}
buildTypes {
diff --git a/app/src/main/assets/busybox-arm64 b/app/src/main/assets/busybox-arm64
new file mode 100644
index 000000000..e0f4cf397
Binary files /dev/null and b/app/src/main/assets/busybox-arm64 differ
diff --git a/app/src/main/java/android/androidVNC/VncCanvasActivity.java b/app/src/main/java/android/androidVNC/VncCanvasActivity.java
index 5408e9445..7c09b6e08 100644
--- a/app/src/main/java/android/androidVNC/VncCanvasActivity.java
+++ b/app/src/main/java/android/androidVNC/VncCanvasActivity.java
@@ -343,7 +343,7 @@ public class VncCanvasActivity extends AppCompatActivity
@Override
public void run() {
Toast.makeText(VncCanvasActivity.this, R.string.mcn_exit_title, Toast.LENGTH_SHORT).show();
- finish();
+ // finish();
}
});
} else {
diff --git a/app/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java b/app/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java
index 5cb7d982a..3b70060e6 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java
@@ -142,125 +142,147 @@ public class PojavLoginActivity extends MineActivity
protected Integer doInBackground(Void[] p1)
{
try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {}
- publishProgress("visible");
-
- while (Build.VERSION.SDK_INT >= 23 && !isStorageAllowed()){
try {
- revokeCount++;
- if (revokeCount >= 3) {
- Toast.makeText(PojavLoginActivity.this, R.string.toast_permission_denied, Toast.LENGTH_LONG).show();
- finish();
- }
- isPromptingGrant = true;
- requestStoragePermission();
- while (isPromptingGrant) {
- Thread.sleep(200);
- }
-
+ Thread.sleep(2000);
} catch (InterruptedException e) {}
- }
-
- File openjdkZip = new File(Tools.MAIN_PATH, "OpenJDK.zip");
-
- oldOpenjdkFolder = new File(Tools.datapath, "openjdk");
- newOpenjdkFolder = new File(Tools.datapath, "jre");
-
- if (!firstLaunchPrefs.getBoolean(PREF_IS_INSTALLED_OPENJDK, false)) {
- // Install OpenJDK
- publishProgress(null);
- try {
+
+ publishProgress("visible");
+
+ while (Build.VERSION.SDK_INT >= 23 && !isStorageAllowed()){
try {
- Tools.deleteRecursive(oldOpenjdkFolder);
- Tools.deleteRecursive(newOpenjdkFolder);
- } catch (Throwable th) {
- // Nothing wrong if can't delete OpenJDK folders.
- }
-
- // BEGIN download openjdk
- URL url = new URL("https://github.com/khanhduytran0/PojavLauncher/releases/download/v3.0.0-preview1/net.kdt.pojavlaunch.openjdkv2.zip");
- URLConnection connection = url.openConnection();
- connection.connect();
- int fileLength = connection.getContentLength();
- int count = 0;
-
- publishProgress("i0", getString(R.string.openjdk_install_download_main), Integer.toString(fileLength));
- if (!openjdkZip.exists() || openjdkZip.length() != fileLength) {
- InputStream input = new BufferedInputStream(url.openStream());
- OutputStream output = new FileOutputStream(openjdkZip);
- byte data[] = new byte[1024];
- long total = 0;
-
- while ((count = input.read(data)) != -1) {
- total += count;
- publishProgress(null, null, null, Long.toString(total));
- output.write(data, 0, count);
+ revokeCount++;
+ if (revokeCount >= 3) {
+ Toast.makeText(PojavLoginActivity.this, R.string.toast_permission_denied, Toast.LENGTH_LONG).show();
+ finish();
}
- output.flush();
- output.close();
- input.close();
- }
- // END download openjdk
-
- publishProgress("i1", getString(R.string.openjdk_install_unpack_main));
-
- unpackOpenJDK(openjdkZip, false);
- openjdkZip.delete();
-
- setPref(PREF_IS_INSTALLED_OPENJDK, true);
- } catch (Throwable e) {
- Tools.dialogOnUiThread(PojavLoginActivity.this, "Error! Check your internet connection", Log.getStackTraceString(e));
- // Tools.showError(PojavLoginActivity.this, e, true);
+ isPromptingGrant = true;
+ requestStoragePermission();
+ while (isPromptingGrant) {
+ Thread.sleep(200);
+ }
+
+ } catch (InterruptedException e) {}
}
- }
-
- // Patch OpenJDK
- try {
- Thread.sleep(500);
+
+ File openjdkTar = new File(Tools.MAIN_PATH, "OpenJDK.zip");
+
+ oldOpenjdkFolder = new File(Tools.datapath, "openjdk");
+ newOpenjdkFolder = new File(Tools.datapath, "jre");
- String patchUrl = DownloadUtils.downloadString(Tools.mhomeUrl + "/openjdk_patch.txt");
- if (!patchUrl.startsWith("null")) {
- // Next if a patch is available.
- publishProgress("i1", getString(R.string.openjdk_install_download_patch));
-
- openjdkZip = new File(Tools.MAIN_PATH, "OpenJDK_patch.zip");
-
- String latestOpenjdkPatchVer = patchUrl.replace(Tools.mhomeUrl + "/openjdk_patches/openjdk_patch", "");
- int latestOpenjdkPatchVerInt = Integer.parseInt(latestOpenjdkPatchVer.substring(0, latestOpenjdkPatchVer.indexOf("_")));
-
- if (firstLaunchPrefs.getInt(PREF_OPENJDK_PATCH_VERSION, -1) < latestOpenjdkPatchVerInt) {
- // Auto download new OpenJDK patch
- DownloadUtils.downloadFile(patchUrl, openjdkZip);
+ SimpleShellProcess shell = new SimpleShellProcess(new SimpleShellProcess.OnPrintListener(){
- unpackOpenJDK(openjdkZip, true);
- openjdkZip.delete();
- firstLaunchPrefs.edit().putInt(PREF_OPENJDK_PATCH_VERSION, latestOpenjdkPatchVerInt).commit();
+ @Override
+ public void onPrintLine(String text)
+ {
+ publishProgress(null, text);
+ }
+ });
+
+ shell.initInputStream(PojavLoginActivity.this);
+ shell.writeToProcess("mkdir -p " + Tools.homeJreDir + "/usr/bin");
+ Tools.copyAssetFile(PojavLoginActivity.this, "busybox-arm64", Tools.homeJreDir + "/usr/bin", false);
+
+ if (!firstLaunchPrefs.getBoolean(PREF_IS_INSTALLED_OPENJDK, false)) {
+ // Install OpenJDK
+ publishProgress(null);
+ try {
+ try {
+ Tools.deleteRecursive(oldOpenjdkFolder);
+ Tools.deleteRecursive(newOpenjdkFolder);
+ } catch (Throwable th) {
+ // Nothing wrong if can't delete OpenJDK folders.
+ }
+
+ // BEGIN download openjdk
+ URL url = new URL("https://github.com/khanhduytran0/PojavLauncher/releases/download/v3.0.1-preview1/net.kdt.pojavlaunch.openjdkv3.zip");
+ URLConnection connection = url.openConnection();
+ connection.connect();
+ int fileLength = connection.getContentLength();
+ int count = 0;
+
+ publishProgress("i0", getString(R.string.openjdk_install_download_main), Integer.toString(fileLength));
+ if (!openjdkTar.exists() || openjdkTar.length() != fileLength) {
+ InputStream input = new BufferedInputStream(url.openStream());
+ OutputStream output = new FileOutputStream(openjdkTar);
+ byte data[] = new byte[1024];
+ long total = 0;
+
+ while ((count = input.read(data)) != -1) {
+ total += count;
+ publishProgress(null, null, null, Long.toString(total));
+ output.write(data, 0, count);
+ }
+ output.flush();
+ output.close();
+ input.close();
+ }
+ // END download openjdk
+
+ publishProgress(null, getString(R.string.openjdk_install_unpack_main));
+
+ unpackOpenJDK(shell, openjdkTar, false);
+ openjdkTar.delete();
+
+ setPref(PREF_IS_INSTALLED_OPENJDK, true);
+ } catch (Throwable e) {
+ Tools.dialogOnUiThread(PojavLoginActivity.this, "Error! Check your internet connection", Log.getStackTraceString(e));
+ // Tools.showError(PojavLoginActivity.this, e, true);
}
}
+
- // Grant execute permission
- Runtime.getRuntime().exec("chmod -R 700 " + newOpenjdkFolder.getAbsolutePath());
- } catch (final Throwable th) {
- // Tools.showError(PojavLoginActivity.this, th);
- runOnUiThread(new Runnable(){
+ // Patch OpenJDK
+ try {
+ Thread.sleep(500);
- @Override
- public void run()
- {
- Toast.makeText(PojavLoginActivity.this, "Warning: " + th.getMessage(), Toast.LENGTH_LONG).show();
+ String patchUrl = DownloadUtils.downloadString(Tools.mhomeUrl + "/openjdk_patch.txt");
+ if (!patchUrl.startsWith("null")) {
+ // Next if a patch is available.
+ publishProgress("i1", getString(R.string.openjdk_install_download_patch));
+
+ openjdkTar = new File(Tools.MAIN_PATH, "OpenJDK_patch.zip");
+
+ String latestOpenjdkPatchVer = patchUrl.replace(Tools.mhomeUrl + "/openjdk_patches/openjdk_patch", "");
+ int latestOpenjdkPatchVerInt = Integer.parseInt(latestOpenjdkPatchVer.substring(0, latestOpenjdkPatchVer.indexOf("_")));
+
+ if (firstLaunchPrefs.getInt(PREF_OPENJDK_PATCH_VERSION, -1) < latestOpenjdkPatchVerInt) {
+ // Auto download new OpenJDK patch
+ DownloadUtils.downloadFile(patchUrl, openjdkTar);
+
+ unpackOpenJDK(shell, openjdkTar, true);
+ openjdkTar.delete();
+ firstLaunchPrefs.edit().putInt(PREF_OPENJDK_PATCH_VERSION, latestOpenjdkPatchVerInt).commit();
}
- });
+ }
+
+ // Grant execute permission
+ Runtime.getRuntime().exec("chmod -R 700 " + newOpenjdkFolder.getAbsolutePath());
+ } catch (final Throwable th) {
+ // Tools.showError(PojavLoginActivity.this, th);
+ runOnUiThread(new Runnable(){
+
+ @Override
+ public void run()
+ {
+ Toast.makeText(PojavLoginActivity.this, "Warning: " + th.getMessage(), Toast.LENGTH_LONG).show();
+ }
+ });
+ }
+
+ initMain();
+ } catch (Throwable th) {
+ Tools.showError(PojavLoginActivity.this, th);
}
- initMain();
-
return 0;
}
- private void unpackOpenJDK(File openjdkZip, boolean isPatch) throws Throwable {
- ZipFile zis = new ZipFile(openjdkZip);
+ private void unpackOpenJDK(SimpleShellProcess shell, File openjdkTar, boolean isPatch) throws Throwable {
+ shell.writeToProcess(Tools.homeJreDir + "/usr/bin/busybox tar xvzf " + openjdkTar.getAbsolutePath() + " -C " + Tools.homeJreDir);
+
+ /*
+ ZipFile zis = new ZipFile(openjdkTar);
try {
int count = 0;
publishProgress("i0", null, Integer.toString(zis.size()));
@@ -299,7 +321,7 @@ public class PojavLoginActivity extends MineActivity
} finally {
zis.close();
}
-
+ */
try {
oldOpenjdkFolder.renameTo(newOpenjdkFolder);
} catch (Throwable th) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b43b8b63a..8edaa6708 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -84,7 +84,7 @@
Converting library %s
Converting Minecraft %s
Patching Minecraft %s
- Prepaping to download resources
+ Preparing to download resources
Options
Mod manager (no function)