diff --git a/app/src/main/java/com/itsaky/androidide/EditorActivity.java b/app/src/main/java/com/itsaky/androidide/EditorActivity.java index 833d139bd..33fd8f3b0 100644 --- a/app/src/main/java/com/itsaky/androidide/EditorActivity.java +++ b/app/src/main/java/com/itsaky/androidide/EditorActivity.java @@ -199,7 +199,6 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F mBuildServiceHandler = new BuildServiceHandler(this); mFileOptionsHandler = new FileOptionsHandler(this); - getApp().checkAndUpdateGradle(); startServices(); KeyboardUtils.registerSoftInputChangedListener(this, __ -> onSoftInputChanged()); diff --git a/app/src/main/java/com/itsaky/androidide/SplashActivity.java b/app/src/main/java/com/itsaky/androidide/SplashActivity.java index 8953ddc37..a68d5a4dd 100644 --- a/app/src/main/java/com/itsaky/androidide/SplashActivity.java +++ b/app/src/main/java/com/itsaky/androidide/SplashActivity.java @@ -73,7 +73,6 @@ public class SplashActivity extends StudioActivity } private void goToMain() { - getApp().checkAndUpdateGradle(); mHandler.removeCallbacks(mRunnable); mHandler.postDelayed(mRunnable, 1000); } diff --git a/app/src/main/java/com/itsaky/androidide/app/StudioApp.java b/app/src/main/java/com/itsaky/androidide/app/StudioApp.java index 05ebae092..27c436e08 100644 --- a/app/src/main/java/com/itsaky/androidide/app/StudioApp.java +++ b/app/src/main/java/com/itsaky/androidide/app/StudioApp.java @@ -314,22 +314,6 @@ public class StudioApp extends MultiDexApplication return new StringBuffer().append(getAssetsDataFile()).append(str).toString(); } - public void checkAndUpdateGradle() { - File gradle = new File(Environment.GRADLE_HOME, "bin/gradle"); - if(gradle.exists()) { - String[] txt = FileUtil.readFile(gradle.getAbsolutePath()).split("\n"); - if(txt != null && txt.length > 1) { - String line1 = txt[0]; - if(line1.startsWith("#!")) { - txt[0] = ""; - } - FileUtil.writeFile(gradle.getAbsolutePath(), TextUtils.join("\n", txt)); - if(!gradle.canExecute()) - gradle.setExecutable(true); - } - } - } - public StudioUtils getUtils() { return mUtils == null ? mUtils = new StudioUtils(this) : mUtils; } diff --git a/app/src/main/java/com/itsaky/androidide/services/IDEService.java b/app/src/main/java/com/itsaky/androidide/services/IDEService.java index 306e91d7a..6b8f1785e 100644 --- a/app/src/main/java/com/itsaky/androidide/services/IDEService.java +++ b/app/src/main/java/com/itsaky/androidide/services/IDEService.java @@ -33,6 +33,8 @@ import org.eclipse.lsp4j.DidChangeWatchedFilesParams; import org.eclipse.lsp4j.FileChangeType; import org.eclipse.lsp4j.FileEvent; import com.blankj.utilcode.util.ThreadUtils; +import java.util.Collection; +import java.util.stream.Collectors; public class IDEService implements ShellServer.Callback { @@ -238,8 +240,9 @@ public class IDEService implements ShellServer.Callback { final PreferenceManager prefs = app.getPrefManager(); final List args = new ArrayList<>(); - args.add("gradle"); - args.addAll(tasks); + args.add("sh"); + args.add("gradlew"); + args.addAll(asAppTasks(tasks)); args.add("--init-script"); args.add(Environment.INIT_SCRIPT.getAbsolutePath()); @@ -262,6 +265,17 @@ public class IDEService implements ShellServer.Callback { return TextUtils.join(" ", args); } + + private Collection asAppTasks(List tasks) { + return tasks.stream() + .filter(t -> t != null) + .map(t -> asAppModuleTask(t)) + .collect(Collectors.toList()); + } + + private String asAppModuleTask (String name) { + return name.startsWith(":app:") ? name : ":app:" + name; + } public IDEProject getIDEProject () { return mIDEProject; @@ -283,7 +297,7 @@ public class IDEService implements ShellServer.Callback { Environment.mkdirIfNotExits(Environment.TMP_DIR); currentTask = task; listener.appendOutput(task, getString(R.string.msg_task_begin, currentTime(), task.getName())); - shell.bgAppend(String.format("cd \"%s\"", new File(projectRoot, "app").getAbsolutePath())); + shell.bgAppend(String.format("cd '%s'", projectRoot.getAbsolutePath())); shell.bgAppend(getArguments(task.getTasks())); isBuilding = true; listener.prepareBuild(); @@ -330,7 +344,7 @@ public class IDEService implements ShellServer.Callback { } public void stopAllDaemons() { - app.newShell(null).bgAppend("gradle --stop"); + app.newShell(null).bgAppend(String.format(Locale.US, "cd '%s' && sh gradlew --stop", projectRoot.getAbsolutePath())); if(isBuilding()) { if(listener != null) listener.onBuildFailed(currentTask, getString(R.string.msg_daemons_stopped)); @@ -351,9 +365,7 @@ public class IDEService implements ShellServer.Callback { } public void updateResourceClasses() { - if(mAppModule != null) { - execTask(new UpdateResourceClassesTask(mAppModule.viewBindingEnabled)); - } + execTask(new UpdateResourceClassesTask(mAppModule != null && mAppModule.viewBindingEnabled)); } public String typeString(int type) { diff --git a/app/src/main/java/com/itsaky/androidide/utils/Environment.java b/app/src/main/java/com/itsaky/androidide/utils/Environment.java index 783611da2..b848b9e39 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/Environment.java +++ b/app/src/main/java/com/itsaky/androidide/utils/Environment.java @@ -33,11 +33,9 @@ public final class Environment { public static final File PROJECT_DATA_FILE; public static final File JLS_JAR; - public static final File GRADLE_HOME; public static final File GRADLE_PROPS; public static final File GRADLE_USER_HOME; - public static final File GRADLE; public static final File JAVA; public static final File BUSYBOX; public static final File SHELL; @@ -51,7 +49,6 @@ public final class Environment { private static final String DEFAULT_JAVA_HOME = "/data/data/com.itsaky.androidide/files/framework/jdk"; private static final String DEFAULT_ANDROID_HOME = "/data/data/com.itsaky.androidide/files/framework/android-sdk"; - private static final String DEFAULT_GRADLE_HOME = "/data/data/com.itsaky.androidide/files/framework/gradle-7.1.1"; private static final Logger LOG = Logger.instance("Environment"); @@ -79,17 +76,11 @@ public final class Environment { IDE_PROPS.putAll(readProperties()); ANDROID_HOME = new File(readProp("ANDROID_HOME", DEFAULT_ANDROID_HOME)); JAVA_HOME = new File(readProp("JAVA_HOME", DEFAULT_JAVA_HOME)); - GRADLE_HOME = new File(readProp("GRADLE_HOME", DEFAULT_GRADLE_HOME)); - GRADLE = new File(GRADLE_HOME, "bin/gradle"); JAVA = new File(JAVA_HOME, "bin/java"); BUSYBOX = new File(BINDIR, "busybox"); SHELL = new File(BINDIR, "sh.sh"); - if(!GRADLE.canExecute()) { - GRADLE.setExecutable(true); - } - if(!JAVA.canExecute()) { JAVA.setExecutable(true); } @@ -119,11 +110,7 @@ public final class Environment { } return props; } - - public static File getGradleDir() { - return GRADLE_HOME; - } - + public static void setBootClasspath(File file) { BOOTCLASSPATH = new File(file.getAbsolutePath()); } @@ -131,8 +118,9 @@ public final class Environment { public static Map getEnvironment(boolean publicUse) { final Map map = new HashMap<>(); map.put("HOME", HOME.getAbsolutePath()); + map.put("ANDROID_HOME", ANDROID_HOME.getAbsolutePath()); + map.put("JAVA_HOME", JAVA_HOME.getAbsolutePath()); map.put("GRADLE_USER_HOME", GRADLE_USER_HOME.getAbsolutePath()); - map.put("GRADLE_HOME", GRADLE_HOME.getAbsolutePath()); map.put("TMPDIR", TMP_DIR.getAbsolutePath()); map.put("PROJECTS", PROJECTS_DIR.getAbsolutePath()); map.put("LANG", "en_US.UTF-8"); @@ -150,10 +138,6 @@ public final class Environment { map.put("CONFIG_SHELL", SHELL.getAbsolutePath()); map.put("TERM", "screen"); - map.put("ANDROID_HOME", ANDROID_HOME.getAbsolutePath()); - map.put("GRADLE_HOME", GRADLE_HOME.getAbsolutePath()); - map.put("JAVA_HOME", JAVA_HOME.getAbsolutePath()); - /** * If LD_LIBRARY_PATH is set, append $SYSROOT/lib to it, * else set it to $SYSROOT/lib @@ -177,7 +161,6 @@ public final class Environment { String path = ""; path += String.format("%s/bin", JAVA_HOME.getAbsolutePath()); - path += String.format(":%s/bin", GRADLE_HOME.getAbsolutePath()); path += String.format(":%s/cmdline-tools/latest/bin", ANDROID_HOME.getAbsolutePath()); path += String.format(":%s/cmake/bin", ANDROID_HOME.getAbsolutePath()); path += String.format(":%s/bin", SYSROOT.getAbsolutePath());