The main interface for project lifecycle management.Source: core/projects/src/main/java/com/tom/rv2ide/projects/IProjectManager.kt:33
package com.tom.rv2ide.projectsimport com.android.builder.model.v2.models.ProjectSyncIssuesimport com.tom.rv2ide.tooling.api.IProjectimport java.io.Fileinterface IProjectManager { // Properties val projectDir: File val projectDirPath: String val projectSyncIssues: ProjectSyncIssues? // Project operations fun openProject(directory: File) fun openProject(path: String) suspend fun setupProject(project: IProject) // Workspace access fun getWorkspace(): IWorkspace? fun requireWorkspace(): IWorkspace // File notifications fun notifyFileCreated(file: File) fun notifyFileDeleted(file: File) fun notifyFileRenamed(from: File, to: File) // Lifecycle fun destroy() companion object { fun getInstance(): IProjectManager }}
Represents an opened project workspace with all modules and configurations.Source: core/projects/src/main/java/com/tom/rv2ide/projects/IWorkspace.kt:31
package com.tom.rv2ide.projectsimport com.android.builder.model.v2.models.ProjectSyncIssuesimport com.tom.rv2ide.projects.android.AndroidModuleimport com.tom.rv2ide.tooling.api.models.BuildVariantInfoimport java.io.Fileimport java.nio.file.Pathinterface IWorkspace { // Project structure fun getProjectDir(): File fun getRootProject(): GradleProject fun getSubProjects(): List<GradleProject> fun getProjectSyncIssues(): ProjectSyncIssues // Build variants fun getAndroidVariantSelections(): Map<String, BuildVariantInfo> // Project queries fun findProject(path: String): GradleProject? fun getProject(path: String): GradleProject fun androidProjects(): Sequence<AndroidModule> // File queries fun findModuleForFile(file: Path, checkExistance: Boolean = false): ModuleProject? fun findModuleForFile(file: File, checkExistance: Boolean = false): ModuleProject? fun containsSourceFile(file: Path): Boolean fun isAndroidResource(file: File): Boolean class ProjectNotFoundException(path: String) : RuntimeException class NotConfiguredException : RuntimeException}
import java.io.Fileval projectDir = File("/storage/emulated/0/AndroidProjects/MyApp")projectManager.openProject(projectDir)// Or use path stringprojectManager.openProject("/storage/emulated/0/AndroidProjects/MyApp")
interface GradleProject { val name: String val path: String // e.g., ":app" val projectDir: File val buildDir: File val buildFile: File // build.gradle or build.gradle.kts}
Extends GradleProject with module-specific functionality:
abstract class ModuleProject : GradleProject { abstract val classPaths: Set<File> abstract val compileClasspaths: Set<File> abstract val compileSourceDirectories: Set<File> // More properties...}
Represents an Android application or library module:
class AndroidModule : ModuleProject { val namespace: String val minSdk: Int val targetSdk: Int val compileSdk: String val resourceDirectories: Set<File> val assetsDirectories: Set<File> // More Android-specific properties...}