Articles of android gradle

Gradle:’buildTypes’不能应用于groovy.lang.Closure

将targetSdkVersion和compileSdkVersion更改为22,并将buildToolsVersion更改为22.0.1后,我不断收到以下错误: ‘buildTypes’不能应用于’(groovy.lang.Closure )’ 我查看了我的build.gradle文件并尝试查找可能出错的任何内容: apply plugin: ‘com.android.application’ android { compileSdkVersion 22 buildToolsVersion “22.0.1” defaultConfig { applicationId “********” minSdkVersion 14 targetSdkVersion 22 versionCode 17 versionName “1.5-beta” } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } productFlavors { freeFlavour { applicationId “********” } paidFlavour { applicationId “********” } } } dependencies { compile fileTree(dir: […]

如何根据Jenkins的构建数设置Android应用程序版本?

应用程序在成功推送后由jenkins自动构建,但版本始终为1.0。 而不是“0”我想在jenkins中插入相应构建的数量:1.119,1.120,1.121 …… 那是我的build.gradle文件 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.12.2’ } } allprojects { repositories { mavenCentral() } } build.sh #!/bin/bash gradle clean gradle build #. run_android_ui_tests.sh 我的gradle.properities仅包含注释。

BSOD之后的Gradle构建错误(java.lang.NullPointerException(无错误消息)

在BSOD(蓝屏死机)之后我有下一个gradle构建错误:FAILURE:构建失败并出现exception。 出了什么问题:java.lang.NullPointerException(没有错误消息) 尝试:使用–info或–debug选项运行以获取更多日志输出。 例外情况是: java.lang.NullPointerException at org.gradle.api.internal.changedetection.state.TreeSnapshotRepository.removeTreeSnapshotUsage(TreeSnapshotRepository.java:85) at org.gradle.api.internal.changedetection.state.CacheBackedFileSnapshotRepository.remove(CacheBackedFileSnapshotRepository.java:47) at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository$1$1.run(CacheBackedTaskHistoryRepository.java:81) at org.gradle.internal.Factories$1.create(Factories.java:22) at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:192) at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:175) at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:106) at org.gradle.cache.internal.DefaultCacheFactory$ReferenceTrackingCache.useCache(DefaultCacheFactory.java:187) at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:60) at org.gradle.api.internal.changedetection.state.CacheBackedTaskHistoryRepository$1.update(CacheBackedTaskHistoryRepository.java:66) at org.gradle.api.internal.changedetection.changes.DefaultTaskArtifactStateRepository$TaskArtifactStateImpl.afterTask(DefaultTaskArtifactStateRepository.java:135) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:68) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66) at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50) at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110) at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) […]

检索项目的父项时出错:找不到与给定名称匹配的资源’android:TextAppearance.Material.Widget.Button.Colored’

今天,我面对这篇文章中提到的错误: 检索项目的父项时出错:找不到与给定名称匹配的资源’android:TextAppearance.Material.Widget.Button.Borderless.Colored’ 有趣的事情(和差异)是 – 我们的应用程序是5个月的生产,我们已经制作了数百个构建和APK到目前为止。 我们没有更改一行代码一周(既没有任何库版本),并且构建突然停止处理这个提到的错误。 Execution failed for task ‘:react-native-fbsdk:processReleaseResources’ X:\app\node_modules\react-native-fbsdk\android\build\intermediates\res\merged\release\values-v24\values-v24.xml:3: AAPT: Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Borderless.Colored’. X:\app\node_modules\react-native-fbsdk\android\build\intermediates\res\merged\release\values-v24\values-v24.xml:4: AAPT: Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Colored’. X:\app\node_modules\react-native-fbsdk\android\build\intermediates\res\merged\release\values-v24\values-v24.xml:3: error: Error retrieving parent for item: No resource found that matches […]

为什么Android会在Gradle依赖项中将“编译”更改为“实现”配置?

如在Android Studio 3.0(canary 3.0)中所见,我们现在通过声明implementation而不是compile配置来添加depedencies 。 // Before compile ‘com.android.support:appcompat-v7:25.3.1’ // Currently implementation ‘com.android.support:appcompat-v7:25.3.1’ 我们仍然可以使用compile ,但我想了解: implementation和compile配置有什么区别? 为什么Android Gradle构建更改以将implementation用作默认值?

如何在Gradle中更改libs目录?

我想将Zbar集成到我的应用程序中,但似乎无法弄清楚如何使用新的Android Studio实现这一目标。 我已经查看了示例并已复制代码而没有任何问题。 我遇到的问题是将libs添加到我的项目中我似乎无法弄清楚如何做到这一点。 有人可以带我走过吗?

