Articles of gradle

Gradle获取当前的特定任务的味道

我正在尝试处理google-services.json和不同的风格。 该文件说,我们需要在根文件夹中的文件。 我有一个任务,可以很容易地从风格文件夹复制文件到根文件夹: task CopyToRoot(type: Copy) { def appModuleRootFolder = '.' def srcDir = 'src' def googleServicesJson = 'google-services.json' outputs.upToDateWhen { false } def flavorName = android.productFlavors.flavor1.name description = "Switches to $flavorName $googleServicesJson" delete "$appModuleRootFolder/$googleServicesJson" from "${srcDir}/$flavorName/" include "$googleServicesJson" into "$appModuleRootFolder" } 然后,在afterEvaluate我的力量 afterEvaluate { processFlavor1DebugGoogleServices.dependsOn CopyToRoot processFlavor1ReleaseGoogleServices.dependsOn CopyToRoot } 这只适用于1种风味(静态定义)。 如何为每一个味道做到这一点? 我有四种口味。 如何获得正在编译的当前风味? [ […]

connectedAndroidTest和发布构buildtypes

我正在使用gradle:1.2.3 我想运行我的androidConntectTests(仪器testing)发布(签名,缩小)configuration,但我不能。 我的build设types: buildTypes { debug { minifyEnabled false debuggable true } robotium { debuggable true minifyEnabled true signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } release { minifyEnabled true debuggable false signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 我已经读过,那些testing只能在debbugableconfiguration上运行,所以我做了“robotium”的构buildtypes(见上),但是它仍然不起作用。 当我尝试调用“gradle任务”时,仅显示connectedAndroidTest-Flavor-Debug,调用“connectedAndroidTest-Flavor-Release / Robobium”只会失败,并显示“未在根项目中find任务XXX”。 有什么办法让testingtesting运行在不同的构buildtypes?

shrinkResources设置为true,但所有未使用的资源(特别是可绘制的)没有被删除

我将shrinkResources设置为true,如下所示: releasepro { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' applicationIdSuffix ".pro" } 但是这只是删除了一些未使用的资源。 我知道,gradle做了一些猜测,并留下了不确定的资源未使用。 有没有办法去除所有未使用的资源100%? 我读了关于在另一个线程中设置shrinkMode严格。 这会有帮助吗? 我无法尝试,因为我不知道在哪里设置它。 查看示例和文档,但不幸的是无法进入正确的页面。 有没有办法确保100%清除未使用的资源?

在Android Gradle构build中,如何从包含的jar文件中排除依赖关系?

在我的Android项目中,我使用了一个来自jar的库。 我将它包含在依赖部分中,如下所示: dependencies { … compile files('libs/thethirdpartylibrary.jar') … } 我也想使用okhttp库,我这样包含: compile ('com.squareup.okhttp:okhttp:2.7.5') (这个okhttp的特定版本取决于okio 1.6.0。) 问题是第三方的jar库取决于okio v0.9.0,更糟糕的是,它捆绑。 因此,我在构build时遇到了dex冲突错误。 我能够通过手动删除jar文件中的okio来解决这个问题,这似乎工作。 但我想知道是否有办法在gradle中做到这一点。 我的问题:我可以删除捆绑,传递(< – 我希望我正在使用这个单词正确的方式)依赖关系从一个包括的jar在编译时与gradle?

在Android Studio中使用Gradle是强制的吗?

自从官方发布以来,我正在使用android studio。 到目前为止,我使用的是Android Studio版本2.1.2,我需要等待几个小时才能第一次导入项目,并让Gradle同步。 有些人build议在离线模式下运行android studio,但是当我想使用外部库时,我需要使我的项目同步,所以我必须启用gradle。 有没有办法可以摆脱Gradle? 举个例子: 4:19:03 PM Executing tasks: [:app:clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:prepareDebugUnitTestDependencies, :app:mockableAndroidJar, :app:assembleDebug] 现在已经是四点半了,还在跑马圈上! 只需要在Eclipse中按F11并在20秒内debugging应用程序。

isMinifyEnabled()已弃用。 有什么select?

我使用下面的代码,根据产品的风味,显然自动生成职业防护贴图文件。 buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' applicationVariants.all { variant -> if (variant.getBuildType().isMinifyEnabled()) { variant.assemble.doLast { copy { from variant.mappingFile into "${rootDir}/proguardTools" rename { String fileName -> "mapping-${variant.name}.txt" } } } } } } } 在将android studio升级到3.0之后,它显示一个警告isMinifyEnabled()已过时,我无法find任何解决scheme或此isMinifyEnabled()的替代scheme。 任何帮助提前谢谢?

Android Studio导入模块Gradle生成错误

我试图添加一个目录作为Android Studio(GameBaseUtils)中的依赖项。 我已经看到其他的答案只是发布正确的gradleconfiguration为他们的特定问题,但我不明白我如何能适应他们的答案我的情况。 这是我做的: 第一步:文件 – >导入模块 – >导航到目录并select它。 第二步 – :文件 – >项目结构 – >模块 – >select我的应用程序 – >依赖项 – >添加模块作为依赖项目。 现在我的代码没有任何红线表示导入模块时出错。 但是,当我select生成时,我得到以下错误: Gradle: package com.google.example.games.basegameutils does not exist Gradle: cannot find symbol class BaseGameActivity Gradle: cannot find symbol variable super … 这是我的应用程序的build.gradle文件 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.4' } […]

Android Studio – 构build变体不显示

我最近更新了Android Studio到版本0.3.0,现在没有我可以select的构build版本。 我已经尝试清理和重build项目,并重新启动Android Studio没有成功。 我的build.gradle是 android { compileSdkVersion 18 buildToolsVersion "18.0.1" defaultConfig { minSdkVersion 9 targetSdkVersion 18 versionCode 10 } productFlavors { lite { packageName "com.lvl.xpbar" versionCode 11 } pro { packageName "com.afewguys.raisethebar" versionCode 1 } } sourceSets { main { manifest.srcFile '/src/main/AndroidManifest.xml' java.srcDirs = ['/src/main/java','.apt_generated'] resources.srcDirs = ['/src/main/java','.apt_generated'] aidl.srcDirs = ['/src/main/java','.apt_generated'] renderscript.srcDirs = ['/src/main/java','.apt_generated'] […]

如何在Android库gradle项目中包含依赖关系?

我正在使用Android Studio构build一个使用Gradle的Android库项目。 它有一些本地依赖: compile project(':androidlibrary') 嵌套,附加的外部依赖: compile group: 'com.google.guava', name: 'guava', version: '14.0.1' 我设法构build了aar文件,但没有包含外部或本地依赖项。 我期望在发布到maven的时候在POM文件中提到外部依赖关系,但是本地的依赖关系呢? 什么是build立这样的项目的正确方法?

Gradle模块和git子模块

我有一个名为工具包的库项目,有两个模块core和database ,这个configuration: settings.gradle include ':core' include ':database' 核心build.gradle dependencies { compile 'com.android.support:support-v4:20.+' compile 'com.jakewharton:butterknife:5.1.+' compile 'com.google.code.gson:gson:2.2.+' compile 'uk.co.chrisjenx:calligraphy:0.7.+' compile files('libs/flurry-3.4.0.jar') } 数据库build.gradle dependencies { compile project(':core') } 它可以运行我的testing在这个库项目,但我想添加这个库作为其他项目的git子模块,这个项目有以下configuration: settings.gradle include ':app-tablet' include 'libraries:float-hint' include 'libraries:toolkit:core' include 'libraries:toolkit:database' include 'libraries:twoway-view:TwoWayView' 应用程序build.gradle dependencies { compile 'com.astuetz:pagerslidingtabstrip:1.0.1' compile 'com.google.android.gms:play-services:+' compile 'com.j256.ormlite:ormlite-android:4.48' compile 'com.jayway.android.robotium:robotium-solo:5.2.1@jar' compile 'com.squareup.dagger:dagger:1.2.+' compile 'com.squareup.picasso:picasso:2.1.1@jar' compile […]