Articles of gradle

为什么assembleDebug比项目构建需要更长的时间以及如何优化它?

我最近一直在处理Android Studio中的gradle构建时间。 通过删除一些依赖项,我已经设法将构建时间从大约3分钟减少到10秒,但事情就是这样: 当我重建项目时,大约需要10秒钟: 15:13:43 Executing tasks: [clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:compileDebugSources, :app:compileDebugAndroidTestSources] 15:13:54 Gradle build finished in 11s 596ms 但是,当我启动应用程序时,需要更长的时间,大约一分钟: 15:15:09 Executing tasks: [:app:assembleDebug] 15:15:58 Gradle build finished in 49s 676ms 造成这么大差异的原因是什么? 这仍然是因为大量的gradle依赖或其他东西? 我可以以某种方式减少构建时间吗?

两种具有不同资源的风格从一种基本风味inheritance布局

我的Android应用程序分为四种不同的构建风格。 这些风格中的每一种都有一部分独特的java和xml文件,以及main下的一部分共享文件。 为了清楚起见,我们称之为Cucumber , Tomato , Onion和Pepper 。 这些风味有独特的布局,drawables,字符串,颜色,java文件等。 我的要求是,我需要将我的Pepper味分成两种亚味; Red-Pepper和Green-Pepper 。 这两种口味的布局应该是相同的 – 唯一不同的是两种口味必须使用不同的drawable和string资源。 出于显而易见的原因,我不希望在红色和绿色两种forms中都有重复的布局文件。 如何在gradle实现这一目标?

android gradle项目刷新失败:设备没有准备好

当我将我的项目移动到我的笔记本电脑并将其导入文件/导入项目时,Android工作室提醒我 项目刷新失败 错误:设备尚未就绪

如何在Gradle构建中使用自定义proguard.jar?

我想在我的应用程序上运行proguard,其中包括Unity 3D。 目前proguard尝试处理unity-classes.jar失败,唯一的解决方法是自己构建proguard并应用补丁(请参阅此链接获取错误报告)。 所以,我现在有自己的自定义proguard.jar,但是如何让android插件使用呢? 使用eclipse只需更换Android SDK目录中的proguard.jar,但这不再适用于Android Studio / Gradle。 事实上,我可以从tools / proguard / lib /中删除proguard文件,它仍然可以运行! 如何让Android Studio / Gradle使用我自定义构建的proguard.jar?

除了使用sudo之外,无法使用Gradle构建Android应用

我正在尝试使用gradle构建运行一个简单的’hello world’安卓应用程序。 如果我发出命令,它建立良好 sudo ./gradlew build – >构建正常 但没有sudo, ./gradlew build – >显示以下错误 FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ‘:MyStudioApplication’. > Failed to notify project evaluation listener. > Could not resolve all dependencies for configuration ‘:MyStudioApplication:_DebugCompile’. > Could not find any version that matches com.android.support:appcompat-v7:+. Required […]

Android,Gradle,产品口味和清单

在build.gradle ,我设置了产品口味: productFlavors { AlternateFlavour { applicationId “com.myapp.alternateflavour” } } 然后在sourceSets部分中,我为这些风格使用不同的资源,资产和清单目录: sourceSets { main { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] res.srcDirs = [‘res’] assets.srcDirs = [‘assets’] } AlternateFlavour { manifest.srcFile ‘manifest-tmp/AlternateFlavour/AndroidManifest.xml’ java.srcDirs = [‘src’] res.srcDirs = [‘res-tmp/AlternateFlavour’] assets.srcDirs = [‘assets-tmp/AlternateFlavour’] } } 好到目前为止。 在那个由部分自动生成的风味使用的清单中,我有: 但在根项目的原始清单中如下: 这会导致Gradle失败: Error: Attribute manifest@versionCode value=(1010001) from AndroidManifest.xml:4:5-28 is also present […]

在Android Studio中更改xml布局文件后需要重建

我正在开发Android应用程序,我正在使用Android Studio。 但是有一个问题。 当我更改源代码并运行应用程序时,它工作正常,但是当我更改资源时,它不会更改,直到我执行清洁项目 。 例如,我添加一个按钮并运行应用程序,该按钮不存在但是当我做一个干净的项目时它就在那里。 Android studio在访问新添加的视图的id时显示错误。 请帮我解决这个问题。 任何帮助将非常感激。 附加信息:-Android Studio版本:1.3.1 – 操作系统:windows -Gradle版本:2.6 编辑: 我有多个目录作为我的资源与gradle这样: sourceSets{ main { manifest.srcFile ‘src/main/AndroidManifest.xml’ java.srcDirs = [‘src/main/java’, ‘.apt_generated’] aidl.srcDirs = [‘src/main/aidl’, ‘.apt_generated’] res.srcDirs = [ ‘src/main/res’, ‘src/main/res/layouts/test’, ‘src/main/res/layouts/login’, ‘src/main/res/layouts/main’, ‘src/main/res/layouts/includes’ ] } } 当我尝试使用更改的布局运行项目时,它说: No apk changes detected. Skipping file upload, force stopping package instead. DEVICE SHELL […]

如何从android项目中完全卸载Twitter的Fabric SDK?

我已经将Twitter的Fabric SDK集成到我的Android项目中,现在我想完全删除它。 正如我到目前为止看到的,这个SDK是相当新的,因此除了最常见的用例之外几乎没有文档和function。 我还没有发现任何与卸载相关的内容。 我尝试从build.gradle文件中删除与结构相关的代码(当然还删除了java类中的调用),但是当我构建项目时,名为crashlytics-build.properties的文件出现在项目的文件夹中几秒钟。 我的IDE是IntelliJ。 我对gradle没有经验,并且知道这无论如何都不会只是一种肤浅的方法。 所以,我的问题是:如何完全卸载结构,不留痕迹?

从gradle运行单个Android(单元)测试,而不加载其他项目依赖项

我正在使用Jake Wharton的精彩插件进行Androidunit testing。 我努力让这些unit testing运行的目的是为了速度(TDD快速反馈和所有)。 我已经设法正确配置它并运行一些示例测试,如下所示: ./gradlew test 每当我运行测试时,我会注意到以下输出: Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0 The Test.testReportDir property has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the Test.getReports().getHtml().getDestination() property instead. The TaskContainer.add() […]

如何使用Permissionsdispatcher库获取新的Android M运行时权限?

我遇到了一篇奶酪工厂文章(google it因为我不能发布超过2个链接和我的声誉),这解释了如何处理Android Marshmallow的新权限系统。 在本文中,他引用了Permissionsdispatcher库 ,旨在减少样板代码。 所以我从GitHub下载了库演示,但是我收到一条错误,说明MainActivityPermissionsDispatcher无法解析。 根据我的理解,应该生成这个类 。 如何生成它以删除错误? MainActivity.java @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { // delegate the permission handling to generated method // MainActivityPermissionsDispatcher cannot be resolved MainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults); }