Merge pull request #194 from AnBui2004/master

Churro
This commit is contained in:
An Bui 2025-01-18 01:11:36 +07:00 committed by GitHub
commit ce1890a742
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 61 additions and 29 deletions

View file

@ -12,7 +12,7 @@ android {
minSdk minApi
targetSdk targetApi
versionCode 21
versionName "v2.9.5-3dfx-bread"
versionName "v2.9.5-3dfx-churro"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}

View file

@ -573,6 +573,11 @@ public class MainSettingsManager extends AppCompatActivity
return prefs.getBoolean("customMemory", false);
}
public static boolean autoCreateDisk(Activity activity) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
return prefs.getBoolean("autoCreateDisk", true);
}
public static boolean useDefaultBios(Activity activity) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
return prefs.getBoolean("useDefaultBios", true);

View file

@ -82,6 +82,7 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.vectras.vterm.Terminal;
public class CustomRomActivity extends AppCompatActivity {
@ -528,6 +529,13 @@ public class CustomRomActivity extends AppCompatActivity {
} else {
title.setText("New VM");
setDefault();
if (MainSettingsManager.autoCreateDisk(CustomRomActivity.this)) {
File myDir = new File(AppConfig.vmFolder + vmID);
myDir.mkdirs();
Terminal vterm = new Terminal(CustomRomActivity.this);
vterm.executeShellCommand2("qemu-img create -f qcow2 " + AppConfig.vmFolder + vmID + "/disk.qcow2 128G", false, CustomRomActivity.this);
drive.setText(AppConfig.vmFolder + vmID + "/disk.qcow2");
}
}
}
VectrasApp.prepareDataForAppConfig(activity);

View file

@ -119,6 +119,7 @@ public class AdapterMainRoms extends RecyclerView.Adapter<RecyclerView.ViewHolde
@Override
public void onClick(View v) {
com.vectras.vm.CustomRomActivity.current = data.get(position);
VMManager.setArch(current.itemArch, MainActivity.activity);
MainActivity.activity.startActivity(new Intent(MainActivity.activity, CustomRomActivity.class).putExtra("POS", position).putExtra("MODIFY", true).putExtra("VMID", current.vmID));
bottomSheetDialog.cancel();
}

View file

@ -50,7 +50,7 @@ public class MainService extends Service {
String filesDir = MainActivity.activity.getFilesDir().getAbsolutePath();
Terminal vterm = new Terminal(this);
vterm.executeShellCommand2("dwm", false, MainActivity.activity);
vterm.executeShellCommand2(env, false, MainActivity.activity);
vterm.executeShellCommand2(env, true, MainActivity.activity);
}
} else
Log.e(TAG, "env is null");

View file

