Articles of gradle

获取Android gradle插件和checkstyle协同工作/命令行用法

我正在评估新的基于gradle的构建系统重现我们当前基于ant的构建过程的能力,并且作为一个初学者,我无法使用android gradle插件运行checkstyle。 环境: gradle 1.6在标准java项目上正常运行(包括checkstyle检查目标) 最新的Android SDK(带有平台工具和构建工具的22.0.1) 没有日食,没有安卓工作室,只有我可爱的终端 症状: 目标项目是https://github.com/nibua-r/LigoTextDemo ,我成功使用gradle构建它,但如果我天真地添加apply plugin: checkstyle到我的build.gradle : buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.4.2’ } } apply plugin: ‘android’ apply plugin: ‘checkstyle’ android { buildToolsVersion ’17’ compileSdkVersion 15 testBuildType ‘debug’ defaultConfig { versionCode = 1 versionName = ‘1.0’ minSdkVersion 12 targetSdkVersion 15 } buildTypes { […]

错误:找不到fabric.aar(io.fabric.sdk.android:fabric:1.3.17)

它在我没有改变任何东西之前工作,但今天我得到了这个错误,这里是我的gradle buildscript { repositories { mavenCentral() maven { url ‘https://maven.fabric.io/public’ } jcenter() } dependencies { classpath ‘io.fabric.tools:gradle:1.+’ }}

从命令行使用Gradle构建时“程序包R不存在”错误

我正在尝试从命令行使用Gradle构建一个Android项目,但是当我想要更改目录结构时发现了一个问题。 目前是这样的: . └── main ├── AndroidManifest.xml ├── ic_launcher-web.png ├── java │ └── com │ └── myproject │ └── MainActivity.java └── res ├── … ├── layout │ ├── activity_main.xml │ └── fragment_main.xml ├── … … 然后我执行: ./gradlew clean build 结束于: BUILD SUCCESSFUL 好。 一切都很好。 但现在我想创建一个新目录,所以: 我创建一个ui目录并在那里移动MainActivity.java : . └── main ├── AndroidManifest.xml ├── ic_launcher-web.png ├── […]

在Gradle中执行shell脚本

我有一个gradle构建设置,在其开头我想在一个准备我的环境的子目录中执行一个shellcript。 task build << { } task preBuild << { println 'do prebuild stuff:' } task myPrebuildTask(type: Exec) { workingDir "$projectDir/mySubDir" commandLine './myScript.sh' } build.dependsOn preBuild preBuild.dependsOn myPrebuildTask 但是,当我通过调用gradle myPrebuildTask或通过简单地构建项目来执行任务时,会发生以下错误: > A problem occurred starting process ‘command ‘./myScript.sh” 不幸的是,这就是我得到的。 我也试过以下 – 同样的错误。 commandLine ‘sh mySubDir/myScript.sh’ 我在Windows上使用Gradle 1.10(Android需要),在Cygwin shell中。 有任何想法吗?

如何将Google Play服务修订与安装版本相匹配?

Android SDK Manager今天早上通知我有一个新的Google Play Services版本要下载:版本18.那么如何在build.gradle文件中find相应的长版本号呢? 我的所有测试设备都运行5.0.84版本,所以我尝试更新 compile ‘com.google.android.gms:play-services:4.4.52’ 至 compile ‘com.google.android.gms:play-services:5.0.84′ 但是这导致了一个错误: Gradle’MyApp’项目刷新失败:找不到com.google.android.gms:play-services:5.0.84。 要求: {我的应用} Gradle设置 我正在运行Android Studio 0.5.2并为API19构建(我尚未升级到Android L / API20):也许这就是问题所在? 但一般来说, 如何将SDK Manager(例如18)中显示的修订号与build.gradle的版本代码(例如5.0.84)相匹配? 这是我的完整build.gradle,以防它有帮助: apply plugin: ‘android’ android { compileSdkVersion 19 buildToolsVersion “19.1.0” defaultConfig { minSdkVersion 14 targetSdkVersion 19 versionCode 1 versionName “1.0” } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.txt’ […]

在Android / Gradle中如何定义仅在构建特定buildType / buildVariant / productFlavor(v0.10 +)时运行的任务

Gradle的Android插件为每个BuilType / Flavor / BuildVariant生成一项任务。 问题是这个任务将动态生成,因此在定义这样的任务时不能作为依赖项使用: task myTaskOnlyForDebugBuildType(dependsOn:assembleDebug) { //do smth } 这个答案的建议解决方法就是这样 task myTaskOnlyForDebugBuildType(dependsOn:”assembleDebug”) { //do smth } 或这个 afterEvaluate { task myTaskOnlyForDebugBuildType(dependsOn:assembleDebug) { //do smth } } 但两者都不适合我。

如何仅从AAR导入选定的本机库ABI?

我有一点不寻常的问题 – 我的Android应用程序包含本机库,我为armeabi-v7a和x86构建了本机库。 但是,现在我需要将第三方库集成到我的应用程序中,该应用程序还包含本机库(第三方库是Crashlytics ,我从build.gradle通过Maven包含它)。 问题是第三方图书馆的AAR提供所有架构(armeabi,arm64-v8a,armeabi-v7a,mips,mips64,x86和x86_64),我的应用程序仅支持armeabi-v7a和x86(arm64-v8a计划在不久的将来) ,所以当最终的apk构建时,它包含第三方库的所有ABI,并且只有我的本机代码的x86和armeabi-v7a ABI。 这会导致我的应用程序在像Galaxy S6这样的arm64设备上启动时崩溃。 我的问题是:是否可以仅包含来自第三方AAR的选定ABI? 请注意,我知道APK分裂 ,但这只能部分地解决我的问题,即只有当我通过Play商店分发我的应用程序时才有效。 虽然Play商店支持beta测试发布,但更新APK的传播速度相当慢,因此在推送应用PlayStore测试版频道的更新之前,我们通过Crashlytics的beta发布系统推送更新,速度要快得多。 问题是Crashlytics的distibution系统不支持APK拆分(或者我错了吗?)。 因此,我实际上需要构建一个仅包含选定ABI的“通用”APK。 怎么实现呢? 虽然我会满意Crashlytics特定的答案(例如,如何通过他们的测试版渠道分发APK分割),但我会对构建仅包含选定ABI的“通用”APK的解决方案更满意,因为在我们公司还向客户提供SDK作为AAR档案,其中仅包含支持的架构,我们希望在他们将SDK与支持不同ABI的其他SDK集成时如何处理案例。 我正在使用最新稳定的Android工作室(1.2.1.1),gradle 2.4和android gradle插件版本1.2.3。

有没有办法在gradle中有buildConfigField和resValue的公共部分?

我有一个产品有多种产品口味,如: buildTypes { debug { } release { } } productFlavors { flavor1 { buildConfigField “String” “country” “se” buildConfigField “String” “language” “sv-SE” buildConfigField “String” “appName” “Flavor1” } flavor2 { buildConfigField “String” “country” “se” buildConfigField “String” “language” “sv-SE” buildConfigField “String” “appName” “Flavor2” } flavor3 { buildConfigField “String” “country” “se” buildConfigField “String” “language” “sv-SE” buildConfigField “String” “appName” […]

将kSOAP依赖项添加到Gradle项目

我正在尝试使用Gradle在我的Android项目中使用kSOAP。 这是我的项目的build.gradle文件: buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.5.+’ } } apply plugin: ‘android’ repositories { mavenCentral() maven { url ‘http://ksoap2-android.googlecode.com/svn/m2-repo’ } } android { compileSdkVersion 18 buildToolsVersion “18.0.1” defaultConfig { minSdkVersion 7 targetSdkVersion 18 } } dependencies { compile ‘com.android.support:support-v4:18.0.0’ compile ‘ch.acra:acra:4.5.0’ compile ‘com.google.guava:guava:12.0’ compile ‘com.google.code.ksoap2-android:ksoap2-android:3.0.0’ } 该库似乎包含在项目和编译DOES工作,但当我尝试导入一个类(即SoapObject)时,似乎命名空间甚至不存在。 有趣的是,其他图书馆(如ACRA或Guava)工作正常。 我怎么解决这个问题?

错误:在项目’:app’上找不到属性’assembleDebug’

我正在使用’com.android.tools.build:gradle:2.2.0-alpha6’和Android Studio 2.2 Preview 6.构建在Gradle 2.1.0上运行得非常好,但要启用即时运行,它会要求我更新Gradle插件。 在更新Gradle插件时,构建”Error:Could not find property ‘assembleDebug’ on project ‘:app'”显示”Error:Could not find property ‘assembleDebug’ on project ‘:app'” 。 我已经尝试清理.gradle和.idea并重新加载项目,但没有任何作用。 请帮忙。