使用 gradle 构建 android 项目失败
Posted
技术标签:
【中文标题】使用 gradle 构建 android 项目失败【英文标题】:Failed to build android project using gradle 【发布时间】:2012-10-19 23:41:22 【问题描述】:我在使用 Gradle 构建简单的 android 项目时遇到问题。我的构建文件如下:
buildscript
repositories
mavenCentral()
// To use a development snapshot version of the plugin, add the
// Sonatype Snapshots repository.
maven
url "https://oss.sonatype.org/content/repositories/snapshots"
dependencies
classpath 'org.gradle.api.plugins:gradle-android-plugin:1.2.1'
apply plugin: 'android'
repositories
mavenCentral()
// Sets the package version
version = "1.0.0"
// Signing configuration, valid for all builds (1)
androidSignAndAlign
keyStore = "path/to/my/keystore"
keyAlias = "my-key-alias"
keyStorePassword = "mystorepass"
keyAliasPassword = "myaliaspass"
// Configure the filtering of resources with properties from the Gradle's project scope (2)
processResources
expand (project.properties)
// Configure a dedicated debug build (3)
task configureDebug <<
jar.classifier = "debug"
// Configure a dedicated release build (4)
task configureRelease <<
proguard.enabled = true
我得到的错误是这样的:
11:08:24.812 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
11:08:24.822 [ERROR] [org.gradle.BuildExceptionReporter]
11:08:24.829 [ERROR] [org.gradle.BuildExceptionReporter] * Where:
11:08:24.834 [ERROR] [org.gradle.BuildExceptionReporter] Build file 'C:\Users\Work\AndroidProjects\RssUnified\build.gradle' line: 114
11:08:24.840 [ERROR] [org.gradle.BuildExceptionReporter]
11:08:24.845 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
11:08:24.850 [ERROR] [org.gradle.BuildExceptionReporter] A problem occurred evaluating root project 'RssUnified'.
11:08:24.855 [ERROR] [org.gradle.BuildExceptionReporter] > For input string: "21 rc11"
11:08:24.864 [ERROR] [org.gradle.BuildExceptionReporter]
11:08:24.870 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
11:08:24.875 [ERROR] [org.gradle.BuildExceptionReporter] org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'RssUnified'.
11:08:24.880 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFac
tory.java:54)
11:08:24.885 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.jav
a:127)
使用 gradle 1.2
编辑:这是我的布局 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_ >
</RelativeLayout>
这里是活动
public class RssListActivity extends Activity
/*
* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState)
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.list_activity_layout);
项目结构如下:
├───.gradle
│ └───1.2
│ └───taskArtifacts
├───assets
├───bin
│ ├───classes
│ │ └───com
│ │ ├───jr
│ │ │ ├───screenLogic
│ │ │ └───screens
│ │ └───richy
│ │ └───rssunified
│ └───res
├───build
│ └───gen
│ └───com
│ └───richy
│ └───rssunified
├───gen
│ └───com
│ └───richy
│ └───rssunified
├───res
│ ├───drawable-hdpi
│ ├───drawable-ldpi
│ ├───drawable-mdpi
│ ├───drawable-xhdpi
│ ├───layout
│ ├───values
│ ├───values-v11
│ └───values-v14
└───src
└───com
└───jr
├───screenLogic
└───screens
这是项目根文件夹中的内容
AndroidManifest.xml assets bin build build.gradle gen gradle.properties ic_launcher-web.png local.properties project.properties res src
最后是 android 清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.richy.rssunified"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher"
android:theme="@style/AppTheme">
</application>
</manifest>
Local.properties
sdk.dir = C:/Program Files (x86)/Android/android-sdk
project.properties
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=$sdk.dir/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
target=android-15
编辑:
我已经恢复到旧版本的 adt/sdk 插件并设法解决了上述问题,但是在我这样做之后,我现在收到以下错误:
15:24:24.558 [LIFECYCLE] [org.gradle.TaskExecutionLogger] :androidProcessResources FAILED
15:24:24.571 [ERROR] [org.gradle.BuildExceptionReporter]
15:24:24.575 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
15:24:24.582 [ERROR] [org.gradle.BuildExceptionReporter]
15:24:24.588 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
15:24:24.597 [ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':androidProcessResources'.
15:24:24.602 [ERROR] [org.gradle.BuildExceptionReporter] > Unexpected internal error near index 1
15:24:24.607 [ERROR] [org.gradle.BuildExceptionReporter] \
15:24:24.613 [ERROR] [org.gradle.BuildExceptionReporter] ^
15:24:24.621 [ERROR] [org.gradle.BuildExceptionReporter]
15:24:24.626 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is:
15:24:24.631 [ERROR] [org.gradle.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':androidProcessResources'.
15:24:24.636 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecu
ter.java:68)
【问题讨论】:
如果您接受过去几天提出的其他问题的答案,人们会更愿意帮助您。 我有,但没有什么不同,我认为这个问题不是一个容易回答的问题。此外,当人们添加 cmets 而不是答案时,我无法接受它们。它必须作为答案发布。我已经从人们那里得到答案,只是发表评论 公平地说,我的一些问题我没有找到有效的答案,所以我很难接受一个,但现在我会尝试接受更多。我将在此处接受适用于我遇到的问题的有效答案 查找我的 gradle 版本:在 Android Studio 中,转到文件 > 项目结构。然后选择左侧的“项目”选项卡。如果您使用的是 Gradle 包装器,那么您的项目将有一个 gradle/wrapper/gradle-wrapper.properties 文件夹。这决定了您使用的是哪个版本的 Gradle。 【参考方案1】:如中所述:http://tools.android.com/tech-docs/new-build-system/using-the-new-build-system#TOC-Working-with-and-Customizing-SourceSets
默认源集位置在
src/<sourceset>
下
您的sourceset
名称是main
,所以位置是src/main
另外,manifest
属性被描述:
清单,输入AndroidSourceFile,默认位置
src/<sourceset>/AndroidManifest.xml
我猜是清单声明:
manifest
srcFile 'AndroidManifest.xml'
与默认相同并以位置结束:
src/main/AndroidManifest.xml
在异常消息中列出。
我认为这就是 gradle android 插件的工作原理。 如果我错了,请纠正我,我不知道 Gradle。
编辑
好的,现在我知道出了什么问题。您的构建脚本混合了来自两个不同插件的设置。
变化:
classpath 'com.android.tools.build:gradle:0.1'
到
classpath 'org.gradle.api.plugins:gradle-android-plugin:1.2.1'
删除android
块,但保留正文。
删除带有主体的sourceSets
块。
那应该可以了,我这次测试了一下。
编辑 2
这是 Windows 相关的错误,已于 6 天前修复:
https://github.com/jvoegele/gradle-android-plugin/pull/89
你可以做的是下载最新的插件版本
git clone git://github.com/jvoegele/gradle-android-plugin.git
并将其安装在本地 maven 存储库中:
gradle install
然后将mavenLocal()
添加到存储库:
repositories
mavenCentral()
mavenLocal()
并将插件版本更改为快照:
dependencies
classpath 'org.gradle.api.plugins:gradle-android-plugin:1.2.2-SNAPSHOT'
【讨论】:
看起来像这样。但是,如果我将目录和清单移到那里,我将无法再通过 eclipse 在本地构建它,因为它抱怨错误的 src 文件、res 文件和清单文件,因为移动 src/main 下的所有内容会拆除默认的 android 结构.我不能指定源集位置吗? 好酷。我不再收到该错误,但我现在收到此错误:* 出了什么问题:评估根项目“RssUnified”时出现问题。 > 对于输入字符串:“21 rc11”让我更新我的问题 这可能是不同的问题。我不知道RssUnified\build.gradle' line: 114
中有什么。它似乎与最新的 ADT 相关。
第 114 行是“应用插件:'android'”
这个构建脚本对我有用。我有 ADT 20.0.3 - 最新稳定版本,而不是 ADT 21 候选版本 11。尝试删除此包并使用 SDK 管理器安装最新版本。【参考方案2】:
在我看来,就像任务 androidProcessResources
所指示的那样,您正试图错误地转义您的一个 Android 资源文件中的反斜杠。请检查您的资源文件或将它们发布在此处,以便我们查看它们。
【讨论】:
您好。我的 res 布局文件包含一个 xml 文件,它只创建了一个 relativeLayout。我基本上创建了一个全新的项目并创建了一个具有简单布局的空白 Activy,只是为了看看我是否可以使用 gradle 构建和创建 apk 文件。检查我为这些文件编辑的帖子 您是否已将项目上传到存储库以便我自己试用? 在我的本地机器上没有 嗨,我已经更新了我的代码并尝试并调整了一些东西,关于“/”的原始错误消息消失了。我知道有一个不同的构建错误说明如何定位 AndroidManifest 正如错误消息所述,我猜该文件需要位于此位置:C:\Users\richardsj\Work\AndroidProjects\RssUnified\src\main\AndroidManifest.xml
。以上是关于使用 gradle 构建 android 项目失败的主要内容,如果未能解决你的问题,请参考以下文章
使用 Android Gradle Plugin v. 3.5.2 构建 Android 项目时,我的构建失败
Android Studio 和 Gradle - 构建失败
React-native 项目构建失败:找不到 com.android.tools.lint:lint-gradle:26.1.0
Android 项目的 Gradle assembleDebug 失败并出现 aapt 错误