Articles of gradle

应用的AndroidManifest.xml中的元数据标记没有正确的值

我遇到了Robolectric我的AndroidManifest.xml出现问题的问题。 我的应用程序运行正常,但Robolectric失败了我的所有测试,甚至assertTrue(true) 。 错误是: android.view.InflateException: XML file /[blah]/build/res/all/debug/layout/activity_main.xml line #-1 (sorry, not yet implemented): Error inflating class fragment 引起的: java.lang.IllegalStateException: The meta-data tag in your app’s AndroidManifest.xml does not have the right value. Expected 4030500 but found 0. You must have the following declaration within the element: 问题是我的清单中已经有了这一行。 以下是一些相关文件: AndroidManifest.xml中: 的build.gradle: buildscript { repositories { […]

Gradle – 每个productflavor构建sass(多文件夹)

我们创建了一个带有webview的Android应用程序,该应用程序显示了assets文件夹中的本地网站。 该项目具有不同的产品风味,可生成具有不同样式和内容但具有相同代码库(本机Java和HTML / JS)的不同应用程序。 对于每种风味,我们想要定义一个不同的sass文件,其中包含特定风味的颜色和调整。 我知道我需要在gradle中创建一个构建CSS文件的任务,但我不知道从哪里开始: 如何获取特定风味的assets文件夹的url? 我可以使用特殊的gradle插件来构建sass,还是必须创建执行“sass”命令的任务? 当我使用另一个像指南针这样的gradle插件时,如何为每种风格配置正确的文件夹? 插件设置位于顶级,而不是Android插件级别。

结合androidTest的jacoco覆盖并测试

自从’com.android.tools.build:gradle:1.1.0’发布以来,我将大部分java测试代码从androidTest到test文件夹,因为JVM测试速度要快得多。 但我无法进行所有测试。 我真的需要设备测试,因为有一些ContentProvider东西。 在开始迁移之前,我已经拥有100%的代码覆盖率。 当我正在运行jacoco代码覆盖时,我获得了androidTest文件夹的40%和test文件夹的71%。 我的代码经过100%测试,但我没有报告certificate这一点。 有没有办法合并两份报告? 我find了JacocoMerge但却无法上class。 这是androidTest文件夹的输出: build/outputs/reports/coverage/debug/index.html 这里是使用此gradle任务生成的test文件夹build/reports/jacoco/generateJacocoTestReports/html/index.html输出: def coverageSourceDirs = [ ‘../library/src/main/java’ ] task generateJacocoTestReports(type: JacocoReport, dependsOn: “test”) { group = “Reporting” description = ‘Generate Jacoco Robolectric unit test coverage reports’ classDirectories = fileTree( dir: ‘../library/build/intermediates/classes/debug’, excludes: [‘**//*R.class’, ‘**//*R$*.class’, ‘***/*//*$ViewInjector*.*’, ‘**//*BuildConfig.*’, ‘**//*Manifest*.*’] ) sourceDirectories = files(coverageSourceDirs) additionalSourceDirs = files(coverageSourceDirs) executionData = […]

使用GoogleServices插件时,Gradle ArchivesBaseName被忽略

我经常使用archivesbasename来重命名我的输出apk,但是由于使用了google-services插件,它被忽略了。 有什么我可以做的让这个再次起作用。 附上我的完整build.gradle下面,感谢任何指针。 apply plugin: ‘com.android.application’ apply plugin: ‘com.google.gms.google-services’ project.archivesBaseName = “MyApp”; android { compileSdkVersion 22 buildToolsVersion “22.0.1” defaultConfig { applicationId “org.codechimp.myapp” versionCode 205 versionName “2.4” minSdkVersion 14 targetSdkVersion 22 } productFlavors { prod { } dev { versionName = android.defaultConfig.versionName + ” dev” } } signingConfigs { debug { storeFile file(“debug.keystore”) storePassword “android” keyAlias […]

如何使用新的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 […]