Articles of gradle

如何告诉Gradle在命令行中使用不同的AndroidManifest?

我有一个多模块项目。 从我项目的根目录(包含多个模块)开始,我希望能够调用’gradle build’并让它在我的一个模块中使用不同的AndroidManifest,具体取决于我传入的一些参数。什么是最好的方法来完成这个? 我应该使用gradle.properties文件还是可以在settings.gradle文件中以某种方式指定不同的build.gradle? 任何帮助赞赏! settings.gradle: include ‘ActionBarSherlock’ include ” 的build.gradle: buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.4.2’ } } apply plugin: ‘android’ dependencies { compile project(‘:ActionBarSherlock’) } android { buildToolsVersion “17.0” compileSdkVersion 17 sourceSets { main { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] resources.srcDirs = [‘src’] aidl.srcDirs = [‘src’] renderscript.srcDirs = [‘src’] […]

将Google Play服务从8.4.0更新为9.2.1会导致Gradle同步错误

当我将Gradle文件中的Google Play依赖项从版本8.4.0更新到9.2.1时,出现以下错误: 错误:无法解决:com.google.android.gms:play-services-measurement:9.2.1 使用版本8.4.0时,这不是问题。 我试图将它作为一个明确的依赖包括在内但没有任何区别。 我正在使用的具体依赖项是: compile ‘com.google.android.gms:play-services-maps:9.2.1’ compile ‘com.google.android.gms:play-services-auth:9.2.1’ compile ‘com.google.android.gms:play-services-plus:9.2.1’ 对于为什么会发生这种情况有任何指示,我将不胜感激。

如何根据gradle风格设置variables

我想传递一个variablestest ,我将每种风格设置不同作为NDK的定义。 但由于某种原因,他总是传递最后一种味道的价值。 这是build.gradle: apply plugin: ‘com.android.library’ def test android { compileSdkVersion 23 buildToolsVersion “23.0.2” defaultPublishConfig “flavorARelease” publishNonDefault true defaultConfig { minSdkVersion 15 targetSdkVersion 17 ndk { moduleName “test” ldLibs “log” } } productFlavors { flavorA { test = 1 } flavorB { test = 2 } } buildTypes { debug { ndk { if […]

Gradle – 相当于android的test {}配置块

Gradle具有测试配置块 https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.Test.html “` apply plugin: ‘java’ // adds ‘test’ task test { // enable TestNG support (default is JUnit) useTestNG() // set a system property for the test JVM(s) systemProperty ‘some.prop’, ‘value’ // explicitly include or exclude tests include ‘org/foo/**’ exclude ‘org/boo/**’ // show standard out and standard error of the test JVM(s) on the […]

libs文件夹在android studio中不起作用

我正在使用Android studio 1.2 Beta 2的mac版本,建于2015年4月7日.Gradle版本2.2.1和Gradle插件版本1.1.0。 创建新项目后,默认情况下,我的app / build.gradle文件中存在以下代码。 … dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) } 这意味着我添加到app / libs目录的任何jar文件都应该加载到我的项目中,对吗? 但是,当我将Parse-1.9.0.jar添加到app / libs时,它没有被加载。 我没能在MainActivity.java中使用API​​中的代码。 右键单击Parse-1.9.0.jar – > Add As Library … app / build.gradle成为: … dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) compile files(‘libs/Parse-1.9.0.jar’) } 我很困惑为什么。 不应该编译fileTree()包含所有的jar文件? 为什么我需要做额外的步骤? 我下载的Parse-1.9.0.jar文件来自: https ://parse.com/apps/quickstart#parse_data/mobile/android/native/existing 谢谢

使用gradle为不同的应用程序风格使用不同的资源

我有一个Android应用程序,我想有不同的口味。 具体来说,我希望有两种口味,每种口味使用不同的字符串(不同的strings.xml文件),也许有一些不同的图标。 我尝试在项目的根文件夹中创建两个文件夹: flav1和flav2并使用以下build.gradle android { compileSdkVersion “Google Inc.:Google APIs:15” buildToolsVersion “17.0.0” sourceSets { main { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] resources.srcDirs = [‘src’] aidl.srcDirs = [‘src’] renderscript.srcDirs = [‘src’] res.srcDirs = [‘res’] assets.srcDirs = [‘assets’] } instrumentTest.setRoot(‘tests’) } productFlavors { flav1 { packageName “com.ic.flav1” } flav2 { packageName “com.ic.flav2” } } android.sourceSets.flav2 { res […]

未find类,使用Android Studio 3.0.1,Room,Kotlin在androidTest中清空测试套件

我在运行androidTest时遇到问题。 这是我在gradle中的设置: apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ apply plugin: ‘kotlin-kapt’ android { compileSdkVersion 26 defaultConfig { applicationId “com.blabla.shoppinglistapp” minSdkVersion 17 targetSdkVersion 26 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } } ext.daggerVersion = ‘2.11’ ext.roomVersion = ‘1.0.0’ ext.mockitoVersion = ‘2.11.0’ dependencies […]

Gradle Android插件生成不同产品口味的R文件?

我想合并我的免费应用程序和付费应用程序。 Android新构建系统的productFlavors似乎非常适合我的问题。 我的freeApp风格很好用,但是当我构建paidApp风格时,生成的R文件是在freeApp中定义的包结构中。 以下是gradle.build文件的片段: productFlavors { freeApp { versionCode 201308020 versionName “2.0.13_free” packageName “com.flyingspheres.android” } paidApp { versionCode 201305110 versionName “2.0.10_paid” packageName “com.flyingspheres.android.inventory” } 我一直认为R文件的位置是由清单中的包名定义的。 我validation了清单文件正确生成。 问题是两种风味的R文件都位于同一位置。 Gradle要求清单存在于主源代码树中,因此无论我在主源代码树中放置哪个版本的清单,都将生成R.java文件。 假设我在每个风味的正确位置生成R文件; 如何管理R文件的import语句,以便每个flavor引用正确的R文件? 这是我的项目结构的屏幕截图: 每个AndroidManifest.xml文件都是完整且完整的清单 – 根据文档,主树中的清单应该完全覆盖产品风味版本。 虽然,显然没有发生,因为应该启动的活动和内容提供商没有被覆盖。 任何对我所做错事的见解都会非常感激。 这必须是一个非常常见的情况,任何覆盖packageName的人都会遇到这种情况。 我一直在努力解决这个问题大约一个星期,而且似乎无法自己实现这一目标。 谢谢, -Aaron

如何在lintOptions中设置severityOverrides?

我有一个Android项目定义 buildscript { repositories { jcenter() } dependencies { // Android plugin for gradle // http://google.github.io/android-gradle-dsl classpath ‘com.android.tools.build:gradle:1.5.0′ // … 在我的应用程序中,我想设置 android { // … lintOptions { // http://google.github.io/android-gradle-dsl/1.5/com.android.build.gradle.internal.dsl.LintOptions.html#com.android.build.gradle.internal.dsl.LintOptions:severityOverrides severityOverrides { [“MissingTranslation”: “warning”] } // … 但我得到了错误 错误:(34,0)未findGradle DSL方法:’severityOverrides()’可能的原因:项目’android’可能正在使用不包含该方法的Gradle版本。 设置severityOverrides的正确方法是什么? 已编译但对:app:lintVitalRelease构建步骤没有预期效果的版本: import com.android.builder.model.LintOptions // … severityOverrides [“MissingTranslation”: LintOptions.SEVERITY_WARNING] 和 import com.android.builder.model.LintOptions // … severityOverrides.MissingTranslation = […]

在AndroidTestCase中调用MockitoAnnotations.initMocks()时的NPE

试图在我的AndroidTestCase中使用mockito。 我将依赖项添加到build.gradle: final DEXMAKER_VERSION = ‘1.2’ dependencies { // … androidTestCompile “com.google.dexmaker:dexmaker:${DEXMAKER_VERSION}” androidTestCompile “com.google.dexmaker:dexmaker-mockito:${DEXMAKER_VERSION}” androidTestCompile ‘org.mockito:mockito-core:1.10.19’ } 带有mockito初始化的TestCase: public class UsersListPresenterTest extends AndroidTestCase { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); } public void testInitialize() throws Exception { } } 但是只要我向类中添加任何属性,即使在添加任何注释之前,测试也会开始崩溃: public class UsersListPresenterTest extends AndroidTestCase { String mockString; public void setUp() throws Exception { […]