问题标签 [android-gradle-3.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
376 浏览

android - Android 多项目测试依赖设置与 Android Studio 3.0 中的 Android Gradle Plugin 3.0.0 中断

我正在尝试从 Android gradle 插件 2.3.3 迁移到 3.0。我设置了 2 个项目,其中 ProjectB 中的测试使用src/test/javaProjectA 中存在的测试类。我在使用 android gradle 插件 2.3.3 时使用以下设置来实现这一点 -

项目A build.gradle-

项目B build.gradle-

如您所见,我首先尝试通过使用人工配置来 Jar ProjectA 中的所有测试类,然后在 ProjectB 中使用该配置。这在使用 Android gradle pluign 2.3.3 时按预期工作。

现在,当迁移到 AGP 3.0 时,我的 ProjectAbuild.gradle保持不变,尽管我已经修改了 projectBbuild.gradle以使用testImplementation而不是testCompile像这样 -

尽管在 ProjectB 中运行使用 ProjectA 中的测试类的任何测试时,这都能成功编译,但我得到了一个ClassNotFoundExceptionfor ProjectA 测试类。此外,这只发生在我使用 Junit 运行配置在 Android Studio 中ClassNotFoundException运行测试时,通过命令行运行测试时不会发生这种情况。

我不确定我在尝试让它工作时做错了什么。所以请帮忙!

0 投票
2 回答
17532 浏览

android - 找不到参数 [目录'libs'] 的方法 api()

打开文件

这是我的毕业文件:

我正进入(状态

错误:(23, 0) 在 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象上找不到参数 [directory 'libs'] 的方法 implementation()。打开文件

0 投票
0 回答
472 浏览

android - 清单合并失败,添加 firebaseui 依赖项时出错

我的应用程序 gradle 中有以下依赖项,它们工作得很好,直到我添加了 firebase ui 依赖项。

这是我要添加的 ui 依赖项。

项目的构建显示以下错误

我应该使用哪个依赖项才能成功构建项目。

0 投票
1 回答
438 浏览

android - Android Manifest Merge 问题 - 删除 google ads gradle 依赖项不会删除其 AndroidManifest.xml 节点

我在项目中有两种产品口味 (1) 免费 (2) pro

我仅将谷歌广告库包含在免费产品风格中,如下所示

现在我想用另一个广告库替换它。我正在尝试删除此依赖项,但它并没有完全删除该库并给我一个错误,如下所示。因此它不允许我构建项目。

在此处输入图像描述

屏幕截图是来自app\build\intermediates\manifests\full\free\debug. 此外,我还没有手动将这两个活动 ( com.google.android.gms.ads.AdActivity& com.google.android.gms.ads.purchase.InAppPurchaseActivity) 添加到主 AndroidManifest.xml。

我试图从 AndroidManifest.xml 中删除这两个活动的是

  1. 清洁、建造、重建
  2. 重启 Android Studio
  3. 使缓存无效/重启 Android Studio
  4. 改变项目风格和清洁。
  5. 从 Android Studio 的“项目结构”中删除依赖项

但似乎没有任何效果。如何摆脱这些错误并构建我的项目?

0 投票
0 回答
578 浏览

android - 在 Android Gradle 插件 3.1.1 中添加测试源集已停止工作

我有一个项目分成许多模块。一个名为 ':testcore' 的模块包含一些测试使用的通用类。

项目结构如下:

为了使这些文件可用于其他模块,我将它们一一添加到其他模块的测试源集中。

这一直有效到带有 Gradle 4.1 的 Android Studio 3.0.1 但是对于 Android Studio 3.1.0 和 Gradle 4.4,这现在会导致错误:

Lint 基础结构错误原因:java.lang.reflect.InvocationTargetException

造成的

引起:java.lang.IllegalArgumentException:试图将不存在的文件添加到类路径:....java

此错误似乎是由 Android Gradle 插件 3.1.1 而不是 gradle 4.4 引起的,就像我使用 Gradle 4.4 和 Android Gradle 插件 3.0.0 它返回成功构建一样。

------------------

为了帮助诊断这一点,我创建了一个带有 Android 应用模块和单个库模块的新测试项目,并重新创建了上面显示的构建错误。

这是构建的 gradle 扫描:

https://scans.gradle.com/s/c7yagwqy45hfs

我还在 Google 问题跟踪器上添加了一个错误报告:

https://issuetracker.google.com/issues/78097961

0 投票
1 回答
375 浏览

android - 每次代码更改时都会重新生成 DataBindingInfo.java

我正在开发相当大的多模块 Android 项目,该项目使用 Data Binding、Dagger 2 和 Java 与 Kotlin 混合。

在项目“代码”文件(.java 和 .kt 文件,包括活动、自定义类等)发生最细微的变化后,构建时间会很长(最多 2 分钟)。即使我添加新行之类的更改或修改注释中的一个字符,也会发生这种情况。

我确实使用 --info 参数运行了 Gradle 脚本并得到了以下提示,它“挂起”了以下任务:

任务 ':AppName:kaptDebugKotlin' 的构建缓存键是 1a3a53e5f9b0934ab50a25c0133055f2 任务 ':AppName:kaptDebugKotlin' 的最新检查耗时 0.0 秒。它不是最新的,因为:输入属性“源”文件 /Users/username/Android/project-directory/AppName/build/generated/source/dataBinding/debug/android/databinding/layouts/DataBindingInfo.java 已更改. 输入属性“源”文件 /Users/username/Android/project-directory/AppName/src/main/java/com/package/to/my/activity/SomeActivity.java 已更改。

生成的 DataBindingInfo.java 文件仅包含一个 buildId:

每次代码发生任何变化时,buildId 哈希值都会发生变化。

该项目使用 Crashlytics,但我为调试构建禁用了它。

这种行为的原因可能是什么?

编辑:即使 Android Studio 关闭并且我正在外部编辑器中进行更改并从命令行运行构建,也会在项目中重新生成 buildId。

0 投票
0 回答
163 浏览

android - 使用 Android 插件 3.1.2 的 uploadArchives 配置解析失败

我正在尝试使用最新的 Android Gradle 插件创建 Android Library 项目,并且很难理解它给我的错误。我的设置是一个 java 模块、android 库模块和第二个 android 库模块。它们都在同一个项目中。

  • 模块 A(使用 java(不是 java-library)插件构建)
  • 模块 B(使用 android 库插件构建)
  • 模块 C(使用 android 库插件构建)

  • 模块 B 依赖于模块 A

  • 模块 C 依赖于模块 A 和模块 B

模块 C 的依赖块:

Gradle 同步良好并assemble正确执行。我正在使用 Gradle 4.6(也尝试过 4.4)和 Android Gradle Plugin 3.1.2。该问题出现在 Android Studio 和 Jenkins 中。尝试运行时,uploadArchives我收到以下错误:

0 投票
0 回答
86 浏览

android - Android / Gradle - 具有依赖项的工件(aar)

我已经将一个具有匕首依赖性的工件(aar)部署到我的本地工件。当我在项目中使用工件时,由于以下异常,它在运行时崩溃。

这是我的依赖声明:

我想解决方法是,将 dagger 依赖项添加到项目中。但是,我不想要这个。

0 投票
0 回答
78 浏览

android - 如何在android gradle plugin 3.+中修改apk名称使用java

我们知道Android Gradle Plugin 3.0修改了Api https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration,我们需要修改apk名称,代码如下build.gradle

我们团队用java写了一个gradle插件,因为autocomplete和smart hints,但是我在升级gradle插件的Android Gradle插件到3.1.2的时候出现了问题,而且我不知道如何将上面的代码翻译成java,我试过了以下方法:

但这似乎不起作用。有谁知道如何解决它?

0 投票
0 回答
483 浏览

android - Android模拟器等待启动并安装apk

我尝试开发脚本来启动armeabi-v7a模拟器并执行gradle connectedAndroidTest任务以运行针对我的应用程序的 android 设备测试。

我编写了脚本,成功检查了所需的模拟器目标,如果错过了下载并安装它,然后启动模拟器。所有这些点都运作良好。但是在我启动模拟器后,我必须等到它完全启动。

我想我的问题是我无法正确检测到模拟器已完全完成他的启动操作并且也准备好安装应用程序。

根据网上的建议,我们可以使用以下两个系统属性来检测完全启动,它是

init.svc.bootanim- 开机动画 sys.boot_completed状态 - 开机操作的系统状态

我们可以通过调用来修改它们

adb -e shell getprop init.svc.bootanimadb -e shell getprop init.svc.bootanim相应地

我发现它sys.boot_completed比 更可靠init.svc.bootanim,但无论如何我都在等待它们。但这无济于事,因为如果在等待设备启动后我connectedAndroidTest在运行大约 4 分钟后启动任务,它会失败并出现下一个异常

但是,如果我等待一段时间,它就会完成。我猜这意味着我在安装测试应用程序之前不会等待。

在等待模拟器启动时,您有什么想法可以依靠吗?