You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过命令行指定Gradle local.properties路径?适配Windows与WSL

解决Windows/WSL双环境下local.properties适配问题

我来帮你搞定这个跨环境构建Android应用的配置问题,其实只需要几步就能实现双配置文件切换,同时Gradle也支持通过命令行参数灵活指定配置文件路径,具体操作如下:

1. 准备两份环境专属的配置文件

首先在你的Android项目根目录下,创建两个不同的properties文件,分别对应Windows和WSL环境:

  • local-windows.properties(Windows系统用):

    # Windows下的SDK路径,注意转义反斜杠
    sdk.dir=C:\\Users\\你的用户名\\AppData\\Local\\Android\\Sdk
    # 如果用到NDK,同步配置对应路径
    ndk.dir=C:\\Users\\你的用户名\\AppData\\Local\\Android\\Sdk\\ndk\\你的NDK版本号
    
  • local-wsl.properties(WSL Ubuntu用):

    # WSL下挂载Windows磁盘的路径,C盘对应/mnt/c
    sdk.dir=/mnt/c/Users/你的用户名/AppData/Local/Android/Sdk
    ndk.dir=/mnt/c/Users/你的用户名/AppData/Local/Android/Sdk/ndk/你的NDK版本号
    

2. 修改根build.gradle支持加载指定配置文件

打开项目根目录的build.gradle文件,在最顶部添加一段逻辑,让Gradle可以读取命令行指定的配置文件:

// 优先读取命令行传入的propsFile参数,默认用原有的local.properties
def targetPropsFile = project.hasProperty('propsFile') ? project.propsFile : 'local.properties'
def propsFile = file(targetPropsFile)
def localProps = new Properties()

// 如果指定的配置文件存在,就加载里面的属性
if (propsFile.exists()) {
    localProps.load(new FileInputStream(propsFile))
    // 将加载的属性注入到项目中
    localProps.each { key, value ->
        project.ext.set(key, value)
    }
}

3. 命令行构建时指定配置文件

现在你就可以在不同环境下,通过-PpropsFile参数指定要使用的配置文件了:

Windows环境(PowerShell/CMD):

./gradlew assembleDebug -PpropsFile=local-windows.properties

WSL Ubuntu环境(终端):

./gradlew assembleDebug -PpropsFile=local-wsl.properties

额外技巧:无需修改build.gradle的快速方式

如果你只是临时指定SDK路径,不想修改构建脚本,也可以直接在命令行传递单个属性:

Windows下:

./gradlew assembleDebug -Psdk.dir=C:\\Users\\你的用户名\\AppData\\Local\\Android\\Sdk

WSL下:

./gradlew assembleDebug -Psdk.dir=/mnt/c/Users/你的用户名/AppData/Local/Android/Sdk

这种方式适合只有SDK路径需要适配的场景,如果你有多个配置项(比如签名密钥路径、NDK路径等),还是用双配置文件的方式更省心。

内容的提问来源于stack exchange,提问作者fatfatson

火山引擎 最新活动