相关疑难解决方法(0)

为什么构建类型与产品风格不同?

前言:这不是关于如何在Android应用程序中使用构建类型和产品风格的问题.我理解所涉及的基本概念.这个问题更多的是试图了解应该在构建类型中指定哪个配置,应该在产品风格中指定哪个配置,以及是否实际需要区分.

本周,我一直在了解有关Android应用程序的gradle配置的更多信息.我最初认为我对构建类型和产品口味有很好的处理,但是我越深入到文档中,我就越发现两者之间的区别对我来说根本不清楚.

由于存在明确定义的层次结构(在某种意义上,构建类型中指定的属性优先于产品风格中指定的属性),我不明白为什么需要区分构建类型和产品风格.将所有属性和方法合并到产品风味DSL对象中,然后将构建类型视为(默认)风味维度是不是更好?

一些导致我困惑的具体例子:

  • signingConfig属性可以设置两种类型的建设和产品的口味......但minifyEnabled(和,我想,shrinkResources?)只能在构建类型进行配置.

  • applicationId只能在产品风格中指定...并且applicationIdSuffix只能在构建类型中指定!?

实际问题:

鉴于以上示例:构建类型与产品风格的角色之间是否存在明显区别?

如果是这样,了解它的最佳方法是什么?

如果没有,计划最终是将构建类型和产品风格合并到一个可配置的DSL对象中吗?

android android-gradle-plugin

167
推荐指数
3
解决办法
2万
查看次数

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

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

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

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

android gradle android-studio

29
推荐指数
3
解决办法
1万
查看次数

如何使用gradle动态切换/更改testInstrumentationRunner

我的项目有两组不同的测试.一个组仅使用默认运行,另一个组AndroidJUnitRunner必须使用自定义实现运行TestRunner extends MonitoringInstrumentation.

目前我每次需要运行另一组测试时都会testInstrumentationRunner通过编辑来切换build.gradle:

android{
      defaultConfig {
          //testInstrumentationRunner "my.custom.TestRunner"
           testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
      }
}
Run Code Online (Sandbox Code Playgroud)

我知道口味可以有自己的味道,testInstrumentationRunner但我目前的应用程序已经有2个flavourDimensions.使用flavor实际上是为了拥有不同版本的app.我需要2个版本的测试应用程序,都使用不同的testInstrumentationRunners 测试相同的应用程序.

我尝试testInstrumentationRunner通过迭代所有测试变体来改变.实际上有多个testInstrumentationRunner属性:

android.testVariants.all { TestVariant variant ->
    //readonly
    variant.variantData.variantConfiguration.instrumentationRunner

    variant.variantData.variantConfiguration.defaultConfig.testInstrumentationRunner

}
Run Code Online (Sandbox Code Playgroud)

但是一旦android.testVariants调用,构建就会被配置,并且所有更改都不会反映在构建中.

如何动态更改testInstrumentationRunner(从gradle插件)?

我更喜欢有2个不同的gradle任务,每个任务使用不同的testInstrumentationRunner但是测试相同的变体.因为我打算创建一个gradle插件,所以解决方案也应该像插件一样工作.

android gradle android-testing android-gradle-plugin

22
推荐指数
3
解决办法
9365
查看次数

Android本机应用程序命令行参数

我有:

void android_main(struct android_app* state)
Run Code Online (Sandbox Code Playgroud)

是否有可能从android_app结构中获取用于启动应用程序的命令行参数?如果没有,是否还有其他意思让他们使用C++调用(我不能使用Java代码)?

c++ android android-ndk

4
推荐指数
1
解决办法
2834
查看次数