Articles of gradle

无法删除旧的javaCompile操作,可能是类名已更改

我正在学习RxJava。 为此我在RxJava上关注了droidcon谈话video 。 教练为他正在使用的项目提供了回购链接 。 当我尝试在我的机器上构建项目时,我克隆了回购。 我收到这个错误 错误:无法删除旧的javaCompile操作,可能是类名已更改? 请提交错误报告,告知您正在使用的gradle版本。 这是gradle.build文件 buildscript { repositories { mavenCentral() } dependencies { classpath ‘me.tatarka:gradle-retrolambda:2.5.0’ } } repositories { mavenCentral() maven { url “https://github.com/alter-ego/advanced-android-logger/raw/develop/releases/” } } apply plugin: ‘retrolambda’ apply plugin: ‘com.android.application’ android { compileSdkVersion 23 buildToolsVersion “25.0.0” defaultConfig { applicationId “com.packtpub.apps.rxjava_essentials” minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName “1.0” […]

Gradle – 选择模块编译(否则重用jar)

我在我的项目中使用了很多模块(本地和在线的模块,大多数时候都是20个),我可以说通常不检查也不重新编译它们。 我可以将它们全部包含为.jar文件,这会加快构建时间,但我更喜欢以下内容: 设置我定义gradle应为我的所有模块构建.jar并重用它们的东西 如果需要我只是禁用此设置并构建我的项目(完美的干净构建会这样做) 我希望能够在项目中编辑我的模块,这就是为什么我不想将它们直接包含在.jar文件中。 我想要更快的构建时间,但我不想构建.jar文件并手动将它们添加到我的项目中。 关于如何以及如果可能的任何想法? 我可以通过一些设置或通过gradle任务或类似的方式来实现吗?

我可以设置一个BuildConfig标志,返回是否使用`connectedAndroidTest` gradle任务构建apk吗?

如果我们正在运行Androidunit testing,我的应用程序的一部分我不想运行,所以我想用类似的东西包围它们 if (!BuildConfig.TESTING) { // Code here that I don’t want to run during tests. } 是否可以根据是否使用connectedAndroidTest gradle任务来填充此BuildConfig标志? 这是解决这个问题的理智方式吗?

使用带有Gradle的Robolectric时的资源$ NotFoundException

我一直在关注设置Robolectric来测试我的Android Gradle项目。 我一直在遇到这个错误: android.content.res.Resources$NotFoundException: no such label com.mypackage.dev:string/app_name 通过从教程中下载示例项目,我已经确定问题是我的productFlavors (dev,staging,production)。 向工作示例项目添加flavor会导致同样的问题。 您可以在此答案中看到我的build.gradle的大纲。 我已经看到了各种答案(例如这里 ),这表明我需要为每种风格指定sourceSets 。 我已经尝试了很多组合,但不能完全正确。 有人可以帮忙吗? 令我困惑的另一件事是我见过的所有Robolectric样本似乎都在为“instrumentTest”指定sourceSets和依赖项,即使Robolectric测试总是只在“test”文件夹中。 在我的情况下,我已经在instrumentTest文件夹中进行了Robotium测试,我不明白为什么我需要为Robotium代码添加Robolectric依赖项。

注释处理器生成的资源未打包到APK

我有自定义注释处理器生成工厂类和META-INF/services/factory.interface.class资源。 注释处理器用于库项目,所有生成的文件都正确打包到AAR中。 当我在应用程序项目中使用注释处理器并将库添加为依赖项时,只有来自库的类META-INF/services/factory.interface.class存在于APK/META-INF/services/factory.interface.class 经过一番调查后,我意识到android–gradle-plugin-1.5.0(和2.0.0-alpha3)中exploded-aar在所有exploded-aar , jar和intermediates/sourceFolderJavaResources查找合并的资源 有没有办法从intermediates/classes合并META-INF (它是来自注释处理器的资源文件的创建)或者在sourceFolderJavaResources创建注释处理器创建文件? 到目前为止,我find的唯一解决方法是在应用程序的buildscript中添加CopyTask android.applicationVariants.all { variant -> def variantName = variant.name def variantNameCapitalized = variantName.capitalize() def copyMetaInf = tasks.create “copyMetaInf$variantNameCapitalized”, Copy copyMetaInf.from project.fileTree(javaCompile.destinationDir) copyMetaInf.include “META-INF/**” copyMetaInf.into “build/intermediates/sourceFolderJavaResources/$variantName” tasks.findByName(“transformResourcesWithMergeJavaResFor$variantNameCapitalized”).dependsOn copyMetaInf } 但我不强迫编译器库用户除了添加依赖项之外还做更多的事情。

如何在Android Studio的类路径中配置库的顺序?

我想更改Android Studio的类路径中库的顺序。 我试图在IDE中使用JUnit 4 运行unit testing 。 这符合这些幻灯片中的说明 。 我想知道是否可以通过Android Studio的运行配置来配置库的顺序 – 幻灯片中的其他建议? 第一次尝试是在项目模块的“ 依赖关系”选项卡中更改“ 项目结构”对话框中的依赖项顺序,如屏幕截图所示。 第二个猜测是在build.gradle文件中包含类路径配置。 对此有一些模糊的想法: sourceSets.main.compileClasspath = file(“foo.jar”) + sourceSets.main.compileClasspath … sourceSets.test.compileClasspath = configurations.robo + sourceSets.test.compileClasspath sourceSets.test.runtimeClasspath = configurations.robo + sourceSets.test.runtimeClasspath 资料来源:[ 1 ],[ 2 ]

在IntelliJ IDEA中找不到“使用Gradle文件同步项目”按钮

我刚刚将google-play-services-lib库添加到我的项目中,并且卡在我需要“将项目与gradle文件同步”的位置,但IntelliJ 13.0.1上不存在此按钮。 有这个function的替代品吗?

APK尺寸大于预期 – 安卓工作室

我的项目内容大小如下, 主要项目(来源及资产规模513KB) 第1单元(来源和资产规模135KB) 第2单元(来源和资产规模80KB) apk(签名,调试两者)大小为4.87MB。 也试过ProGuard没有改变。 我不明白这个的原因。 即使我没有在我的项目中添加任何jar文件。

来自sourceSet的Gradle排除文件无法正常工作

我有一个项目,我试图将java源文件树中的单个文件包含到库项目中。 无论我做什么,我都不能只包含那个文件。 我在另一个项目中取得了成功,排除了除一个文件之外的所有文件,但只有在从库项目运行gradle时才有效。 从应用程序目录运行时,包含所有文件。 在尝试创建一个可以重现问题的简单项目时,同样排除所有问题也不起作用。 示例文件树很简单: application – android app that includes the two libraries library1/ build.gradle src/main/AndroidManifest.xml library2/ build.gradle src/main/AndroidManifest.xml java/src/com/company/product/ /pkg1 Source1.java, Source2.java, Source3.java libraryoneonly/Library1Source.java /pkg2 Source1.java, Source2.java, Source3.java library1 build.gradle看起来像这样。 下面的工作既不包括也不包括在内。 LIBRARY1 /的build.gradle apply plugin: ‘com.android.library’ android { sourceSets { main.jni.srcDirs = [] main.jniLibs.srcDir ‘src/main/libs’ main.java { srcDir “../../java/src” exclude { FileTreeElement […]

IntelliJ和Android Gradle依赖项 – 无法find模块

我有以下目录结构: D:\PROJECT +—javaGradleProject1 +—javaGradleProject2 +—javaGradleProject3 \—AndroidProject | build.gradle | settings.gradle \—AndroidModule build.gradle Android模块依赖于与根据AndroidProject在根目录中处于同一级别的所有java gradle项目。 在AndroidProject / settings.gradle中我有: include ‘:AndroidModule’ include ‘javaGradleProject1’ project(‘:javaGradleProject1’).projectDir = new File(rootDir, ‘../javaGradleProject1’) include ‘javaGradleProject2’ project(‘:javaGradleProject2’).projectDir = new File(rootDir, ‘../javaGradleProject2’) include ‘javaGradleProject2’ project(‘:javaGradleProject2’).projectDir = new File(rootDir, ‘../javaGradleProject2’) 然后在AndroidProject / AndroidModule / build.gradle中我有依赖设置如下: compile project(‘:javaGradleProject1’) compile project(‘:javaGradleProject2’) compile project(‘:javaGradleProject3’) 当我调用时,这种依赖结构完美地工作并构建项目 gradle build 在AndroidProject […]