@ -44,7 +44,7 @@ public class StartVM {
String ifType;
ifType= MainSettingsManager.getIfType(activity);
String cdrom;
String cdrom = "";
String hdd0;
String hdd1;
@ -74,10 +74,10 @@ public class StartVM {
if (cdromFile.exists()) {
if (MainSettingsManager.getArch(activity).equals("ARM64")) {
cdrom = "-device";
cdrom += " usb-storage,drive=cdrom";
cdrom += " -drive";
cdrom = " -drive";
cdrom += " if=none,id=cdrom,format=raw,media=cdrom,file='" + cdromFile.getPath() + "'";
cdrom += "-device";
cdrom += " usb-storage,drive=cdrom";
if (!extras.contains("-device nec-usb-xhci")) {
cdrom += " -device";
cdrom += " qemu-xhci";
@ -100,16 +100,12 @@ public class StartVM {
}
} else {
if (MainSettingsManager.getArch(activity).equals("ARM64")) {
cdrom = "-device";
cdrom += " usb-storage,drive=cdrom";
cdrom += " -device";
cdrom += " nec-usb-xhci,id=defaultxhci";
cdrom += " -device";
cdrom += " usb-storage,bus=defaultxhci.0,drive=cdrom";
cdrom += " -drive";
cdrom += " if=none,id=cdrom,format=raw,media=cdrom,file='" + cdrompath + "'";
if (!extras.contains("-device nec-usb-xhci")) {
cdrom += " -device";
cdrom += " qemu-xhci";
cdrom += " -device";
cdrom += " nec-usb-xhci";
}
} else {
if (ifType.isEmpty()) {
cdrom = "-cdrom";
@ -177,23 +173,23 @@ public class StartVM {
bios = "-L ";
bios += "pc-bios";
} else if (MainSettingsManager.getArch(activity).equals("ARM64")) {
bios = "-pflash ";
bios += AppConfig.basefiledir + "QEMU_EFI.img";
bios += " -pflash ";
bios += AppConfig.basefiledir + "QEMU_VARS.img";
bios = "-drive ";
bios += "file=" + AppConfig.basefiledir + "QEMU_EFI.img,format=raw,readonly=on,if=pflash";
bios += " -drive ";
bios += "file=" + AppConfig.basefiledir + "QEMU_VARS.img,format=raw,if=pflash";
} else {
bios = "-bios ";
bios += AppConfig.basefiledir + "bios-vectras.bin";
}
}
String machine = "-M ";
if (Objects.equals(MainSettingsManager.getArch(activity), "X86_64")) {
machine += "pc";
params.add(machine);
} else if (Objects.equals(MainSettingsManager.getArch(activity), "ARM64")) {
machine += "virt";
params.add(machine);
}
String machine = "-M ";
if (Objects.equals(MainSettingsManager.getArch(activity), "X86_64")) {
machine += "pc";
params.add(machine);
} else if (Objects.equals(MainSettingsManager.getArch(activity), "ARM64")) {
machine += "virt";
params.add(machine);
}
if (MainSettingsManager.useMemoryOvercommit(MainActivity.activity)) {

View file

@ -519,8 +519,10 @@ public class VMManager {
}
public static boolean isExecutedCommandError(String _command, String _result, Activity _activity) {
if (!_command.contains("qemu-system") || _result.contains("Killed"))
if (!_command.contains("qemu-system"))
return false;
if (_command.contains("qemu-system") && _result.contains("Killed"))
return true;
//Error code: PROOT_IS_MISSING_0
if (_result.contains("proot\": error=2,")) {
AlertDialog alertDialog = new AlertDialog.Builder(_activity, R.style.MainDialogTheme).create();
@ -569,6 +571,11 @@ public class VMManager {
});
alertDialog.show();
return true;
} else if (_result.contains("No such file or directory")) {
//Error code: NO_SUCH_FILE_OR_DIRECTORY
VectrasApp.oneDialog(_activity.getResources().getString(R.string.problem_has_been_detected), _activity.getResources().getString(R.string.error_NO_SUCH_FILE_OR_DIRECTORY), true, false, _activity);
_activity.stopService(new Intent(_activity, MainService.class));
return true;
} else {
return false;
}

View file

@ -389,6 +389,9 @@
<string name="reinstall_system_content">إذا وجدت أن النظام يواجه مشاكل خطيرة، فيمكنك إعادة تثبيت النظام. ويتم الاحتفاظ بجميع الآلات الافتراضية.</string>
<string name="reinstalling">إعادة التثبيت...</string>
<string name="mini_tools">أدوات صغيرة</string>
<string name="error_NO_SUCH_FILE_OR_DIRECTORY">حدثت مشكلة وفشل تشغيل الجهاز الظاهري لأن الملف أو الدليل الذي يحتاجه الجهاز الظاهري للتشغيل غير موجود.</string>
<string name="auto_create_new_hard_drive_when_creating_new_vm">إنشاء محرك أقراص ثابت جديد تلقائيًا عند إنشاء جهاز افتراضي جديد</string>
<string name="with_size_is_128GB">بحجم 128 جيجابايت.</string>
<!--======================TERMUX STRINGS====================-->
<string name="application_name">Vterm</string>

View file

@ -3,7 +3,7 @@
<string name="app_name">Vectras VM</string>
<!--======================VECTRAS STRINGS====================-->
<string name="app_version" translatable="false">v2.9.5 (3dfx - Bread)</string>
<string name="app_version" translatable="false">v2.9.5 (3dfx - Churro)</string>
<string name="qemu_version" translatable="false">Stable</string>
<string name="str_home">Home</string>
<string name="str_logger">Logger</string>
@ -391,6 +391,9 @@
<string name="reinstall_system_content">If you find that your system is having serious problems, you can reinstall the system. And all virtual machines will be kept.</string>
<string name="reinstalling">Reinstalling...</string>
<string name="mini_tools">Mini tools</string>
<string name="error_NO_SUCH_FILE_OR_DIRECTORY">A problem occurred and the virtual machine failed to run because a file or directory that the virtual machine needs to run does not exist.</string>
<string name="auto_create_new_hard_drive_when_creating_new_vm">Automatically create new hard drive when creating new virtual machine</string>
<string name="with_size_is_128GB">With size is 128GB.</string>
<!--======================TERMUX STRINGS====================-->

View file

@ -86,6 +86,15 @@
android:title="@string/custom_params"
app:useSimpleSummaryProvider="true"
app:icon="@drawable/round_terminal_24" />
<SwitchPreferenceCompat
android:id="@+id/autocreatedisk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:defaultValue="true"
android:key="autoCreateDisk"
android:summary="@string/with_size_is_128GB"
android:title="@string/auto_create_new_hard_drive_when_creating_new_vm"
app:icon="@drawable/round_add_24" />
<SwitchPreferenceCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View file

@ -1,6 +1,6 @@
{
"versionCode":"21",
"versionName":"v2.9.5-3dfx,v2.9.5-3dfx-almondcake,v2.9.5-3dfx-bread",
"versionName":"v2.9.5-3dfx,v2.9.5-3dfx-almondcake,v2.9.5-3dfx-bread,v2.9.5-3dfx-churro",
"size": "46 MB",
"url": "https://github.com/xoureldeen/Vectras-VM-Android/releases/v2.9.5",
"Message": "<h2>v2.9.5-3dfx</h2><ul><li>Bring back 3dfx support.</li><li>Enhance app execution.</li><li>Added some linux programs in x11 display.</li><li>Added alpine linux (x11).</li><li>Russian language by <a href=\"https://github.com/OFGING\" target=\"_blank\">@OFGING</a></li></ul><br><br>New updates are live!",