Tag: gradle

没有find匹配的客户端软件包名称(Google Analytics) – 多个productFlavors&buildTypes

语境: 我正在尝试为我的应用设置Google Analytics(分析)。 (有4个自定义的buildTypes和多个productFlavors ) 当我select具有applicationId设置为com.my.app.package.name (生成google-services.json时使用的软件包名称)的Build Variant时,它工作正常。 但是,我的其他口味有不同的applicationIds。 我按照官方的指导来设置它。 在Build Variants Tab (具有不同的applicationId (包名称))中select任何其他Build Variants Tab时出现的错误如下所示: 错误:任务“:app:processAllcategoriesDebugfreeGoogleServices”的执行失败。 找不到匹配的包名“com.my.app.package.name.debug” 错误消息的解释: 在Debugfree上面的错误消息中的任务名称是我的自定义buildType , Allcategories是我的productFlavors 。 我明白了这个错误,并知道包名与我在生成json时使用的不同,但这正是我想要解决的问题。 问题: 现在, google-services.json驻留在app文件夹中,因此我无法通过将它们放在特定于风味的源文件夹中将它们分离出来。 问题: 我的自定义byildTypedebugging后缀.debug到applicationId (包名称)。 有没有一种方法,我可以使它与我的发布applicationId (即没有后缀.debug )的google-services.json工作, 有没有一种方法可以在同一个google-services.json文件中configuration多个产品风格,而无需使用单独的文件和任务将所需的文件复制到app文件夹。 我知道这可以使用本文中提到的task来完成。 有没有简单的方法来只有一个文件或基于gradleconfigurationselect正确的文件? 我看到google-services.json的package_name字段的包名称为com.my.app.package.name 。 我可以手动添加多个包名称以适用于所有构build变体吗? 如果是的话,该怎么做? 在文档中找不到任何说明。

Gradle中的transitive = true究竟是做什么的(关于crashlytics)?

Gradle transitive = true什么? 从Gradle文档中不清楚。 这是在build.gradle中compile的上下文中。 在我的情况下,我依靠Android的crashlytics。 compile('com.crashlytics.sdk.android:crashlytics:2.2.2@aar') { transitive = true; } 几个Gradle文档( 这里和这里 )暗示“传递”默认为true。 然而,消除transitive = true依赖不KitGroup (特别是KitGroup )中的transitive = true结果。 class file for io.fabric.sdk.android.KitGroup not found 文件说它默认为真,但实际行为似乎是相反的。 我正在运行Gradle 2.2.1。 也许行为在2.2和2.4之间变化了? 编辑 :相关传递依赖没有解决使用gradle aar库

在build.gradle文件中写评论的语法是什么?

往下看这个build.gradle文件 apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "package.myapp" minSdkVersion 19 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.nineoldandroids:library:2.4.0' } 如果我想写一个评论为什么我select这个图书馆这个项目 , 在build.gradle文件中写评论的语法是什么?

将Gradle支持添加到IntelliJ Project的最佳方法

我已经查了很多,并没有find最好的解决scheme来将现有的IntelliJ项目转换为Gradle。 我在团队环境中工作,我们目前共享.ipr文件,因为我们有一些跟踪的构buildconfiguration。 我们最终会摆脱那些赞成Gradle的人,但是在Gradle转换完成之前,我不能把事情弄得太多。 另外,我们的Java源文件是标准的,位于src目录的根目录,而不是src / main / java。 有没有一种方法可以将Gradle添加到我的项目中,这不会让我删除并重新创buildIntelliJ项目,并且在执行Git pull时不会将所有人都搞砸?

如何为不同的产品口味定义不同的依赖关系

我将其中一个应用程序转换为Gradle,并希望使用新的构build风格function来获得付费和免费的基于广告的风格。 我只想要基于广告的版本依赖于admob SDK。 我的构build文件如下所示: buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' repositories { mavenCentral() } android { compileSdkVersion 18 buildToolsVersion "18.0.1" defaultConfig { minSdkVersion 10 targetSdkVersion 18 } productFlavors { Pro { packageName "de.janusz.journeyman.zinsrechner.pro" } Free { dependencies { } } } } dependencies { compile 'com.android.support:support-v4:18.0.+' […]

在Gradle中,有没有更好的方法来获取环境variables?

在几个任务中,我参考我的家庭文件夹中的jar子。 有没有比获取环境variables更好的方法 ENV = System.getenv() HOME = ENV['HOME'] task copyToServer(dependsOn: 'jar', type: Copy) { from 'build/libs/' into HOME + "/something/plugins/" } 这设置$ HOME,但我希望我错过了文档中的一些魔术。

错误:没有这样的属性:GROUP for class:org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer

我想在我的项目中使用RecyclerViewLib ,为此我下载了它,并将其作为模块导入到我的空“Hello World”Android项目中。 我正在使用SDK工作室v1.0.1使用sdkpipe理器v24,这是我的应用程序/ build.gradle apply plugin: 'com.android.application' android { compileSdkVersion 17 buildToolsVersion "19.1.0" defaultConfig { applicationId "com.example.mk.dragdrop4" minSdkVersion 14 targetSdkVersion 17 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } 这是我的图书馆/ build.gradle apply plugin: 'com.android.library' android { compileSdkVersion […]

比较sbt和Gradle

我正在潜入Scala并注意到了sbt。 我在java / groovy项目中对Gradle很满意,我知道Gradle有一个scala插件。 在Scala项目中赞成Gradle的原因是什么?

Gradle中buildScript的用途

我是新来的Gradle,我正在阅读文档,但我不明白它的一些部分。 其中一个部分与buildScript块连接。 它的目的是什么? 如果您的构build脚本需要使用外部库,则可以将它们添加到构build脚本本身的脚本的类path中。 您可以使用buildscript()方法执行此操作,并传入一个声明构build脚本类path的闭包。 buildscript { repositories { mavenCentral() } dependencies { classpath group: 'commons-codec', name: 'commons-codec', version: '1.2' } } 好的,但有什么区别: repositories { mavenCentral() } dependencies { compile group: 'commons-codec', name: 'commons-codec', version: '1.2' } 例如,为什么有必要使用buildScript ?

在Gradle中使用构buildtypes来运行在一台设备上使用ContentProvider的相同应用程序

我已经设置Gradle添加包名称后缀到我的debugging应用程序,所以我可以有我使用和debugging版本在一个手机上的发行版本。 我引用这个: http : //tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Types 我的build.gradle文件如下所示: … android { … buildTypes { debug { packageNameSuffix ".debug" versionNameSuffix " debug" } } } 一切工作正常,直到我开始在我的应用程序中使用ContentProvider。 我得到: Failure [INSTALL_FAILED_CONFLICTING_PROVIDER] 我知道这是因为两个应用程序(发行版和debugging版)注册了相同的ContentProvider权限。 我看到一个可能性来解决这个问题。 如果我理解正确,你应该能够指定不同的文件来build设时使用。 然后,我应该能够将不同的权限放在不同的资源文件中(并且从Manifest设置权限作为string资源),并告诉Gradle使用不同的资源进行debugging构build。 那可能吗? 如果是,那么关于如何实现这一点的提示将是非常棒的! 或者也许有可能使用Gradle直接修改Manifest? 任何其他解决scheme,如何在一台设备上运行与ContentProvider相同的应用程序总是受欢迎的。