Articles of gradle

有没有办法通过返回布尔值来了解是否在gradle文件中编译了某个依赖项

所以情况就是这样,在我所拥有的依赖结构的build.gradle文件中 dependencies { compile ‘A’ compile ‘B’ } 但是,我希望人们能够只编译A或只编译B,是否有办法通过返回一个可以在其他地方使用的全局布尔值,在gradle任务中使用是否使用了依赖关系A? 所以换句话说 if (A was compiled) { compile A; } else { exclude A; }

Java.lang.ClassCastException:Android.support.v7.widget.ContentFrameLayout无法强制转换为Android.support.v7.widget.ContentFrameLayout

有时我安装我的Android应用程序,但我得到以下exception,但这并不总是可重现的。 java.lang.ClassCastException:android.support.v7.widget.ContentFrameLayout无法强制转换为android.support.v7.widget.ContentFrameLayout 我在我的Android应用程序上使用multidex并且我读到了关于三星设备有multithreading实现错误的问题,但这发生在运行5.1的LG G3和运行6.0的HTC A9上。 任何人都有任何想法为什么这是随机发生的,我该怎么做才能解决它? 编辑:我不能分享很多代码,因为这是我工作的公司。 buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:1.5.0’ classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8′ } } apply plugin:’com.android.application’apply plugin:’com.neenbedankt.android-apt’ buildscript {repositories {mavenCentral()} dependencies { classpath ‘com.android.tools.build:gradle:1.5.0’ classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8′ } } apply plugin:’com.android.application’apply plugin:’com.neenbedankt.android-apt’ 存储库{mavenCentral()maven {url’https://repository-achartengine.forge.cloudbees.com/snapshot’} maven {url’libs-localrepository’}} android {buildToolsVersion“23.0.2”compileSdkVersion 23 dexOptions { javaMaxHeapSize “4g” } defaultConfig { minSdkVersion 18 targetSdkVersion […]

如何从Android Gradle构建FTP文件?

我正在尝试在Gradle构建之后对已签名的APK进行FTP。 我已经添加了将对APK进行签名的新构建配置,但我仍然试图弄清楚如何调用FTP任务。 我在第59.6节find了一个正式的样本,但它抱怨它无法解析依赖org.apache.ant:ant-commons-net:1.8.4。 所以显然我在这里遗漏了一些明显的东西,比如在哪里放一个给定的jar文件或引用它,虽然我认为maven会处理这类事情? 作为参考,这里是链接的示例,它失败并显示有关依赖项的消息: configurations { ftpAntTask } dependencies { ftpAntTask(“org.apache.ant:ant-commons-net:1.8.4”) { module(“commons-net:commons-net:1.4.1”) { dependencies “oro:oro:2.0.8:jar” } } } task ftp << { ant { taskdef(name: 'ftp', classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP', classpath: configurations.ftpAntTask.asPath) ftp(server: "ftp.apache.org", userid: "anonymous", password: "me@myorg.com") { fileset(dir: "htdocs/manual") } } } 这失败并显示以下消息: > Could not find org.apache.ant:ant-commons-net:1.8.4. 这是我完整的gradle.build文件,删除了一些敏感信息: buildscript { repositories { […]

错误:Gradle:任务执行失败’:app:compileDebugJava’

我尝试构建我的新android项目并得到此错误: 错误:Gradle:任务’:app:compileDebugJava’的执行失败。 编译失败; 请参阅编译器错误输出以获取详细信 我没有在intellij IDEA中看到任何编译细节输出 我该如何添加更多细节? 这是我的gradle.build buildscript { repositories { jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:0.14.2’ } } apply plugin: ‘com.android.application’ repositories { jcenter() } android { compileSdkVersion 19 buildToolsVersion “19.1.0” defaultConfig { applicationId “com.example.reminders” minSdkVersion 14 targetSdkVersion 19 versionCode 1 versionName “1.0” } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { […]

如何使用gradle上传多个模块的档案?

我想用$ ./gradlew uploadArchives在maven中发布我的SDK 我有这个项目结构: MyProject |_ SDK |_ src |_ main |_ java |_ java files |_ build.gradle |_ gradle |_ gradle-publish.gradle 我使用了以下按预期工作的代码( gradle-publish.gradle ): task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { classifier = ‘javadoc’ from androidJavadocs.destinationDir } task sourcesJar(type: Jar) { classifier = ‘sources’ from android.sourceSets.main.java.sourceFiles } uploadArchives { repositories { mavenDeployer { /* … […]

多个dex文件使用Gradle定义Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat

当我跑./gradlew assembleDebug我得到: :app:dexDebug FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ‘:app:dexDebug’. > com.android.ide.common.internal.LoggedErrorException: Failed to run command: /home/grub/Main/android-sdk-linux/build-tools/19.1.0/dx –dex –num-threads=4 –output 合并的类和jar列表: UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl; 它与此问题非常相似,问题应该在多个support-v4库中。 我清理了build.gradle : repositories { maven { url “http://dl.bintray.com/populov/maven” } mavenCentral() } apply plugin: ‘android’ android […]

AndroidStudio – Gradle Refresh失败

我正在使用Android studio的最新版本来构建我的Android应用程序。 gradle包装器设置gradle安装,项目构建没有错误。 最后,每次重新启动时,我都会收到一个错误。 Gradle:配置项目’:App’时出现问题。 无法解析配置的所有依赖项’:App:classpath’。 无法解决com.android.tools.build:gradle:0.5.+。 要求:App:App:未指定 org.slf4j.spi.LocationAwareLogger.log(Lorg / SLF4J /标记; Ljava /郎/字符串; ILjava /郎/字符串; [Ljava /郎/对象; Ljava /郎/ Throwable的;)V 这个问题可以通过再次执行gradlew来修复,并且构建很顺利。 但是在0.3 android studio更新和android插件更新到0.6之后。+我甚至无法执行gradlew而不会收到此错误消息。 我尝试用其所有配置文件卸载android studio,删除了项目和主目录中的.gradle文件夹,甚至删除了.m2存储库。 我甚至无法启动一个新的android项目,它失败了同样的错误,所以我的build.grade应该没有问题 buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.6.+’ } } apply plugin: ‘android’ repositories { mavenCentral() } android { compileSdkVersion 18 buildToolsVersion “18.1.1” defaultConfig { […]

使用新的Gradle 3.0.0和Android Studio 3“,Gradle Build失败

所以我尝试使用Android Studio的新版本3从头开始一个新项目。 一切都有效,直到它试图建立项目。 然后我收到此错误消息: Error:Unable to find method ‘org.gradle.tooling.model.gradle.GradleBuild.getIncludedBuilds()Lorg/gradle/tooling/model/DomainObjectSet;’. Possible causes for this unexpected error include:Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) Re-download dependencies and sync project (requires network)The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem. Stop […]

在使用gradle构建特定的Android产品风味时,我可以排除区域资源(例如values-fr)

说我有这个目录结构: app –src |–main | |–java | |–res | |–drawable | |–values | |–values-fr | |–values-de | |–flavor1 | |–res | |–drawable | |–flavor2 | |–res | |–drawable | |–flavor3 |–res |–drawable values-fr对于flavor1和flavor2常见,因此values , values-fr flavor2和values-de应该打包 flavor3应该只打包values和values-de flavor3 。 所以我只需要从flavor3排除values-fr资源文件夹。 我尝试了很多组合,如下面的那些,但无法弄明白,或者即使它是可能的。 sourceSets { flavor3 { res.exclude ‘values-fr/**’ res.exclude ‘values-fr/’ } } 编辑 我发现这个工作解决方案只包括德语用于上面的例子: productFlavors { […]

无法应用插件“com.google.gms.google-services”

这是我的项目build.gradle : buildscript { … dependencies { … classpath ‘com.google.gms:google-services:3.1.0’ } } 在其中一个模块的build.gradle中,我有这个: apply plugin: ‘com.google.gms.google-services’ 这导致以下错误: Could not get unknown property ‘LibraryVariants’ for object of type com.android.build.gradle.LibraryExtension. 有趣的是,如果我将google-services版本设置为3.0.0 ,这个特定的错误就会消失,但Gradle要求我降级其他谷歌库的版本,但我真的不想那样做。 我如何处理这些LibraryVariants ?