将Google Play服务升级到11.0.0版本后出错

我有一个奇怪的问题。 将Google Play服务库从版本10.2.6上传到版本11.0.0后,当我尝试编译时出现此错误: 错误:任务’:app:processDebugGoogleServices’的执行失败。 请通过更新google-services插件的版本来修复版本冲突(有关最新版本的信息, 请访问https://bintray.com/android/android-tools/com.google.gms.google-services/ )或将com.google.android.gms的版本更新为11.0.0。 我访问了错误中提到的链接,谷歌服务插件的最后一个版本似乎是3.1.0,即我正在使用的版本,我已经将所有播放服务库升级到11.0.0版本。 如何用11.0.0版本的GMS编译我的代码? 这是我的build.gradle文件(模块范围): apply plugin: ‘com.android.application’ apply plugin: ‘realm-android’ android { compileSdkVersion 25 buildToolsVersion “25.0.2” defaultConfig { applicationId “com.example.app” minSdkVersion 15 targetSdkVersion 25 versionCode 23 versionName “0.7.3.2” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” manifestPlaceholders = [onesignal_app_id : “12345678-1234-1234-1234-123456789”, // Project number pulled from dashboard, local value is ignored. onesignal_google_project_number: “REMOTE”] multiDexEnabled true […]

错误:访问后无法配置“发布”扩展

错误:访问后无法配置“发布”扩展。 我更新我的android工作室后收到此错误。 这是我的app.gradle apply plugin: ‘com.android.application’ android { compileSdkVersion 23 buildToolsVersion ‘23.0.2’ defaultConfig { minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName “1.0” vectorDrawables.useSupportLibrary = true generatedDensities = [] } aaptOptions { additionalParameters “–no-version-vectors” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), proguard-rules.pro’ } } dexOptions { preDexLibraries = false javaMaxHeapSize “4g” } } dependencies […]

在gradle中定义一个字符串,并使用特定于flavor的applicationId

我已经看到了操纵gradle构建任务的脚本,现在我想知道是否可以在`defaultConfig之外设置一个字符串,但将其视为所有风格的默认值。 基本上我有多种口味,所有口味都有一个特定的ApplicationId。 我想使用该id来设置稍后在我的java代码中使用的字符串资源。 defaultConfig { minSdkVersion 11 targetSdkVersion 21 versionCode 1 versionName “1.0” } productFlavors { one { applicationId “com.my.app.one” } two { applicationId “com.my.app.two” } } 我想设置一个像这样的字符串: resValue “string”, “authority”, applicationId + “.dataprovider” 我尝试过的: 如果我把它放在defaultConfig部分,applicationId仍然是null,因此我得到一个错误的字符串 把它放到每个风味的部分可以工作,但因为我有多种口味会产生很多代码重复 寻找替代方案。 PS我正在使用Android Studio 0.8.12。

在Android Studio中更改布局后需要清理项目

当我在XML布局文件中更改小东西时,比如TextInputEditText maxLength ,我需要清理项目以让AS拾取更改。 res文件夹的结构是: 水库 – 布局 – drawables – …… 没有更多的子文件夹。 AS 3.1.1,Gradle 4.6。 我试图在gradle中添加它: sourceSets { main.res.srcDirs = [ ‘src/main/res/anim’, ‘src/main/res/color’, ‘src/main/res/drawable’, ‘src/main/res/drawable-hdpi’, ‘src/main/res/drawable-mdpi’, ‘src/main/res/drawable-xhdpi’, ‘src/main/res/drawable-xxhdpi’, ‘src/main/res/drawable-xxxhdpi’, ‘src/main/res/menu’, ‘src/main/res/mipmap-dpi’, ‘src/main/res/mipmap-hdpi’, ‘src/main/res/mipmap-mdpi’, ‘src/main/res/mipmap-xhdpi’, ‘src/main/res/mipmap-xxhdpi’, ‘src/main/res/mipmap-xxxhdpi’, ‘src/main/res/raw’, ‘src/main/res/values’, ‘src/main/res/values-land’, ‘src/main/res/values-large’, ‘src/main/res/values-v21’, ‘src/main/res/valuesw820dp’, ‘src/main/res/xml’, ‘src/main/res/layout’, ‘src/main/res’] } 有没有办法防止每次清理项目以使更改生效? 因此,每当我对XML文件进行更改并运行应用程序时,我都应该看到我的更改但是我必须每次都清理项目并且它变得很烦人。