mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 07:49:44 +08:00
Remove unnecessary methods from BaseApplication
This commit is contained in:
@@ -29,6 +29,7 @@ import android.widget.LinearLayout;
|
||||
|
||||
import com.blankj.utilcode.util.ClipboardUtils;
|
||||
import com.blankj.utilcode.util.KeyboardUtils;
|
||||
import com.blankj.utilcode.util.ResourceUtils;
|
||||
import com.blankj.utilcode.util.SizeUtils;
|
||||
import com.itsaky.androidide.app.StudioActivity;
|
||||
import com.itsaky.androidide.databinding.ActivityTerminalBinding;
|
||||
@@ -50,6 +51,7 @@ import com.itsaky.terminal.view.TerminalView;
|
||||
import com.itsaky.terminal.view.TerminalViewClient;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import org.json.JSONException;
|
||||
|
||||
@@ -74,25 +76,33 @@ public class TerminalActivity extends StudioActivity {
|
||||
@Override
|
||||
protected View bindLayout () {
|
||||
binding = ActivityTerminalBinding.inflate (getLayoutInflater ());
|
||||
return binding.getRoot ();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate (Bundle savedInstanceState) {
|
||||
super.onCreate (savedInstanceState);
|
||||
|
||||
final var future = CompletableFuture.runAsync (() -> {
|
||||
final var in = ResourceUtils.
|
||||
});
|
||||
terminal = new TerminalView (this, null);
|
||||
terminal.setTerminalViewClient (client);
|
||||
terminal.attachSession (createSession (getWorkingDirectory ()));
|
||||
terminal.setKeepScreenOn (true);
|
||||
terminal.setTextSize (SizeUtils.dp2px (10));
|
||||
terminal.setTypeface (TypefaceUtils.jetbrainsMono ());
|
||||
|
||||
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams (-1, 0);
|
||||
params.weight = 1f;
|
||||
|
||||
|
||||
binding.getRoot ().addView (terminal, 0, params);
|
||||
try {
|
||||
binding.virtualKeyTable.setVirtualKeysViewClient (getKeyListener ());
|
||||
binding.virtualKeyTable.reload (new VirtualKeysInfo (ConstantsBridge.VIRTUAL_KEYS, "", VirtualKeysConstants.CONTROL_CHARS_ALIASES));
|
||||
} catch (JSONException e) {
|
||||
// Won't happen
|
||||
LOG.error ("Unable to parse terminal virtual keys json data", e);
|
||||
}
|
||||
|
||||
return binding.getRoot ();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
||||
+3
-3
@@ -83,7 +83,7 @@ public class EditorPreferences extends BasePreferenceFragment implements Prefere
|
||||
if(p1.getKey().equals(KEY_EDITOR_DRAW_HEX)) {
|
||||
boolean drawHex = (Boolean) p2;
|
||||
getPrefManager().putBoolean(KEY_EDITOR_DRAW_HEX, drawHex);
|
||||
ConstantsBridge.EDITORPREF_DRAW_HEX_CHANGED = true;
|
||||
ConstantsBridge.EDITOR_PREF_DRAW_HEX_CHANGED = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -154,7 +154,7 @@ public class EditorPreferences extends BasePreferenceFragment implements Prefere
|
||||
private void changeTextSize(LayoutTextSizeSliderBinding binding, float size) {
|
||||
getPrefManager().putFloat(KEY_EDITOR_FONT_SIZE, size);
|
||||
binding.slider.setValue(size);
|
||||
ConstantsBridge.EDITORPREF_SIZE_CHANGED = true;
|
||||
ConstantsBridge.EDITOR_PREF_SIZE_CHANGED = true;
|
||||
}
|
||||
|
||||
private void showPrintableCharsDialog() {
|
||||
@@ -191,7 +191,7 @@ public class EditorPreferences extends BasePreferenceFragment implements Prefere
|
||||
getPrefManager().putBoolean(KEY_EDITORFLAG_LINE_BREAK, isChecked);
|
||||
}
|
||||
|
||||
ConstantsBridge.EDITORPREF_FLAGS_CHANGED = true;
|
||||
ConstantsBridge.EDITOR_PREF_FLAGS_CHANGED = true;
|
||||
});
|
||||
builder.setPositiveButton(android.R.string.ok, null);
|
||||
builder.setCancelable(false);
|
||||
|
||||
@@ -19,7 +19,6 @@ package com.itsaky.androidide.views;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
@@ -278,9 +277,9 @@ public class CodeEditorView extends FrameLayout {
|
||||
}
|
||||
|
||||
private void configureEditorIfNeeded () {
|
||||
boolean sizeChanged = isFirstCreate || ConstantsBridge.EDITORPREF_SIZE_CHANGED;
|
||||
boolean flagsChanged = isFirstCreate || ConstantsBridge.EDITORPREF_FLAGS_CHANGED;
|
||||
boolean drawHexChanged = isFirstCreate || ConstantsBridge.EDITORPREF_DRAW_HEX_CHANGED;
|
||||
boolean sizeChanged = isFirstCreate || ConstantsBridge.EDITOR_PREF_SIZE_CHANGED;
|
||||
boolean flagsChanged = isFirstCreate || ConstantsBridge.EDITOR_PREF_FLAGS_CHANGED;
|
||||
boolean drawHexChanged = isFirstCreate || ConstantsBridge.EDITOR_PREF_DRAW_HEX_CHANGED;
|
||||
final PreferenceManager prefs = StudioApp.getInstance ().getPrefManager ();
|
||||
|
||||
if (sizeChanged) {
|
||||
@@ -290,7 +289,7 @@ public class CodeEditorView extends FrameLayout {
|
||||
}
|
||||
|
||||
binding.editor.setTextSize (textSize);
|
||||
ConstantsBridge.EDITORPREF_SIZE_CHANGED = false;
|
||||
ConstantsBridge.EDITOR_PREF_SIZE_CHANGED = false;
|
||||
}
|
||||
|
||||
if (flagsChanged) {
|
||||
@@ -316,12 +315,12 @@ public class CodeEditorView extends FrameLayout {
|
||||
}
|
||||
|
||||
binding.editor.setNonPrintablePaintingFlags (flags);
|
||||
ConstantsBridge.EDITORPREF_FLAGS_CHANGED = false;
|
||||
ConstantsBridge.EDITOR_PREF_FLAGS_CHANGED = false;
|
||||
}
|
||||
|
||||
if (drawHexChanged) {
|
||||
binding.editor.setLineColorsEnabled (prefs.getBoolean (PreferenceManager.KEY_EDITOR_DRAW_HEX, true));
|
||||
ConstantsBridge.EDITORPREF_DRAW_HEX_CHANGED = false;
|
||||
ConstantsBridge.EDITOR_PREF_DRAW_HEX_CHANGED = false;
|
||||
}
|
||||
|
||||
isFirstCreate = false;
|
||||
|
||||
@@ -28,9 +28,9 @@ import android.os.Build;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.app.NotificationManagerCompat;
|
||||
import androidx.multidex.MultiDexApplication;
|
||||
import com.blankj.utilcode.util.EncodeUtils;
|
||||
import com.blankj.utilcode.util.ResourceUtils;
|
||||
|
||||
import com.blankj.utilcode.util.ThrowableUtils;
|
||||
import com.itsaky.androidide.common.R;
|
||||
import com.itsaky.androidide.managers.PreferenceManager;
|
||||
import com.itsaky.androidide.managers.ToolsManager;
|
||||
import com.itsaky.androidide.shell.ShellServer;
|
||||
@@ -50,11 +50,7 @@ public abstract class BaseApplication extends MultiDexApplication {
|
||||
private static BaseApplication instance;
|
||||
private StudioUtils mUtils;
|
||||
private PreferenceManager mPrefsManager;
|
||||
private NotificationManager mNotificationManager;
|
||||
|
||||
public static final long BUSYBOX_VERSION = 1;
|
||||
public static final String TAG = "StudioApp";
|
||||
public static final String ASSETS_DATA_DIR = "data/";
|
||||
public static final String NOTIFICATION_ID_UPDATE = "17571";
|
||||
public static final String NOTIFICATION_ID_DEVS = "17572";
|
||||
public static final String TELEGRAM_GROUP_URL = "https://t.me/androidide_discussions";
|
||||
@@ -68,7 +64,6 @@ public abstract class BaseApplication extends MultiDexApplication {
|
||||
super.onCreate();
|
||||
|
||||
mPrefsManager = new PreferenceManager(this);
|
||||
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
||||
JavaCharacter.initMap();
|
||||
ToolsManager.init(this, null);
|
||||
|
||||
@@ -94,7 +89,7 @@ public abstract class BaseApplication extends MultiDexApplication {
|
||||
NotificationManagerCompat.from(this).createNotificationChannel(devsChannels);
|
||||
}
|
||||
|
||||
public String getNotificationChannelNameForId(String id) {
|
||||
public String getNotificationChannelNameForId(@NonNull String id) {
|
||||
if(id.equals(NOTIFICATION_ID_UPDATE))
|
||||
return getUpdateNotificationChannelName();
|
||||
else if(id.equals(NOTIFICATION_ID_DEVS))
|
||||
@@ -103,11 +98,11 @@ public abstract class BaseApplication extends MultiDexApplication {
|
||||
}
|
||||
|
||||
private String getUpdateNotificationChannelName() {
|
||||
return getString(com.itsaky.androidide.common.R.string.cms_channel_id_update);
|
||||
return getString(R.string.cms_channel_id_update);
|
||||
}
|
||||
|
||||
private String getDevNotificationChannelName() {
|
||||
return getString(com.itsaky.androidide.common.R.string.cms_channel_id_devs);
|
||||
return getString(R.string.cms_channel_id_devs);
|
||||
}
|
||||
|
||||
public static BaseApplication getBaseInstance () {
|
||||
@@ -131,30 +126,11 @@ public abstract class BaseApplication extends MultiDexApplication {
|
||||
public void writeException(Throwable th) {
|
||||
FileUtil.writeFile(new File(FileUtil.getExternalStorageDir(), "idelog.txt").getAbsolutePath(), ThrowableUtils.getFullStackTrace(th));
|
||||
}
|
||||
|
||||
public File getIndexedDir() {
|
||||
return Environment.mkdirIfNotExits(new File(getRootDir(), "indexed"));
|
||||
}
|
||||
|
||||
public File getD8Jar() {
|
||||
File f = new File(getRootDir(), "d8.jar");
|
||||
if(f.exists() && f.isFile())
|
||||
return f;
|
||||
if(ResourceUtils.copyFileFromAssets(ToolsManager.getCommonAsset("d8.jar"), f.getAbsolutePath())) {
|
||||
return f;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public File getRootDir() {
|
||||
return new File(getIDEDataDir(), "framework");
|
||||
}
|
||||
|
||||
public File getRootDirOld() {
|
||||
return new File(getFilesDir(), "framework");
|
||||
}
|
||||
|
||||
|
||||
@SuppressLint("SdCardPath")
|
||||
public File getIDEDataDir() {
|
||||
return Environment.mkdirIfNotExits(new File("/data/data/com.itsaky.androidide/files"));
|
||||
@@ -165,31 +141,11 @@ public abstract class BaseApplication extends MultiDexApplication {
|
||||
public final File getLogSenderDir() {
|
||||
return new File(getRootDir(), "logsender");
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Contract(" -> new")
|
||||
public final File getToolsDownloadDirectory() {
|
||||
return new File(getRootDir(), "downloads");
|
||||
}
|
||||
|
||||
|
||||
public final File getTempProjectDir() {
|
||||
return Environment.mkdirIfNotExits(new File(Environment.TMP_DIR, "tempProject"));
|
||||
}
|
||||
|
||||
public final File getTempClassesDir() {
|
||||
return Environment.mkdirIfNotExits(new File(FileUtil.getExternalStorageDir() /*getTempProjectDir() */, "classes"));
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Contract(" -> new")
|
||||
public final String getDownloadRequestUrl() {
|
||||
return new String(EncodeUtils.base64Decode("aHR0cHM6Ly9hbmRyb2lkaWRlLmNvbS9idWlsZC90b29scy9kb3dubG9hZC8="));
|
||||
}
|
||||
|
||||
public boolean isFrameworkDownloaded() {
|
||||
return getToolsDownloadDirectory().exists() && mPrefsManager.isFrameworkDownloaded();
|
||||
}
|
||||
|
||||
public boolean isFrameworkInstalled() {
|
||||
return getRootDir().exists() && mPrefsManager.isFrameworkInstalled();
|
||||
}
|
||||
@@ -203,27 +159,19 @@ public abstract class BaseApplication extends MultiDexApplication {
|
||||
}
|
||||
|
||||
public File[] listProjects() {
|
||||
return getProjectsDir().listFiles(p1 -> p1.isDirectory());
|
||||
return getProjectsDir().listFiles(File::isDirectory);
|
||||
}
|
||||
|
||||
public static boolean is64Bit() {
|
||||
return isAarch64();
|
||||
}
|
||||
|
||||
public static boolean is32Bit() {
|
||||
return isArmv7a();
|
||||
}
|
||||
|
||||
|
||||
public static boolean isAbiSupported () {
|
||||
return isAarch64() || isArmv7a();
|
||||
}
|
||||
|
||||
public static boolean isAarch64 () {
|
||||
return Arrays.stream(android.os.Build.SUPPORTED_ABIS).anyMatch("arm64-v8a"::equals);
|
||||
return Arrays.asList (Build.SUPPORTED_ABIS).contains ("arm64-v8a");
|
||||
}
|
||||
|
||||
public static boolean isArmv7a () {
|
||||
return Arrays.stream(android.os.Build.SUPPORTED_ABIS).anyMatch("armeabi-v7a"::equals);
|
||||
return Arrays.asList (Build.SUPPORTED_ABIS).contains ("armeabi-v7a");
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -235,15 +183,7 @@ public abstract class BaseApplication extends MultiDexApplication {
|
||||
}
|
||||
throw new UnsupportedOperationException ("Device not supported");
|
||||
}
|
||||
|
||||
public String getAssetsDataFile() {
|
||||
return ASSETS_DATA_DIR;
|
||||
}
|
||||
|
||||
public String getAssetsDataFile(String str) {
|
||||
return new StringBuffer().append(getAssetsDataFile()).append(str).toString();
|
||||
}
|
||||
|
||||
|
||||
public StudioUtils getUtils() {
|
||||
return mUtils == null ? mUtils = new StudioUtils(this) : mUtils;
|
||||
}
|
||||
|
||||
@@ -21,9 +21,9 @@ import java.util.List;
|
||||
|
||||
public class ConstantsBridge {
|
||||
|
||||
public static boolean EDITORPREF_SIZE_CHANGED = false;
|
||||
public static boolean EDITORPREF_FLAGS_CHANGED = false;
|
||||
public static boolean EDITORPREF_DRAW_HEX_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_SIZE_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_FLAGS_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_DRAW_HEX_CHANGED = false;
|
||||
public static boolean CLASS_LOAD_SUCCESS = true;
|
||||
|
||||
public static boolean SPLASH_TO_MAIN = false;
|
||||
|
||||
@@ -106,21 +106,19 @@ public final class Environment {
|
||||
SHELL = new File(BIN_DIR, "sh.sh");
|
||||
BUSYBOX_SH = new File (BIN_DIR, "sh");
|
||||
|
||||
if(!JAVA.canExecute()) {
|
||||
JAVA.setExecutable(true);
|
||||
}
|
||||
|
||||
if(!BUSYBOX.canExecute()) {
|
||||
BUSYBOX.setExecutable(true);
|
||||
}
|
||||
|
||||
if(!SHELL.canExecute()) {
|
||||
SHELL.setExecutable(true);
|
||||
}
|
||||
setExecutable (JAVA);
|
||||
setExecutable (BUSYBOX);
|
||||
setExecutable (SHELL);
|
||||
|
||||
System.setProperty("user.home", HOME.getAbsolutePath());
|
||||
System.setProperty("java.home", JAVA_HOME.getAbsolutePath());
|
||||
}
|
||||
|
||||
public static void setExecutable (@NonNull final File file) {
|
||||
if (!file.setExecutable (true)) {
|
||||
LOG.error ("Unable to set executable permissions to file", file);
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private static Map<String, String> readProperties() {
|
||||
@@ -129,11 +127,11 @@ public final class Environment {
|
||||
try {
|
||||
Properties p = new Properties();
|
||||
p.load(new StringReader(FileIOUtils.readFile2String(IDE_PROPS_FILE)));
|
||||
for(Map.Entry entry : p.entrySet()) {
|
||||
for(@SuppressWarnings("rawtypes") Map.Entry entry : p.entrySet()) {
|
||||
props.put(entry.getKey() + "", entry.getValue() + "");
|
||||
}
|
||||
} catch (Throwable th) {
|
||||
// ignored
|
||||
LOG.error ("Unable to read properties file", th);
|
||||
}
|
||||
return props;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user