将-P参数从android studio传递给gradle

Igo*_*daš 29 android gradle android-studio

android studio里面有一个功能可以做这样的事情.基本上我的gradle脚本读取名为version的参数,根据该参数设置某个库的依赖版本.因此,当我执行gradlew -Pversion ='1.2.3'时,我在gradle中得到了这个字符串.但这只有在我从控制台调用gradle时才有效.

有没有办法在Android Studio中使用项目配置(按下小三角形)时将参数传递给gradle?

注意:我确实在默认配置下找到了Gradle VM选项和脚本参数,但添加-Pversion ='1.2.3'似乎没有效果.

Ros*_*hak 22

为了向runAndroid Studio的选项提供参数,您应该在AndroidStudios Compile Preferences下设置它们

AndroidStudio>偏好设置...

在Compiler:ComandLineOptions下 在此输入图像描述

  • 在AS 3.0.1上,这对我有用,并且在传递gradle属性时允许Instant Run功能.不幸的是,这必须全局设置,并且不能按运行配置设置.此外,正如@KMP回答的那样,直接使用gradle任务可以使用属性,但它会为我打破Instant Run. (2认同)

ABS*_*ABS 10

运行>编辑配置..

在此输入图像描述

用params替换Script参数中的"abcdef".

  • 不幸的是,这不符合我的情况.我想在使用Android应用程序配置时将参数传递给gradle(屏幕截图左侧的第一个选项)我不想直接运行Gradle任务. (4认同)

sav*_*ion 10

例如,让我们尝试在构建项目时传递服务器基本端点。首先我们需要定义一个获取 url 并设置它的方法

def serverUrl = "https://mydefaulturl.com"
task(runProgram){
   if(project.hasProperty("url")){
       serverUrl = url;
   }
}
Run Code Online (Sandbox Code Playgroud)

在您的 buildTypes 中使用以下值创建基本 url:

debug{
   buildConfigField("java.lang.String","BASE_URL","$serverUrl")
}
Run Code Online (Sandbox Code Playgroud)

现在我们可以通过 debug 构建一个 url 并使用它。

您可以使用以下命令从终端构建项目:

./gradlew installDebug task runProgram '-Purl="https://yournewurl.com"'
Run Code Online (Sandbox Code Playgroud)