Articles of gradle

无法删除旧的javacompile动作,也许类名称已更改

我正在学习RxJava。 为此,我跟随了RxJava上的droidcon 谈话video 。 教练给他正在使用的项目提供了回购链接 。 当我尝试在我的机器上构build项目时,我克隆了回购。 我得到这个错误 错误:无法删除旧的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 […]

Gradle – select性模块编译(否则重复使用jar)

我在我的项目中使用了很多模块(本地和在线的,大部分时间大于20次),我可以说,通常情况下,它们不是必须检查或重新编译的。 我可以将它们全部包含为.jar文件,这会加快构build时间,但我更愿意遵循以下内容: 设置一些我定义的gradle应该为我的所有模块构build.jar并重用它们 如果需要我只是禁用此设置,并build立我的项目(完全干净的构build会这样做) 我希望能够在项目中编辑我的模块,这就是为什么我不想直接包含它们作为.jar文件。 我想要更快的编译时间,但我不想生成.jar文件并手动添加到我的项目。 任何想法如何和如果这是可能的? 我可以通过一些设置或通过gradle任务或类似的东西意识到吗?

适用于Android的Gradle,AAR和条件依赖项

简而言之 :组织AAR代码/ POM的一些方法是什么,使得使用该AAR的应用程序只具有实际需要的依赖关系? 长forms : 假设我们有一个应用程序依赖于打包为AAR(L)的Android库项目。 L包含类的混合,任何给定的应用程序(如A)将只使用这些类的一个子集。 例如: L可以包含用于本地API级别11片段的Fragment实现,反向端口片段和ActionBarSherlock风味片段 L可以包含常规活动, FragmentActivity , ActionBarActivity和ActionBarSherlock风味活动的Activity实现 L可以通过LocalBroadcastManager ,Square的Otto和greenrobot的EventBus来引发事件 等等 这些案件有两个主要的共同点,正如我所看到的: 应用程序通常只关心一些类。 例如,使用Otto的应用程序不会关心引用greenrobot的EventBus的代码,或者使用ActionBarActivity的应用程序将不关心ActionBarSherlock。 如果AAR是repo中的工件,则应用程序将不会关心构buildAAR所需的所有可能的上游依赖关系。 例如,使用本地API级别11片段的应用程序将不需要support-v4或actionbarsherlock ,即使AAR本身需要它们来构buildAAR 如果我们要使用JAR而不是AAR来转储依赖关系pipe理,这是非常简单的。 构buildJAR将具有编译时间依赖性(例如, support-v4 )。 但是,使用该JAR的应用程序可以跳过这些依赖关系,只要这些应用程序不使用真正需要这些依赖关系的类,生活就是好的。 但是,我很难看到如何在build.gradle文件中指定的AAR和Maven构件完成同样的事情。 如果L具有引用上游依赖关系的dependencies块,则应用程序将依次在应用程序依赖于L时依次下载这些依赖性。 我相当肯定的解决scheme之一是将L分成几个库。 例如,使用片段场景,我们可以有: L1,其中包含原生API级别11版本的片段的实现,以及其他场景所需的常见代码。 这个库不会有上游的依赖关系。 L2,其中包含使用Android支持包的分段backport的实现。 L2将依赖于L1和support-v4 。 L3,其中包含使用Sherlock风格片段的实现。 L3将依赖于L1和actionbarsherlock 。 然后,应用程序会select是否依赖L1,L2或L3,因此只会获得必要的上游依赖关系(如果有的话)。 我的问题是:这是最好的解决scheme吗? 或者,在Gradle for Android,AAR和Maven风格的工件中,还有其他的东西可以让应用程序依赖于单个的L? 我担心图书馆可能发生的组合爆炸,以处理上游依赖的各种混合。 我也担心奇怪的应用程序实际上需要多个实现,我们是否可以可靠地指定这些依赖(例如,一个应用程序取决于L1和L2,因为这是应用程序的作者认为应用程序需要)。 我知道有一些应用程序阻止 排除依赖的方法(请参阅Joseph Earl对语法的回答),所以应用程序可以依赖L,但是如果不需要,可以阻止actionbarsherlock上游依赖。 虽然这可以起作用,但如果我是L的作者,我宁愿采用L1 / L2 / L3方法,因为这看起来更清洁。 还有其他build议吗?

在现有的Android项目中使用Gradle

