Articles of gradle

Gradle的构build速度非常慢

现在build造时间大概在2-4分钟左右。 我正在使用通过Gradle提供的大约11个库。 我有以下设置: buildTypes { debug { multiDexEnabled = true applicationIdSuffix ".debug" minifyEnabled false proguardFile 'proguard-rules.pro' } } dexOptions { javaMaxHeapSize "4096M" preDexLibraries false jumboMode = true incremental = true } Gradle: Offline mode 我在gradle.properties中有以下设置org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 在全球属性我有: org.gradle.daemon=true org.gradle.parallel=true org.gradle.configureondemand=true 我已经浏览了Google / Stackoverflow上的每篇文章。 至less有什么办法可以把进程加速到1分钟以下? 更新2015年8月6日 这些确实有助于加快我的速度。 gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip build.gradle项目依赖关系 classpath 'com.android.tools.build:gradle:1.3.0' 更新2015年8月9日 我发现,原来使用Protoc对于Android来说非常慢。 […]

Android Studio 1.2.2,构build成功,但没有apk在构build/输出?

我几天前开始使用Android Studio 1.2.2来制作一些简单的应用程序。 我做了第一个,并能够在app> build>输出没有任何问题.apk。 但是从昨天开始,我无法在输出文件夹中获得任何.apk,尽pipe构build成功。 也许我做了一个无意的错误? 我看到.gradle和输出目录被排除在外(文件夹是红色的),我有问题,因为它是为什么被排除在外,将有什么操纵来解决这个问题? 这是一个截图 我search和阅读了一些线程,但没有设法find解决我的问题,我想这一定是简单的,但作为一个noob我仍然不能找出一些东西:) 非常感谢你的帮助, 亚伦

用gradle从javadoc中排除R.java的正确方法

我正在用这个gradle任务为我的Android项目生成javadoc: android.applicationVariants.all { variant -> task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) { description "Generates Javadoc for $variant.name." source = variant.javaCompile.source classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath()) exclude '**/BuildConfig.java' exclude '**/R.java' options.links("http://docs.oracle.com/javase/7/docs/api/"); options.linksOffline("http://d.android.com/reference","${android.sdkDirectory}/docs/reference"); options { failOnError false } destinationDir = file("${project.projectDir}/javadoc") } } 它排除R.java ,所以我没有得到R.html在输出目录。 但是,我得到非常恼人的错误cannot find symbol class R在生成文档的过程中,我通常的java类,在行import com.mypackagename.R 。 我使用像R.string.string_res常见的Android的东西,所以我不能删除此导入。 有没有适当的方法来包含符号R索引,但不包括它到javadoc,或者,至less,只是为了抑制这个错误?

如何在Android模块上运行unit testing?

我有一个Android项目,有多个库模块,我试图testing包含所有模块的特定包。 我试过这个命令: ./gradlew -Dtest.single=com.moduleone* testProductionDebug 它不起作用:它不执行这个模块内部的testing,而是执行主项目包类中的所有unit testing。 我如何testing一个模块?

在程序引用的proguard之后使用NoSuchMethodError崩溃

