Articles of gradle

如何使用新的Gradle Build System在Android上进行集成测试?

我们的Android应用程序需要自动化测试,我们的团队正在使用Robotium为我们处理这个问题。 对于unit testing来说这不是问题,但我们也在编写一组端到端集成测试,以便不仅通过后端服务器来运行客户端。 我有一些测试可以做到这一点,但是如果可能的话,我想将它们与unit testing分开,以便我们的持续集成构建不需要运行实时服务器才能完成。 我们正在使用shiny的新Gradle构建系统。 我想知道我是否可以做一些像测试的风格或子项目,这取决于父APK以使它去。 我尝试用一​​个单独的项目完成这项工作,使用Robotium指令来测试无源调试APK,但它没有用。 也许是因为我在真正的硬件而不是模拟器。 即使已经安装了硬件加速,我的模拟器也运气不佳。 任何建议,或者我应该只是屏住呼吸并使用我的构建需要集成服务器在构建发生时可用?

“此应用程序包含试图绕过android的安全保护的代码”的原因

我已经在一个非常温和的Android应用程序上工作了几个月了,当我尝试从IntelliJ重新安装它时,我突然开始在我的设备上收到此消息。 我的问题是,什么样的东西会导致Android操作系统显示此消息? 如果我要发布这个应用程序,我当然不希望我的用户在安装之前必须看到这个。

Android Studio 2.2更新:使用新的Gradle Plugin 2.2.0生成的对齐APK(zipAlign)

在将Android Studio更新到2.2版之后,我还获得了Gradle插件的更新(它是2.1.3): … classpath ‘com.android.tools.build:gradle:2.2.0’ … 我看到未对齐的变体APK文件,但不再生成其他变体。 我尝试启用zip对齐: buildTypes { release { minifyEnabled false zipAlignEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ signingConfig signingConfigs.release } debug { applicationIdSuffix ‘.debug’ } } 但没有变化。 有任何想法吗? 我“解决”了回头 classpath ‘com.android.tools.build:gradle:2.1.3’ 在项目级build.gradle 。 编辑(20160922): 感谢Fayder Florez的回应。 这是正确的,构建环境现在只生成一个apk( https://code.google.com/p/android/issues/detail?id=212591 )。 但是使用代码(使用VERSION CODE和VERSION NAME重命名de输出文件名): android.applicationVariants.all { variant -> variant.outputs.each { output -> def padVersionCode = […]

在Android工作室中减少Gradle同步时间

我正在使用带有16GB内存的mac,ssd hdd并且每次构建,清理或打开项目时仍然需要15分钟+ Gradle同步,是否有任何Android Studio优化可以减少这个时间。

错误:无法使用哈希字符串’android-21’find目标

我想将我的compileSdkVersion从23更改为21.所以我在build.gradle中进行了以下更改,但是我收到了以下错误。如何解决此问题? 无法使用哈希字符串’android-21’find目标 apply plugin: ‘com.android.application’ android { compileSdkVersion 21 buildToolsVersion “21.1.2” defaultConfig { applicationId “com.example.shalabh.fly” minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName “1.0” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } } dependencies { compile fileTree(include: [‘*.jar’], dir: ‘libs’) compile ‘com.android.support:appcompat-v7:23.0.1’ compile files(‘libs/httpclient-4.1-beta1.jar’) }

如何使用Lint Option StopShip使Grade发布版本失败?

我已经阅读了很多关于StopShip Android Lint Check和Gradle支持的内容 http://tools.android.com/tips/lint-checks http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Lint-support http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.LintOptions.html#com.android.build.gradle.internal.dsl.LintOptions:checkReleaseBuilds Android lint启用gradle检查 lint任务上的gradle构建失败 http://developer.android.com/tools/help/lint.html http://developer.android.com/tools/debugging/improving-w-lint.html 我想使用SO中的一些已经提到的,而不是TODO或FIXME注释,使用它来确保用于开发/调试/测试的代码块不能达到生产。 为此,我想做两件事: – 启用StopShip检查,因为它默认是禁用 – 将严重性从警告(默认)更改为错误 (假设我们在gradle配置上使用abortOnError true )。 我没能做到这一点! 无论我尝试什么,如果我在我的代码中添加// STOPSHIP注释,android构建都不会失败。 这很奇怪,因为在textEditor中它突出显示为错误,如果我运行Lint检查(Analyze> Inspect Code …),它将被列为问题之一。 这是我在build.gradle尝试过的build.gradle lintOptions { checkReleaseBuilds true // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when […]

包含espresso-contrib:2.0时的java.lang.IncompatibleClassChangeError

我有一个android.support.v7.widget.RecyclerView的子类。 当我使用应用程序和测试时,它工作正常。 但是,当我在gradle app文件中包含espresso-contrib时,当我尝试运行相同的测试时,我得到一个例外。 该应用仍然有效。 在arm模拟器和设备上的sdk版本21和22中都会出现同样的问题。 使用x86模拟器,它会发生段错误。 摇篮 androidTestCompile ‘com.android.support.test.espresso:espresso-contrib:2.0’ 例外 java.lang.IncompatibleClassChangeError: xxx.DashboardActivity$1 at dalvik.system.DexFile.defineClassNative(Native Method) at dalvik.system.DexFile.defineClass(DexFile.java:226) at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219) at dalvik.system.DexPathList.findClass(DexPathList.java:321) at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at xxx.DashboardActivity.onCreate(DashboardActivity.java:54) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.support.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:346) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) […]

在使用名称中的时间戳时,Android Studio无法在构建后启动应用程序

我在使用gradle和Android Studio时出现问题,只有在Android Studio中构建时才会出现(BuildServer和Commandline工作正常) applicationVariants.all { variant -> def file = variant.outputFile variant.outputFile = new File(file.parent, file.name.replace(“app-“, getDate() + “_myapp_” + getGitCommit() +”_”)); } def getDate() { def dateNow = new Date() def formattedDate = dateNow.format(‘yyyy-MM-dd_HH-mm-ss’) return formattedDate } 构建工作,但当AS想要将apk复制到设备时,它会抛出一个Local path doesn’t exist. 错误。 问题是生成的文件如下所示: 2014-03-17_16-17-41_myapp__debug-unaligned.apk 但AS寻找: 2014-03-17_16-17-18_myapp__debug-unaligned.apk 这是由AS特定的构建步骤以某种方式生成的,导致重新计算日期。 我尝试用构建日期的外部属性修复它,在整个构建过程中应保持相同,但可能是由于我缺乏gradle技能,这没有帮助。 也许有人有一个解决方法让我在Android Studio中使我的构建工作。

com.android.builder.dexing.DexArchiveMergerException:无法合并dex – Android Studio 3.0稳定

我做了: 在“设置” – >“Android SDK” – >“SDK工具”中,检查并安装了Google Play服务v.46 删除了文件夹/.gradle “清洁工程” “重建项目 错误是: Error:Execution failed for task ‘:app:transformDexArchiveWithExternalLibsDexMergerForDebug’. > java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 项目build.gradle buildscript { repositories { jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.0’ classpath ‘com.google.gms:google-services:3.1.0’ } } allprojects { repositories { jcenter() google() } } task clean(type: Delete) { delete rootProject.buildDir } […]

Android工作室2.3刷新gradle项目永远

我将我的android工作室更新到新版本2.3,并被要求转换我的项目以匹配我所做的新格式。 我被要求更新gradle版本,我做了。 现在一个永恒之后,它仍然让我的项目更加清爽。 我重新启动了几次,我有活跃的互联网连接。 有什么建议么