diff --git a/CHANGELOG.md b/CHANGELOG.md index 9dd01bd8..bcda6b91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,22 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [2.5.0] - 2019-11-04 +### Added +- Added compatibility with Android 10 +- Added support for Docker containers + +### Fixed +- Fixed URL of Ubuntu repository +- Fixed Arch Linux deprecations + +### Changed +- Updated built-in busybox to v1.31.1 + +### Removed +- Removed PRoot support +- Removed installing symlink to /system/bin + ## [2.4.1] - 2019-10-20 ### Added - Added power trigger diff --git a/README.md b/README.md index 73d21d05..69d05901 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ The app is available for download in Google Play and GitHub. ## Features -- Supported distributions: Debian, Ubuntu, Kali Linux, Arch Linux, Fedora, CentOS, Slackware, Alpine Linux, other (from rootfs.tar) +- Bootstrap: Alpine, Arch, CentOS, Debian, Fedora, Kali, Slackware, Ubuntu, Docker or from rootfs.tar - Installation type: image file, directory, disk partition, RAM - Supported file systems: ext2, ext3, ext4 - Supported architectures: arm, arm64, x86, x86_64, emulation mode (ARM ~ x86) diff --git a/app/build.gradle b/app/build.gradle index ca134683..d980c3a1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,15 +1,15 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 28 - buildToolsVersion '28.0.3' + compileSdkVersion 29 + buildToolsVersion '29.0.2' defaultConfig { applicationId 'ru.meefik.linuxdeploy' minSdkVersion 15 - targetSdkVersion 28 - versionCode 252 - versionName "2.4.1" + targetSdkVersion 29 + versionCode 253 + versionName "2.5.0" } buildTypes { release { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7c72f804..ead33afa 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,8 +16,9 @@ android:name=".App" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" - android:supportsRtl="true" android:theme="@style/DarkTheme" + android:supportsRtl="true" + android:requestLegacyExternalStorage="true" android:usesCleartextTraffic="true" tools:ignore="GoogleAppIndexingWarning"> params = new ArrayList<>(); - params.add("{ rm -f /system/bin/linuxdeploy; ln -s " - + PrefStore.getBinDir(c) - + "/linuxdeploy /system/bin/linuxdeploy; } 2>/dev/null || " - + "{ mount -o rw,remount /system; rm -f /system/bin/linuxdeploy; ln -s " - + PrefStore.getBinDir(c) - + "/linuxdeploy /system/bin/linuxdeploy; mount -o ro,remount /system; }"); - return exec(c, "su", params); - } - - /** - * Remove symlink on linuxdeploy script from /system/bin - * - * @param c context - * @return true if success - */ - private static boolean removeSymlink(Context c) { - List params = new ArrayList<>(); - params.add("if [ -e /system/bin/linuxdeploy ]; then " - + "rm -f /system/bin/linuxdeploy 2>/dev/null || " - + "{ mount -o rw,remount /system; rm -f /system/bin/linuxdeploy; mount -o ro,remount /system; };" - + "fi"); - return exec(c, "su", params); - } - /** * Remove operating environment * @@ -466,10 +430,6 @@ static boolean removeEnv(Context c) { // stop services execServices(c, new String[]{"telnetd", "httpd"}, "stop"); - // remove symlink - File ldSymlink = new File("/system/bin/linuxdeploy"); - if (ldSymlink.exists()) removeSymlink(c); - // clean env directory File envDir = new File(PrefStore.getEnvDir(c)); cleanDirectory(envDir); @@ -495,8 +455,7 @@ public static boolean cli(Context c, String cmd, String args) { params.add("printf '>>> " + cmd + "\n'"); params.add(PrefStore.getBinDir(c) + "/linuxdeploy " + opts + cmd + args); params.add("printf '<<< " + cmd + "\n'"); - String shell = PrefStore.isRootRequired(c) ? "su" : "sh"; - return exec(c, shell, params); + return exec(c, "su", params); } /** diff --git a/app/src/main/java/ru/meefik/linuxdeploy/PrefStore.java b/app/src/main/java/ru/meefik/linuxdeploy/PrefStore.java index 40e508fb..f068b3a6 100644 --- a/app/src/main/java/ru/meefik/linuxdeploy/PrefStore.java +++ b/app/src/main/java/ru/meefik/linuxdeploy/PrefStore.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.content.res.Configuration; import android.graphics.Point; +import android.os.Environment; import android.text.TextUtils; import android.view.Display; import android.view.WindowManager; @@ -155,15 +156,6 @@ static String getPropertiesSharedName() { return PropertiesStore.name; } - /** - * Check root is required for current profile - * - * @return true if required - */ - static boolean isRootRequired(Context c) { - return PROPERTIES.get(c, "method").equals("chroot"); - } - /** * Get language code * @@ -302,9 +294,12 @@ static Boolean isLogger(Context c) { * @return path */ static String getLogFile(Context c) { - String logfile = SETTINGS.get(c, "logfile"); - if (!logfile.contains("/")) logfile = getEnvDir(c) + "/" + logfile; - return logfile; + String logFile = SETTINGS.get(c, "logfile"); + if (!logFile.contains("/")) { + String storageDir = Environment.getExternalStorageDirectory().getAbsolutePath(); + logFile = storageDir + "/" + logFile; + } + return logFile; } /** @@ -449,16 +444,6 @@ static void setRepositoryUrl(Context c, String url) { SETTINGS.set(c, "repository_url", url); } - /** - * CLI symlink is enabled - * - * @param c context - * @return true if enabled - */ - static Boolean isCliSymlink(Context c) { - return SETTINGS.get(c, "is_cli").equals("true"); - } - /** * Telnet is enabled * diff --git a/app/src/main/java/ru/meefik/linuxdeploy/PropertiesActivity.java b/app/src/main/java/ru/meefik/linuxdeploy/PropertiesActivity.java index d5fc745e..01781541 100644 --- a/app/src/main/java/ru/meefik/linuxdeploy/PropertiesActivity.java +++ b/app/src/main/java/ru/meefik/linuxdeploy/PropertiesActivity.java @@ -8,7 +8,6 @@ import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceGroup; -import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import android.view.MenuItem; @@ -20,10 +19,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PrefStore.setLocale(this); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - - PreferenceManager prefMgr = getPreferenceManager(); - prefMgr.setSharedPreferencesName(PrefStore.getPropertiesSharedName()); + getPreferenceManager().setSharedPreferencesName(PrefStore.getPropertiesSharedName()); // Restore from conf file if open from main activity if (getIntent().getBooleanExtra("restore", false)) { diff --git a/app/src/main/java/ru/meefik/linuxdeploy/PropertiesStore.java b/app/src/main/java/ru/meefik/linuxdeploy/PropertiesStore.java index 5ff62204..fc5f7e90 100644 --- a/app/src/main/java/ru/meefik/linuxdeploy/PropertiesStore.java +++ b/app/src/main/java/ru/meefik/linuxdeploy/PropertiesStore.java @@ -11,7 +11,7 @@ class PropertiesStore extends ParamUtils { public static final String name = "properties_conf"; - private static final String[] params = {"method", "distrib", "arch", "suite", "source_path", + private static final String[] params = {"distrib", "arch", "suite", "source_path", "target_type", "target_path", "disk_size", "fs_type", "user_name", "user_password", "privileged_users", "locale", "dns", "net_trigger", "power_trigger", "init", "init_path", "init_level", "init_user", "init_async", "ssh_port", "ssh_args", "pulse_host", "pulse_port", "graphics", diff --git a/app/src/main/java/ru/meefik/linuxdeploy/SettingsActivity.java b/app/src/main/java/ru/meefik/linuxdeploy/SettingsActivity.java index 5535611b..a375bab4 100644 --- a/app/src/main/java/ru/meefik/linuxdeploy/SettingsActivity.java +++ b/app/src/main/java/ru/meefik/linuxdeploy/SettingsActivity.java @@ -13,7 +13,6 @@ import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceGroup; -import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import androidx.appcompat.app.AlertDialog; @@ -28,8 +27,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PrefStore.setLocale(this); - PreferenceManager prefMgr = getPreferenceManager(); - prefMgr.setSharedPreferencesName(PrefStore.getSettingsSharedName()); + getPreferenceManager().setSharedPreferencesName(PrefStore.getSettingsSharedName()); // Restore from conf file PrefStore.restoreSettings(this); @@ -151,6 +149,11 @@ private void setSummary(Preference pref, boolean init) { editPref.setText(PrefStore.getHttpConf(this)); pref.setSummary(editPref.getText()); } + + if (editPref.getKey().equals("logfile") && !init) { + editPref.setText(PrefStore.getLogFile(this)); + pref.setSummary(editPref.getText()); + } } if (pref instanceof ListPreference) { diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2cce5a39..8f666c38 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -82,7 +82,6 @@ Sehe die Debugging Information Automatische Berechnung Ändern der Einstellungen für das Grafik-Subsystem - Set up a command line interface Bildschirm X Server Addrese XServer XSDL @@ -114,7 +113,6 @@ Mount Punkte Port SSH Einstellungen - Aktivieren CLI Architekture DNS Server Quellpfad @@ -122,7 +120,6 @@ Aktiviere Trance-Modus SSH Server Einstellungen ändern Erlauben das der SSH Server hochfährt - Bearbeite die Mountliste Automatische Erkennung Erlaube das mount der Android resources diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 87462512..6d3296dc 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -117,12 +117,10 @@ Puntos de montaje Puerto Configuración SSH - Habilitar CLI Arquitectura Servidor DNS Ruta de origen Abrir automáticamente XServer XSDL - Set up a command line interface Habilitar modo seguimiento Cambiar la configuración del servidor SSH Permitir ejecutar servidor SSH @@ -134,7 +132,6 @@ Nombre usuario Contraseña de usuario Ruta instalación - SSH: puerto Sistema de archivo Gráficos subsistema diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 88747fc9..d820f4bc 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -117,12 +117,10 @@ Points de montage Port Paramètres SSH - Activer CLI Architecture Serveur DNS Chemin source Ouvrir automatiquement XServer XSDL - Set up a command line interface Active le mode de suivi Changer les paramètres du serveur SSH Autoriser le démarrage du serveur SSH diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 9a7c7c11..3922b2ef 100755 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -101,9 +101,6 @@ "URL server" "URL server" - "Aktifkan CLI" - "Siapkan antarmuka baris perintah" - "Perbarui ENV" "Perbarui lingkungan pengoperasian" "Update lingkungan operasi?" @@ -143,9 +140,6 @@ "Ekspor" "BOOTSTRAP" - - "Metode kontainerisasi" - "Metode kontainerisasi" "Distribusi" "Distribusi" diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 097d26ef..83b34d51 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -117,12 +117,10 @@ Punti di montaggio Porta Impostazioni SSH - Permettere CLI Architettura Server DNS Percorso di origine Aprire automaticamente XServer XSDL - Set up a command line interface Abilità modalità di tracciamento Modifica impostazioni server SSH Permetti l\'avvio del server SSH diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 0283219d..ee024a59 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -95,9 +95,6 @@ 서버 URL 서버 URL - CLI 활성화 - 명령 줄 인터페이스를 설정합니다. - ENV 업데이트 운영체제 환경 업데이트 운영체제 환경을 업데이트 하시겠습니까? @@ -137,9 +134,6 @@ 내보내기 부트스트랩 - - 컨테이너화 방식 - 컨테이너화 방식 배포 배포 diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a98a3d9a..75b5456c 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -60,8 +60,6 @@ Środowisko operacyjne Katalog BusyBox PATH - Włącz CLI - Ustaw interfejs wiersza poleceń Zaktualizuj ENV Zaktualizuj środowisko operacyjne Zaktualizować środowisko operacyjne? diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 03b99566..a18db22d 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -55,13 +55,11 @@ Mostrar timestamp Mostrar ícone Mostrar ícone na barra de notificação - Inicio automático + Início automático Executar automaticamente o GNU/Linux ao iniciar o Android Ambiente de operação Diretório do BusyBox Diretório do BusyBox - Usar CLI - Configurar a interface de linha de comando Atualizar ENV Atualizar ambiente de operação Atualizar ambiente de operação? diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index dd94bf50..9c8dccfa 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -93,7 +93,6 @@ Изменить параметры графической подсистемы Изменить параметры система инициализации Запускать процессы параллельно - Настроить интерфейс командной строки Номер дисплея Адрес X-сервера XServer XSDL @@ -131,7 +130,6 @@ TELNET Точки монтирования Отслеживать изменения сети - Включить CLI Веб-интерфейс Переменная PATH Порт @@ -148,7 +146,6 @@ DNS-сервер Источник установки Опции SSH - Метод контейнеризации Директория окружения Автоматически открывать XServer XSDL Перейти в режим трассировки @@ -202,7 +199,6 @@ Переменная PATH Привилегированные пользователи URL сервера - Метод контейнеризации INIT: пользователь Привилегированные пользователи Развертывание diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 445a9bf5..e12e4549 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -86,7 +86,6 @@ Zobrazí ladiace informácie Bude vypočítaná automaticky Zmení nastavenia grafického podsystému - Nastaví rozhranie príkazového riadku Displej Adresa X servera XServer XSDL @@ -119,7 +118,6 @@ Body pripojení Port Nastavenia SSH - Aktivovať CLI Grafické používateľské rozhranie Architektúra Server DNS diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 7d06fb77..882803be 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -117,13 +117,11 @@ Các điểm gắn kết Cổng Tuỳ chọn SSH - Cho phép CLI GUI Chuẩn nén Máy chủ DNS Đường dẫn nguồn Tự động mở máy chủ X XSDL - Set up a command line interface Bật chế độ dấu vết Thay đổi cài đặt cho máy chủ SSH Cho phép khởi động máy chủ SSH diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 9db0c3ad..f707bb2f 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -102,9 +102,6 @@ 服务器地址 服务器地址 - 启用 CLI - 一个设置命令行界面 - 更新环境 更新操作环境 是否要更新操作环境? @@ -144,9 +141,6 @@ 导出 引导设置 - - 容器类型 - 选择容器类型 发行版 GNU/Linux 选择发行版 GNU/Linux diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 0ce08b0a..6cd42238 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -237,6 +237,7 @@ kali slackware ubuntu + docker rootfs @@ -248,16 +249,13 @@ Kali Slackware Ubuntu + Docker rootfs.tar run-parts sysv - - chroot - proot - vnc x11 @@ -391,6 +389,18 @@ x86_64 + + + + linux + + + arm + arm64 + 386 + amd64 + + diff --git a/app/src/main/res/values/preferences.xml b/app/src/main/res/values/preferences.xml index 29f78410..441e892b 100644 --- a/app/src/main/res/values/preferences.xml +++ b/app/src/main/res/values/preferences.xml @@ -17,7 +17,6 @@ http://hub.meefik.ru - false false 5023 true @@ -31,7 +30,6 @@ false output.log /data/local/mnt - chroot debian @string/debian_suite @string/arm_debian_arch @@ -135,16 +133,16 @@ 28 - http://dl.fedoraproject.org/pub/archive + http://dl.fedoraproject.org/pub/archive/ armhfp - http://dl.fedoraproject.org/pub/archive + http://dl.fedoraproject.org/pub/archive/ aarch64 - http://dl.fedoraproject.org/pub/archive + http://dl.fedoraproject.org/pub/archive/ i386 - http://dl.fedoraproject.org/pub/archive + http://dl.fedoraproject.org/pub/archive/ x86_64 @@ -207,6 +205,21 @@ http://dl-cdn.alpinelinux.org/alpine/ x86_64 + + linux + + library/ubuntu:18.04 + arm + + library/ubuntu:18.04 + arm64 + + library/ubuntu:18.04 + 386 + + library/ubuntu:18.04 + amd64 + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index aa3c1b2d..6f91b1ef 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -118,9 +118,6 @@ Server URL Server URL - - Enable CLI - Set up a command line interface Update ENV Update the operating environment @@ -168,9 +165,6 @@ BOOTSTRAP - - Containerization method - Containerization method Distribution Distribution diff --git a/app/src/main/res/xml/properties.xml b/app/src/main/res/xml/properties.xml index aff5af64..081742d4 100644 --- a/app/src/main/res/xml/properties.xml +++ b/app/src/main/res/xml/properties.xml @@ -2,15 +2,6 @@ - - - - -