Articles of android gradle

在Android上使用Travis CI

我一直在寻找适用于Android的Travis CI文档 ,因此我可以学习如何开始在我的Android库中使用Travis。 但是,我不太了解文档中说的很多内容…… 到目前为止,我理解的是: language: android # this means the project will be built in an Android environment android: components: – tools # will be built with latest version of Android SDK tools – platform-tools # ” – build-tools-23.0.1 # build tools version of my project – android-23 # Android SDK version of my […]

配置后无法创建变体’android-lint’

我正在将我的项目的Gradle插件从2.1.2更新到3.1.0但是gradle在构建时开始抛出错误: 在配置’:app:debugRuntimeElements’之后,无法创建变体’android-lint’ 项目级别gradle: // Top-level build file buildscript { repositories { jcenter() mavenCentral() maven { url ‘https://maven.fabric.io/public’ } maven { url ‘https://maven.google.com/’ name ‘Google’ } google() } dependencies { classpath ‘com.android.tools.build:gradle:3.1.1’ classpath ‘org.ajoberstar:gradle-git:0.6.3’ //noinspection GradleDynamicVersion classpath ‘io.fabric.tools:gradle:1.+’ classpath ‘me.tatarka:gradle-retrolambda:3.2.5’ classpath ‘com.google.gms:google-services:3.0.0’ } } // Used to disable preDex, will speed up clean build but slow […]

使用gradle在模拟器中测试Android应用程序

好的,我想使用gradle在模拟器中运行我的测试。 gradle有两个允许我运行测试的目标: connectedCheck deviceCheck 如果我理解正确,我们应该使用deviceCheck来测试模拟器中的东西,但是当我运行它时,不运行任何测试。 connectedCheck也无法正常工作,因为它无法find设备(仿真器不会像我的手机那样出现在Android Studio中)。 我想要的是(理想情况下): 运行我的gradle脚本 它启动了一个模拟器 它在该模拟器上运行测试 它拒绝了模拟器 我还希望有一个无法启动或关闭模拟器的目标,但如果一个启动它将使用一个。 可以做任何这些事情吗? 我无法在任何地方find有关如何配置gradle android插件的文档。

我们如何将androidTest指向同类Eclipse风格的项目?

我正在帮助NetCipher上的Guardian项目。 由于遗留原因,他们希望保留现有的基于Eclipse的项目结构。 但是,他们没有在库的tests/子目录中进行tests/ ,而是采用了对等项目模型。 因此,在repo根目录下, libnetcipher/是库, netciphertest/是仪器测试。 与libnetcipher/本身不同,从未为Gradle构建设置了测试测试。 所以,我正在向libnetcipher/build.gradle文件添加内容, libnetcipher/build.gradle将libnetcipher/build.gradle指向netciphertest/目录,而不是它的正常位置。 这有效: androidTest { manifest.srcFile ‘../netciphertest/AndroidManifest.xml’ java.srcDirs = [‘../netciphertest/src’] resources.srcDirs = [‘../netciphertest/src’] aidl.srcDirs = [‘../netciphertest/src’] renderscript.srcDirs = [‘../netciphertest/src’] res.srcDirs = [‘../netciphertest/res’] assets.srcDirs = [‘../netciphertest/assets’] } 但是,重复的../netciphertest位是icky。 当然,我可以将其定义为最小化重复的常量。 我想弄清楚是否有更好的方法解决整个问题。 例如,这不起作用: androidTest.setRoot(‘../netciphertest’) androidTest { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] resources.srcDirs = [‘src’] aidl.srcDirs = [‘src’] renderscript.srcDirs = [‘src’] […]

当禁用“即时运行”时,Gradle构建失败并显示“无法读取路径”