compile&proguard之前的源代码: public class IntentSession extends BaseIntentSession { @Override public void onResume() { super.onResume(); mExecutor.exec(getIntent(), this::finish); } } compile&proguard之后的反编译代码:(Decompiled with CFR 0_118) public class a extends superA { public void e() { super.e(); this.ca(this.j(), ba((a)this)); // the problematic code here } } 现在是compile&proguard之后的关键代码, b类的反编译代码: final class b implements ca { private aa; b (a a1) { […]

无法用gradle 4.1build立项目:“unknown element * found”

更新到Gradle 4.1之后,我无法构build我的项目(所有工作正常与以前的版本)。 基本上,它不能识别AndroidManifest标签,并在/build/intermediates/manifests/full/debug生成的清单中给我错误。 这是构build日志: /home/paolorotolo/dev/exp/***/build/intermediates/manifests/full/debug/AndroidManifest.xml Error:(30) unknown element <action> found Error:(32) unknown element <category> found Error:(33) unknown element <category> found Error:/home/paolorotolo/dev/exp/core/***/build/intermediates/manifests/full/debug/AndroidManifest.xml:30 unknown element <action> found Error:/home/paolorotolo/dev/exp/core/***/build/intermediates/manifests/full/debug/AndroidManifest.xml:33 unknown element <category> found Error:java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.AaptException: AAPT2 link failed: Error:com.android.builder.internal.aapt.AaptException: AAPT2 link failed: Error:Execution failed for task ':***:processDebugResources'. > Failed to execute aapt Information:BUILD FAILED in 6s

gradle connectedAndroidTest返回“没有findtesting”,但是adb shell可以findtesting

我们有一个图书馆项目和多个应用程序依赖于它。 unit testing在图书馆项目中。 我们可以从Android Studio中的依赖项目运行testing,但是 ./gradlew :[DependentProject]:connectedAndroidTest 总是返回“未findtesting,无所事事”。 通过观察,我发现在Android Studio中,似乎它只执行gradle任务: :[DependentProject]:assembleDebug, :[DependentProject]assembleDebugTest 然后使用adb来安装目标和testingapk,而adb shell则是运行testing的工具。 由于connectedAndroidTest依赖于这两个任务,所以我安装了它生成的target和test apks,并手动调用了instrument命令,testing开始了。 adb shell am instrument -w com.package.test/android.test.InstrumentationTestRunner 然后问题来了,在哪里connectedAndroidTest寻找testing,为什么它不能findtesting,而ADB仪器可以? 如何解决这个问题?

将Android Studio项目从git导入Android Studio(Gradle)

我已经读了几个小时了,每个人似乎都有不同的方法,或者教程已经过时了。 Android Studio .gitignore只包含app目录,这是故意的。 我不知道什么原因。 当试图克隆git仓库时,Android Studio不知道如何处理它。 Android Studio中一个非常恼人的缺陷。 Android Studio项目的.gitignore应该是什么? 我有一个远程git仓库,其中包含以下forms的项目: 你可以看到git仓库包含/app目录。 然后我尝试通过Check out project from Version Control来导入它,然后selectgit : 一切正常, Test成功,然后我点击Clone : 下一部分我按Yes因为git并没有克隆整个项目,而只是基本的源文件: 这是我丢失的部分,我猜我是通过Gradle创build项目,所以我selectGradle并按Next : 我在这里应该做什么,网上显然是gradle文件,但我应该使用哪一个: 从现有的来源创build项目 如果我selectCreate project from existing sources我得到以下问题: 在这个结果中,我正在等待app目录: 文件结构(正如你可以看到fela缺less大量的文件,这是当我从现有的来源select创build项目,MyApplication是一个在Android Studio中创build的应用程序的示例):

Gradle命令行:未能find目标android-22

我试图build立一个项目,我从一个Git仓库拉,一切似乎安装正确,但是当我运行Gradle时,我得到以下消息: FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ':app'. > failed to find target android-22 : /home/rvogel/android-sdk-linux/tools * Try: Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output. BUILD FAILED Total time: 7.562 secs 然后我运行了android报告,看看我安装了哪些目标: rvogel: […]

如何使用Gradle脚本自动增加和释放在Android Studio中签名的apk

我试图自动更新Android Manifest中的versionName和VersionCode参数,并在输出文件名中使用它们而不是“app-release.apk”。 从这个站点我添加这个代码在我的build.gradle文件中: import java.util.regex.Pattern import com.android.builder.core.DefaultManifestParser def mVersionCode def mNextVersionName def newName task ('increaseVersionCode') << { def manifestFile = file("src/main/AndroidManifest.xml") def pattern = Pattern.compile("versionCode=\"(\\d+)\"") def manifestText = manifestFile.getText() def matcher = pattern.matcher(manifestText) matcher.find() mVersionCode = Integer.parseInt(matcher.group(1)) def manifestContent = matcher.replaceAll("versionCode=\"" + ++mVersionCode + "\"") manifestFile.write(manifestContent) } task ('incrementVersionName') << { def manifestFile = file("src/main/AndroidManifest.xml") […]