如何根据操作系统自动创建或配置Android项目local.properties文件中的SDK路径
如何根据操作系统自动创建或配置Android项目local.properties文件中的SDK路径
我之前在Android Studio里碰到过个闹心的问题——SDK路径没法动态配置,新拉项目、换电脑环境都得手动改local.properties,折腾得慌。后来我写了一段Gradle脚本,能自动搞定这个事儿:它会根据当前操作系统生成对应预设的SDK路径,自动创建不存在的local.properties文件,还能检查现有路径对不对,不对就自动更新,完全不用手动操心。
直接上代码,把这段放到项目根目录的build.gradle文件里(是项目根目录的那个,别搞成app模块下的哦):
def osName = System.getProperty("os.name").toLowerCase() def sdkPath if (osName.contains("windows")) { sdkPath = "C:\\\\ANDROID_SDK" } else if (osName.contains("mac")) { sdkPath = "/Users/web/Library/Android/sdk" } else { throw new GradleException("Sistema operacional não suportado: " + osName) } def localPropsFile = new File(rootDir, "local.properties") def localProps = new Properties() // Cria o arquivo se não existir if (!localPropsFile.exists()) { println "Arquivo local.properties não encontrado. Criando..." localPropsFile.createNewFile() } // Carrega as propriedades existentes localProps.load(localPropsFile.newDataInputStream()) // Atualiza sdk.dir apenas se necessário if (!localProps.containsKey("sdk.dir") || localProps.getProperty("sdk.dir") != sdkPath) { localProps.setProperty("sdk.dir", sdkPath) localProps.store(localPropsFile.newWriter(), null) println "sdk.dir configurado como: $sdkPath" } else { println "sdk.dir já está corretamente definido como: $sdkPath" }
这段脚本的工作逻辑说人话就是:
- 先认系统:通过系统属性判断是Windows还是Mac,给对应系统分配预设的SDK路径(如果是其他系统会直接抛异常提示不支持)
- 管文件死活:如果local.properties不存在,直接创建一个;要是已经有了,就先把里面的配置读出来
- 智能改路径:只有两种情况会更新路径——要么文件里根本没设
sdk.dir,要么现有的路径和预设的对不上。要是已经是对的,就只打个提示,不会瞎改文件
用的时候只要把代码粘对地方,同步一下Gradle,之后每次打开项目或者同步构建,它都会自动跑一遍检查,省心得很!
内容来源于stack exchange
相关产品推荐
相关产品推荐

