diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index a5a4e9d..f2bdcd7 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -15,19 +15,6 @@ "versionName": "v2.9.1", "outputFile": "app-universal-release.apk" }, - { - "type": "ONE_OF_MANY", - "filters": [ - { - "filterType": "ABI", - "value": "arm64-v8a" - } - ], - "attributes": [], - "versionCode": 17, - "versionName": "v2.9.1", - "outputFile": "app-arm64-v8a-release.apk" - }, { "type": "ONE_OF_MANY", "filters": [ @@ -40,6 +27,19 @@ "versionCode": 17, "versionName": "v2.9.1", "outputFile": "app-x86_64-release.apk" + }, + { + "type": "ONE_OF_MANY", + "filters": [ + { + "filterType": "ABI", + "value": "arm64-v8a" + } + ], + "attributes": [], + "versionCode": 17, + "versionName": "v2.9.1", + "outputFile": "app-arm64-v8a-release.apk" } ], "elementType": "File" diff --git a/app/src/main/java/com/vectras/qemu/MainSettingsManager.java b/app/src/main/java/com/vectras/qemu/MainSettingsManager.java index 4583e0c..e3f2a83 100644 --- a/app/src/main/java/com/vectras/qemu/MainSettingsManager.java +++ b/app/src/main/java/com/vectras/qemu/MainSettingsManager.java @@ -255,6 +255,13 @@ public class MainSettingsManager extends AppCompatActivity super.onCreate(savedInstanceState); mHandler = new Handler(); + + Preference prefIfType = findPreference("ifType"); + if (getArch(activity).equals("ARM64")) + if (prefIfType != null) { + prefIfType.setVisible(false); + } + Preference pref = findPreference("vmArch"); if (pref != null) { pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { diff --git a/app/src/main/java/com/vectras/vm/CustomRomActivity.java b/app/src/main/java/com/vectras/vm/CustomRomActivity.java index e898057..09f1681 100644 --- a/app/src/main/java/com/vectras/vm/CustomRomActivity.java +++ b/app/src/main/java/com/vectras/vm/CustomRomActivity.java @@ -485,16 +485,16 @@ public class CustomRomActivity extends AppCompatActivity { String defQemuParams; switch (MainSettingsManager.getArch(MainActivity.activity)) { case "ARM64": - defQemuParams = "-M virt -cpu cortex-a57 -smp 4 -netdev user,id=usernet -device virtio-net,netdev=usernet"; + defQemuParams = "-M virt -cpu cortex-a57 -net nic,model=e1000 -net user -vga virtio -monitor stdio -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA"; break; case "PPC": - defQemuParams = "-M mac99 -cpu g3 -smp 4 -net nic -net user"; + defQemuParams = "-M mac99 -cpu g3 -smp 1"; break; case "I386": - defQemuParams = "-M pc -cpu qemu32,avx -accel tcg,thread=multi -smp 4 -vga std -netdev user,id=usernet -device e1000,netdev=usernet"; + defQemuParams = "-M pc -cpu qemu32,+avx -accel tcg,thread=multi -smp 4 -vga std -netdev user,id=usernet -device e1000,netdev=usernet"; break; default: - defQemuParams = "-M pc -cpu qemu64,avx -accel tcg,thread=multi -smp 4 -vga std -netdev user,id=usernet -device e1000,netdev=usernet"; + defQemuParams = "-M pc -cpu qemu64,+avx -accel tcg,thread=multi -smp 4 -vga std -netdev user,id=usernet -device e1000,netdev=usernet"; break; } qemu.setText(defQemuParams); diff --git a/app/src/main/java/com/vectras/vm/Fragment/CreateImageDialogFragment.java b/app/src/main/java/com/vectras/vm/Fragment/CreateImageDialogFragment.java index e9b9099..be48df0 100644 --- a/app/src/main/java/com/vectras/vm/Fragment/CreateImageDialogFragment.java +++ b/app/src/main/java/com/vectras/vm/Fragment/CreateImageDialogFragment.java @@ -95,6 +95,7 @@ public class CreateImageDialogFragment extends DialogFragment { imageSize.getText().toString() + "G", true, getActivity()); if (customRom) CustomRomActivity.drive.setText(FileUtils.getExternalFilesDirectory(getActivity()).getPath() + "/QCOW2/" + imageName.getText().toString() + ".qcow2"); + dismiss(); } }); diff --git a/app/src/main/java/com/vectras/vm/MainActivity.java b/app/src/main/java/com/vectras/vm/MainActivity.java index a98f392..a8ab4c8 100644 --- a/app/src/main/java/com/vectras/vm/MainActivity.java +++ b/app/src/main/java/com/vectras/vm/MainActivity.java @@ -103,7 +103,7 @@ public class MainActivity extends AppCompatActivity { private AdRequest adRequest; public DrawerLayout mainDrawer; private String TAG = "MainActivity"; - public static /**/LinearLayout extVncLayout; + public static /**/ LinearLayout extVncLayout; public static AppBarLayout appbar; public TextView totalRam; public TextView usedRam; @@ -206,7 +206,8 @@ public class MainActivity extends AppCompatActivity { int id = menuItem.getItemId(); if (id == R.id.navigation_item_info) { startActivity(new Intent(activity, AboutActivity.class)); - } if (id == R.id.navigation_item_help) { + } + if (id == R.id.navigation_item_help) { String tw = AppConfig.vectrasWebsite; Intent w = new Intent(Intent.ACTION_VIEW); w.setData(Uri.parse(tw)); @@ -750,17 +751,6 @@ public class MainActivity extends AppCompatActivity { } public static void startVM(String vmName, String env) { - if (checkSharedFolder()) { - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - builder.setTitle("Large File Detected"); - builder.setMessage("One or more files in this folder are larger than 500MB, " + - "due qemu limits you can't use shared folder that's contains files larger than 500mb, " + - "please disable shared folder Settings>qemu or free some files from shared folder."); - builder.setPositiveButton("OK", (dialogInterface, i) -> dialogInterface.dismiss()); - builder.create().show(); - return; - } - boolean isRunning = isMyServiceRunning(MainService.class); ProgressDialog progressDialog = new ProgressDialog(activity, R.style.MainDialogTheme); @@ -770,41 +760,39 @@ public class MainActivity extends AppCompatActivity { Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { - if (!isRunning) { - Intent serviceIntent = new Intent(activity, MainService.class); - MainService.env = env; - MainService.CHANNEL_ID = vmName; - if (SDK_INT >= Build.VERSION_CODES.O) { - activity.startForegroundService(serviceIntent); - } else { - activity.startService(serviceIntent); - } - - if (MainSettingsManager.getVmUi(activity).equals("VNC")) { - if (MainSettingsManager.getVncExternal(MainActivity.activity)) { - extVncLayout.setVisibility(View.VISIBLE); - appbar.setExpanded(true); - } else { - activity.startActivity(new Intent(activity, MainVNCActivity.class)); - } - } else if (MainSettingsManager.getVmUi(activity).equals("SPICE")) { - //activity.startActivity(new Intent(activity, RemoteCanvasActivity.class)); - } else if (MainSettingsManager.getVmUi(activity).equals("X11")) { - //activity.startActivity(new Intent(activity, X11Activity.class)); - } - - progressDialog.dismiss(); + Intent serviceIntent = new Intent(activity, MainService.class); + MainService.env = env; + MainService.CHANNEL_ID = vmName; + if (SDK_INT >= Build.VERSION_CODES.O) { + activity.startForegroundService(serviceIntent); } else { - progressDialog.dismiss(); + activity.startService(serviceIntent); + } + + if (MainSettingsManager.getVmUi(activity).equals("VNC")) { if (MainSettingsManager.getVncExternal(MainActivity.activity)) { extVncLayout.setVisibility(View.VISIBLE); appbar.setExpanded(true); + progressDialog.dismiss(); } else { - activity.startActivity(new Intent(activity, MainVNCActivity.class)); + progressDialog.show(); + Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + public void run() { + MainVNCActivity.started = true; + activity.startActivity(new Intent(activity, MainVNCActivity.class)); + progressDialog.dismiss(); + } + }, 2000); } + } else if (MainSettingsManager.getVmUi(activity).equals("SPICE")) { + //activity.startActivity(new Intent(activity, RemoteCanvasActivity.class)); + } else if (MainSettingsManager.getVmUi(activity).equals("X11")) { + //activity.startActivity(new Intent(activity, X11Activity.class)); } + } - }, 5000); + }, 2000); String[] params = env.split("\\s+"); VectrasStatus.logInfo("Params:"); Log.d("StartVM", "Params:"); diff --git a/app/src/main/java/com/vectras/vm/StartVM.java b/app/src/main/java/com/vectras/vm/StartVM.java index 9f33802..b88c19e 100644 --- a/app/src/main/java/com/vectras/vm/StartVM.java +++ b/app/src/main/java/com/vectras/vm/StartVM.java @@ -34,7 +34,11 @@ public class StartVM { else if (MainSettingsManager.getArch(activity).equals("PPC")) params.add("qemu-system-ppc"); - String ifType = MainSettingsManager.getIfType(activity); + String ifType; + if (MainSettingsManager.getArch(activity).equals("ARM64")) + ifType = "ahci"; + else + ifType= MainSettingsManager.getIfType(activity); String cdrom; String hdd1; @@ -128,10 +132,10 @@ public class StartVM { } params.add("-monitor"); - if (MainSettingsManager.getArch(activity).equals("X86_64")) - params.add("vc"); - else if (MainSettingsManager.getArch(activity).equals("ARM64")) + if (MainSettingsManager.getArch(activity).equals("ARM64")) params.add("stdio"); + else + params.add("vc"); } else if (MainSettingsManager.getVmUi(activity).equals("SPICE")) { String spiceStr = "-spice "; spiceStr += "port=6999,disable-ticketing=on";