Articles of gradle

在Android Studio中启动自定义Gradle Android版本

有没有一种简单的方法可以在Android Studio中构建,安装和自动启动自定义Gradle构建? 当我按下Android Studio中的“播放”(运行)按钮(具有典型的Android项目配置)时,我的项目将构建,安装在适当的设备上,然后启动应用程序。 如何使用特定的Build / Product口味(使用Gradle)? 我已经创建了一个运行任务“installFlavor1”的Gradle配置。 这安装正确,但它不会自动启动应用程序。

运行MyActivity时出错:Gradle项目同步失败。 请修复您的项目,然后重试

我是Android Studio的新手,我刚刚创建了一个新项目,只有一个Activity包含片段(Android studio创建了它),当我运行MyActivity.java时,出现错误: Error running MyActivity: Gradle project sync failed. Please fix your project and try again. 我的事件日志中没有更多内容。 我不知道它为什么, 这个链接没有帮助。 一个线索是Gradle项目同步正在进行中,就在我重新启动Studio之后。

无法通过USB调试安装Android应用程序

我知道这是一个老问题,但我想第一次在Redmi note 4上安装我的应用程序。每当我尝试安装它时会显示一个对话框,说明.. 安装失败,显示消息无法建立会话。 通过卸载现有版本的apk(如果存在)然后重新安装,可能会解决此问题。 警告:卸载将删除应用程序数据! 在此之后它会出错。 之前没有安装此应用程序,我已清除缓存,重建项目,重新启动手机但没有任何工作。

如何使用Gradle抑制“警告:忽略匿名内部类的InnerClasses属性”?

如何使用Gradle抑制“警告:忽略匿名内部类的InnerClasses属性”? 这不是一个重复的问题 这不是在Proguard期间,我也不想压制使用Proguard 我想压制正常的./gradlew assembleDebug (因为这是assertj-core – ./gradlew testDebug ) 相关性: dependencies { testCompile “org.assertj:assertj-core:1.7.1” } 警告: Dex: warning: Ignoring InnerClasses attribute for an anonymous inner class (org.assertj.core.internal.cglib.reflect.FastClassEmitter$3) that doesn’t come with an associated EnclosingMethod attribute. This class was probably produced by a compiler that did not target the modern .class file format. The recommended […]

无法删除旧的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 ]