我有一个现有的Android项目,具有以下结构: – ProjectName — AndroidManifest.xml — local.properties — project.properties — assets — libs (containing all jars) — modules (containing all library projects my project depends on) — res — src —- com/namespace/projectname (all my classes including main activity are here) 我没有使用任何特定的构build系统来构build除Android Studio IDE默认提供的项目以外的项目(尽pipe该项目最初是使用IntelliJ CE创build的。 我想用Android插件使用Gradle,并在构build过程中做一些工作。 为了达到这个目的,我尝试了几个configuration,并且每次都没能完成一个成功的构build。 在这种情况下推荐的方法是什么? 我应该改变我的项目结构吗? 还是有可能使用现有的结构来configurationgradle? 任何帮助将不胜感激。 谢谢!

在Gradle Product Flavors上debugging签名configuration

我有一个项目,我有几个设备特定的产品口味,每个口味需要用不同的configuration签名: productFlavors { nexus7 { signingConfig signingConfigs.nexus7 } nexus4 { signingConfig signingConfigs.nexus4 } } 这在构build“发布”变体时非常有用。 但是,当使用“debugging”变体(例如,当我构buildNexus4Debug时),Gradle正在使用默认的androiddebugging密钥。 在我的情况下,我高度依赖于正确签名的这些构build版本,如果使用默认的debugging密钥进行签名,我的应用程序是相对无用的。 任何人都知道是否有一种方法来指定每个变体的签名configuration? 我知道我可以做每个构buildtypes,一个拉: buildTypes { debug { signingConfig signingConfigs.nexus4 } } 但这限制了我总是使用相同的签名configuration来debugging两种风格的版本。 PS – 了解这是一个边缘用例这里的一点点。 这适用于我们正在testing多种不同Nexus设备上的自定义ROM和系统签名应用程序的企业项目。

在Android Studio中使用Gradle中的系统环境variables的正确方法

我正在使用Android Studio在Ubuntu 14.04系统上构build我的项目。 我在build.gradle文件中写下了以下内容,以避免在我的git仓库中对storeFile,storePassword,keyAlias和keyPassword进行硬编码: signingConfigs { debug { storeFile file(System.getenv("KEYSTORE")) storePassword System.getenv("KEYSTORE_PASSWORD") keyAlias System.getenv("KEY_ALIAS") keyPassword System.getenv("KEY_PASSWORD") } 但是,同步错误与以下Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj' : Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj' Error:(49, 0) Neither path nor baseDir may be null […]

Android Gradle添加静态库

在传统的android ndk中,我们将指定要在Android.mk文件中链接的静态库。 Android.mk PLATFORM_PREFIX := /opt/android-ext/ LOCAL_PATH := $(PLATFORM_PREFIX)/lib include $(CLEAR_VARS) LOCAL_MODULE := library LOCAL_SRC_FILES := library.a include $(PREBUILT_STATIC_LIBRARY) LOCAL_STATIC_LIBRARIES := android_native_app_glue library 这是我的问题 当切换到NDK的Gradle实验性插件时,我有点困惑。 分享你的想法如何链接应用程序build.gradle文件中的静态库。 我遵循了这里给出的最新的gradle实验性插件文档。

Android的工作室:如何删除/过滤构build变种默认debugging和发布构buildtypes,并只保留那些使用自定义构buildtypes?

我已经创build了自定义的buildTypes,如下所示: buildTypes { releasefree.initWith(buildTypes.release) releasefree { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } releasepro.initWith(buildTypes.release) releasepro { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' applicationIdSuffix ".pro" } debugfree.initWith(buildTypes.debug) debugfree { shrinkResources true applicationIdSuffix ".debug" debuggable true } debugpro.initWith(buildTypes.debug) debugpro { shrinkResources true applicationIdSuffix ".pro.debug" debuggable true } } 我不打算使用默认的debugging和发布构buildtypes,并希望从构build变体列表中删除它们。 我有不止一些口味,而且变体的列表太庞大了。 使用默认的debugging版本和发布版本删除变体将有所帮助,因为我永远不会使用它们。 我尝试使用变种filter如下,但它没有工作 android.variantFilter { variant […]

编译,testing编译和gradle依赖中提供的区别是什么?

我正在使用android studio,并在项目结构 – >依赖关系选项卡下面的选项,我可以看到: 编 提供 APK testing编译 debugging编译 释放编译 我的问题:编译,testing编译和gradle依赖关系提供了什么区别

如何解决“Support-v13:19.1.0取决于库,但不是库本身”?

自从0.6.2升级以来,我刚刚在Android Studio 0.8.1中启动了一个项目。 抛出的错误是“错误:模块版本com.android.support:support-v13:19.1.0取决于库,但不是一个库本身”。 有没有人有一个想法,为什么这是? 我已经安装了一些新的API20的东西玩Android L,但该项目的buildTools仍然设置为19.1.0。 这里是我的build.gradle的依赖部分: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:19.1.+' compile 'com.android.support:support-v13:19.1.+' compile 'com.jakewharton:butterknife:5.1.0' compile 'de.greenrobot:eventbus:2.2.1' compile 'com.google.code.gson:gson:2.2.4' compile 'com.mcxiaoke.viewpagerindicator:library:2.4.1' compile 'uk.co.chrisjenx:calligraphy:0.7.+' compile 'com.crashlytics.android:crashlytics:1.+' compile 'com.google.android.gms:play-services:4.4.+' } SDK / Buildtools设置如下: compileSdkVersion 19 buildToolsVersion "19.1.0" 任何人都可以解释这个或指向我的修复? 我很难过