我的环境: Android Studio 2.1.2 Android Gradle Plugin v2.1.2 Mac OSX v10.11.5 到目前为止,我在调用“Build => clean Project”并运行我的项目时关闭了Instant Run。 我关闭Instant Run的原因是因为这个和这个问题。 但是,最近,每次我尝试清理项目时,我都会遇到这个问题: Error:Could not read path /build/intermediates/classes/release/com//R$layout.class’. 有趣的是,它找不到的特定文件路径似乎是随机的。 例如,如果我调用Gradle sync然后再次清理,它将失败,并显示以下错误: Error:Could not read path /build/intermediates/classes/release/com/$ProductCategoryAdapter$1.class’.` 重现步骤: Preferences => Build,Exec,Deploy => Instant Run 取消选中“启用即时运行…”,“重新启动活动……”,“显示即时运行….” 点击“应用”,然后点击“确定”,然后点击AStudio中的gradle sync图标进行Gradle Sync “Build => clean Project” 解决方法 当前的解决方法是重新启用Instant Run。 但是,这也将导致关闭它的原因。 问题 1)有没有其他人遇到过这个问题? 2)是否有其他可能的解决方法,甚至更好的解决方案?

Android Studio 2.2原生开发迁移问题

在切换到AS 2.2之前,我有以下结构来实现我的C app/src/main/jni/Android.mk app/src/main/jni/Application.mk app/src/main/jni/headers/* app/src/main/jni/cfiles*.cc 在这种情况下一切都很好。 但是,升级到AS 2.2后,我无法构建任何apk并始终收到以下错误: Execution failed for task’:app:transformNative_libsWithStripDebugSymbolForDebug java.lang.NullPointerException (no error message) 有人知道为什么吗? 我似乎无法find解决方法。

无法为’dialog’原因创建组件:java.awt.HeadlessException

将gradle更新到版本3.0.0-beta3后,当我尝试显示一个对话框以询问密钥的密码时出现此错误。 我试图添加System.setProperty(‘java.awt.headless’, ‘false’)但它没有用,我发现谷歌上没有什么新东西…. 错误:(20,1)无法为’dialog’原因创建组件:java.awt.HeadlessException java.awt.HeadlessException(无错误消息) import groovy.swing.SwingBuilder gradle.taskGraph.whenReady { taskGraph -> def storePassword = ” def keyPassword = ” if (System.console() == null) { new SwingBuilder().edt { dialog(modal: true, title: ‘Enter password’, alwaysOnTop: true, resizable: false, locationRelativeTo: null, pack: true, show: true) { vbox { label(text: “Please enter store passphrase:”) def input1 = passwordField() label(text: […]

为什么当前版本的Gradle插件不支持按需配置?

使用Gradle 4.6或更高版本时,Android Gradle插件的3.1.2版不支持按需配置。 gradle在使用包含大量模块的多模块android项目时,按需配置非常有用,以避免不必要的配置。 我找不到官方发行说明/文档,解释了最新的android插件不支持按需配置的原因。 有没有人更好地理解为什么它不起作用,也许未来的计划是什么? (例如,这只是一个临时错误?)是否有关于此更改的官方文档?

如何降级android studio gradle中的proguard版本?

我正在尝试使用scala和android studio构建一个Android应用程序。 编译在proguard失败,但有exception: Error:java.lang.ArrayIndexOutOfBoundsException: 4 at proguard.classfile.editor.InterfaceDeleter.visitSignatureAttribute(InterfaceDeleter.java:162) at proguard.classfile.attribute.SignatureAttribute.accept(SignatureAttribute.java:97) 我发现在另一个地方( http://sourceforge.net/p/proguard/bugs/549/ )这个问题是由scala中的一个错误引起的,但它只发生在proguard 5.1而不是proguard 5.0中。 现在我的问题是:如何设置android studio以便它将使用proguard 5.0?

Android库JAR可以依赖Android库AAR吗?

我有一个Android库项目FooLib 。 FooLib引用了像Android Context的东西,但不需要任何资源文件( res/东西)所以我目前正在将它打包为JAR供我的应用程序使用。 我现在想让FooLib依赖于BarLib ,但BarLib 确实使用了资源,因此我无法将BarLib为JAR。 相反,它被打包为AAR。 我是否有可能让FooLib依赖BarLib但继续将FooLib为JAR? 或者,在FooLib中具有AAR依赖性FooLib迫使我将其作为AAR?