Articles of gradle

在Gradle中为Android中的库项目构建变体

我正在尝试使用Gradle配置一个包含一些外部库的项目。 使用Gradle我可以使用Build Variants为主应用程序设置不同的环境配置(在配置文件中有一个类),这样我就可以根据这些variables执行代码。 问题是我如何为图书馆项目做同样的事情? 我为这个项目创建了这个库,我想为不同的场景设置不同的Build Variants。 例如:在库中,当以调试模式运行时,然后打印所有日志,以便我可以在开发时看到它们。 在发布模式下不要。 文件结构: src —– > debug -> java -> config -> PlayerEnvConfig main -> com.mypackagename -> etc… release -> java -> config -> PlayerEnvConfig debug中的代码:package config; /** * Environment configuration for Release */ public final class PlayerEnvConfig { public static final boolean USE_REPORTING = true; public static final […]

javax。*无法在我的Android应用中导入?

我正在尝试在我的Android应用程序中导入一些javax.*类,但我一直在Android Studio中遇到编译器错误。 我正在使用Ubuntu Linux 13.04。 这是我的import: import android.os.Bundle; import android.app.Activity; import android.view.Menu; // Here are the imports I am having trouble with: import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.SourceDataLine; 当我尝试运行应用程序甚至编译活动java文件时,我收到以下错误: Gradle: error: package javax.sound.sampled does not exist Gradle: error: package javax.sound.sampled does not exist Gradle: error: package javax.sound.sampled does not exist 我只是无法弄清楚这个问题。 任何帮助都是极好的!

更新后 – 崩溃com.google.android.gms:play-services:5.2.8

我的依赖: compile “com.android.support:appcompat-v7:20.+” compile ‘com.google.android.gms:play-services:5.2.08’ compile ‘com.android.support:support-v4:21.0.+’ 但仍然:Google Play服务已过时。 需要5208000但find5089036 这怎么可能? 更新这项工作: compile ‘com.google.android.gms:play-services:5.0.89’ 要么 compile ‘com.google.android.gms:play-services:6.1.11’ 要么 compile ‘com.google.android.gms:play-services:6.+’

在Android Studio中为unit testing设置自定义资源目录

我们有一个非常罕见的要求,即我们的Android应用程序执行unit testing,这些测试使用了仅需要进行unit testing的资产。 使用基于Eclipse的SDK,这很简单明了 – 测试项目是一个带有自己资产文件夹的独立项目。 对于Android Studio,这意味着可以在build.gradle(或按惯例)配置。 最后,我们的unit testing正在执行,但我已经用尽了所有关于自定义(和理想情况下,合并)资源文件夹的建议。 这是我尝试过的: 在android闭包中向sourceSets添加一个测试闭包(通过闭包我的意思是在build.gradle中的花括号之间)。 androidTest { assets.srcDirs = [‘src/androidTest/assets/’] } 同样的事情,但使用“test”作为sourceSet的名称(与上面的“androidTest”相对)以及“instrumentTest”。 上面的各种组合,加上androidTest.setRoot(“test”),androidTest.setRoot(“androidTest”),这两者都导致我们的unit testing无法被识别(“空套件”)。 这个问题可以更一般地说是“如何在Android Studio中使用不同的目录进行unit testing”。 我们已经浏览了Android的文档,要么我们不理解它,它是错误的,或者某处有错误。 任何帮助将非常感谢。

将字节码转换为dex时出错:原因:java.lang.RuntimeException:exception解析类–Android studio 2.0 beta 6

我用gradle更新到Android studio 2.0 Beta 6的最新版本: dependencies { classpath ‘com.android.tools.build:gradle:2.0.0-beta6’ } 该应用程序在模拟器和设备上运行完美,我测试了所有东西,它工作正常。 只有当我尝试生成签名APK时,我才会遇到很多错误, 我在依赖项中遇到了一些错误,当我排除了vector drawable,vector animate drawable和Support-v4库时,所有这些错误都解决了 现在我没有任何依赖性错误。 现在我的app模块的gradle.build看起来像这样: apply plugin: ‘com.android.application’ android { configurations { //all*.exclude group: ‘com.android.support’, module: ‘support-v4’ all*.exclude module: ‘animated-vector-drawable’ all*.exclude module: ‘support-vector-drawable’ //all*.exclude module: ‘support-v4’ } repositories { maven { url “https://jitpack.io” } } compileSdkVersion 23 buildToolsVersion ‘23.0.2’ defaultConfig { applicationId […]

错误:(1,0)找不到ID为’android’的插件

我刚刚安装了Android Studio,经过一些关于SDK Build Tools最低限度的怪癖必须是19.1.0而不是19.0.3我还没有发现另一个错误 Error:(1, 0) Plugin with id ‘android’ not found. 我还没有find谷歌的解决方案,我绝对是新的,所以我“毫无头绪”……当我刚创建一个新的空白活动(和应用程序)时,错误显示出来。 错误意味着什么以及如何解决? (如果这是一个问题) 谢谢。

更新到Android studio 2.3 Canary 3后,Gradle构建失败

我最近将我的项目的android studio版本从2.3 Canary 2更新到2.3 Canary 3.从那时起,gradle构建每次都会失败并出现此错误: 错误:无法find方法’org.gradle.api.tasks.Sync.getInputs()Lorg / gradle / api / internal / TaskInputsInternal;’。 此意外错误的可能原因包括: Gradle的依赖性缓存可能已损坏(这有时会在网络连接超时后发生。)重新下载依赖项并同步项目(需要网络) Gradle构建过程(守护程序)的状态可能已损坏。 停止所有Gradle守护进程可以解决此问题。 停止Gradle构建过程(需要重启) 您的项目可能正在使用第三方插件,该插件与项目中的其他插件或项目请求的Gradle版本不兼容。 在损坏的Gradle进程的情况下,您还可以尝试关闭IDE,然后终止所有Java进程。 我搜索过谷歌并没有find这样的解决方案,但那些相似的解决方案无效。 有谁知道如何修理它?

Android Studio gradle无法编译指定的版本

我已经开发了这个小项目好几天但是今天突然间,Android Studio开始给我这个错误 Error:Execution failed for task ‘:app:processDebugManifest’. > Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 14 declared in library com.android.support:support-v4:21.0.0-rc1 我明白这是因为它正在尝试编译Android-L库。 我希望它编译的版本是旧版本,但它不会。 无论我输入哪个版本,它都会一直给我上述错误。 这是依赖项。 dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) compile ‘com.android.support:appcompat-v7:20.+’ compile ‘com.android.support:support-v4:20.+’ } UPDATE 我刚刚安装了Android Studio Beta并将我的依赖项更改为下面的Eugen建议。 但是,无论我指定哪个版本的appcompat支持版本,同步项目都会产生相同的错误。 它每次同步时都会出现此错误 uses-sdk:minSdkVersion 14 cannot be smaller than version L declared […]

根据buildType使用gradle覆盖资源

我想用gradle覆盖res / strings.xml中的一些字符串。 我知道, 因为Android Gradle Plugin 0.7。+ theres可能有一个变体特定的源文件夹。 但我的应用程序有很多口味,我不想添加额外的变体特定文件夹。 更新2014-01-17 我想要的详细信息: 我的资源中有一些variables只依赖于buildType(例如“release”)。 首先我认为我的SOLUTION_1 (在资源合并后覆盖数据)很好,因为如果我必须更改这些variables,我只需要在build.config中更改它们(只有一个地方)。 但正如Scott Barta在下面的评论中所写,有一些很好的理由说明为什么这个解决方案不是一个好主意。 所以我尝试了另一个解决方案SOLUTION_2 (只是合并正确的资源)基于shakalaca的这个GitHub项目 。 我认为这种方式更优雅,我仍然有一个优势就是在一个地方改变variables! SOLUTION_1(在资源合并后覆盖数据): 我在AS 0.4.2中做了什么: 在build.gradle我尝试将字符串“Hello World”覆盖为“OVERRIDE”( 根据我在这篇文章中的回答 ): android.applicationVariants.all{ variant -> // override data in resource after merge task variant.processResources.doLast { overrideDataInResources(variant) } } def overrideDataInResources(buildVariant){ copy { // *** SET COPY PATHS *** try […]

使用Gradle在分离的dex文件中拆分外部库以解决Android Dalvik 64k方法的限制

有没有一种proper/easy方法来解决使用Gradle的64k方法限制? 我的意思是一些自定义Gradle任务使用pre-dexed jar来创建单独的dex文件,而不是单个classes.dex 。 谢谢 伊万 当前状态 目前,我正在努力使用GMS:它引入了20k方法来使用Google Analytics。 我使用Proguard去除不需要的东西,但仍然…… 72k方法和计数…… 我可以使用dx参数–multi-dex在两个文件中拆分classes.dex 。 我实现了手动编辑 sdk/build-tools/android-4.4W/dx 并编辑最后一行,如下所示: exec java $javaOpts -jar “$jarpath” –multi-dex “$@” 我的APK文件现在包含__classes.dex__ and __classes2.dex__ 。 我试图用几种方法动态加载第二个文件: Dexdex 链接 德克斯特链接 辅助dex gradle 链接 不幸的是还没有运气。 我真的希望一些Google / Facebook / Square大师可以提供合适的解决方案。