Articles of gradle

如何自定义产品口味的APK文件名?

我在build.gradle脚本中自定义Android应用程序的APK文件的名称,如下所示: android { defaultConfig { project.ext.set(“archivesBaseName”, “MyApplication”); } } 现在我正在使用产品口味: android { productFlavors { green { applicationId “com.example.myapplication.green” } blue { applicationId “com.example.myapplication.blue” } } } 有没有办法自定义每个APK的名称? 我尝试使用archiveBaseName和baseName但没有成功。 最后我想提出以下文件: build/outputs/apk/Blue-debug-1.2.1.apk build/outputs/apk/Blue-debug-unaligned.apk build/outputs/apk/Blue-release-1.2.1.apk build/outputs/apk/Blue-release-unaligned.apk build/outputs/apk/Green-debug-1.2.1.apk build/outputs/apk/Green-debug-unaligned.apk build/outputs/apk/Green-release-1.2.1.apk build/outputs/apk/Green-release-unaligned.apk

Android Gradle:在构建时动态更改versionName

我试图通过使用自定义版本的gradle-release插件来模拟Android中的Maven发布插件: https : //github.com/townsfolk/gradle-release 有趣的步骤是: 检查未提交的更改 步骤版本代码并从版本名称中删除-SNAPSHOT后缀 建立 步骤版本名称并为下一个开发版本添加-SNAPSHOT后缀 但是生成的APK总是具有以前的版本(即1.0.0-SNAPSHOT而不是1.0.0)。 版本号在gradle.properties中存储并正确更新,因此我假设我需要更新数据模型中的版本以使更改生效。 我的android插件配置: defaultConfig { versionCode versionCode as int // taken from gradle.properties versionName versionName // taken from gradle.properties minSdkVersion 10 targetSdkVersion 19 } 我试过的事情: preBuild < variant.versionName = versionName } } 但是变体中没有versionName。 preBuild < type.versionName = versionName } } 但是types中没有versionName。 preBuild < flavor.versionName = versionName […]

Gradle依赖项:按相对路径编译项目

是否可以在Gradle(在android studio中)指定一个依赖于当前项目边界之外的另一个gradle项目? 例如,相对路径如下: dependencies { compile project(‘../../stdlib/dagger’) } 所以我特里是这样的: 我有一个Android应用程序。 结构如下所示: MyApp(路径为/ Users / foo / workspace / MyApp) app(路径为/ Users / foo / workspace / MyApp / app) 我有一个包含3个子模块的gradle android库项目: stdlib(路径是/ Users / foo / workspace / stdlib) 匕首(路径是/ Users / foo / workspace / stdlib / dagger) utils(路径是/ Users / foo / workspace […]

Android Gradle DexException:多个dex文件定义Lorg / hamcrest / Description

com.android.dex.DexException:多个dex文件定义Lorg / hamcrest / Description 尝试通过Android Studio或我的应用程序上的Gradle命令行进行调试构建/测试时发生。 发布版本(没有测试)工作正常但是一旦包含测试( hamcrest是测试库),构建就会因上述错误而失败。 我已经检查了我的模块依赖项,并且没有重复的要求, gradle -q依赖项证实了这一点。 项目settings.gradle include ‘:[library module]’ include ‘:[main module]’ 项目build.gradle buildscript { repositories { mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:0.9.+’ classpath ‘org.robolectric.gradle:gradle-android-test-plugin:0.9.+’ } } allprojects { repositories { mavenCentral() } } [library module] build.gradle apply plugin: ‘android-library’ android { compileSdkVersion 19 buildToolsVersion “19.0.0” defaultConfig { […]

Android 5.x ClassNotFoundException在6.0+上运行正常

我已将项目的minSdkVersion从19更新为21.这导致5.0 / 5.1设备上的问题,我无法运行该应用程序。 我一直在我的Application类上得到一个ClassNotFoundException。 完整日志,应用程序类和gradle文件如下所示。 如果我将我的项目还原为minSdkVersion 19,那么应用程序将在4.4+上运行,没有任何问题。 我试过的 清洗/重建 更新和降级构建工具版本 跨项目的所有支持库都具有相同的版本号 使我所有的清单类相对而绝对 更新了所有Sdk和构建工具 日志 04-27 14:37:07.152 6278-6278/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.package.testapp, PID: 6278 java.lang.RuntimeException: Unable to instantiate application com.package.TestApplication: java.lang.ClassNotFoundException: Didn’t find class “com.package.Application” on path: DexPathList[[zip file “/data/app/com.package.testapp-1/base.apk”],nativeLibraryDirectories=[/data/app/com.package.testapp-1/lib/x86_64, /vendor/lib64, /system/lib64]] at android.app.LoadedApk.makeApplication(LoadedApk.java:563) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4526) at android.app.ActivityThread.access$1500(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) […]

将ViewPagerIndicator添加到Android Studio

我试图让Jake Wharton的ViewPagerIndicator与Android Studio合作,但不幸的是它无法正常工作。 我从这里下载了.aar文件并将其包含在我的libs文件夹中。 我像这样引用它: compile files(‘src/main/libs/viewpagerindicator_2.4.1.aar’) Android Studio给出了以下错误: Error:duplicate files during packaging of APK 我不熟悉gradle,当它给我这个错误时不知道该怎么办。 你能帮帮我一下吗? 这是我的完整build.gradle: apply plugin: ‘com.android.application’ android { compileSdkVersion 19 buildToolsVersion “20.0.0” defaultConfig { applicationId “de.xxx” minSdkVersion 15 targetSdkVersion 19 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.txt’ } } } […]

Android Studio Gradle问题升级到0.5.0版 – Gradle从0.8迁移到0.9 – Android Studio也升级到0.8.1

升级后的消息说明: Failed to refresh Gradle project ‘XXX’ The project is using an unsupported version of the Android Gradle plug-in (0.8.3). Version 0.9.0 introduced incompatible changes in the build language. Please read the migration guide to learn how to update your project. 升级到Android Studio到版本> = 0.8.0后出现同样的问题

创建包含javadoc和sources的Android库AAR

我的团队正在开发一个Android库,用于我们开发的一些示例应用程序。 该库创建为AAR文件。 这是它的build.gradle apply plugin: ‘com.android.library’ apply from: ‘deploy.gradle’ android { compileSdkVersion 20 buildToolsVersion ‘20.0.0’ packagingOptions { exclude ‘LICENSE.txt’ exclude ‘LICENSE’ exclude ‘NOTICE’ } defaultConfig { // Excluded for brevity } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } lintOptions { abortOnError false // if true, check all issues, including those that […]

Gradle android构建用于不同的处理器架构

我想使用Gradle为4种不同的Android CPU处理器架构(armeabi armeabi-v7a x86 mips)构建4个独立的apks。 我在libs文件夹中为4个CPU架构构建了本机OpenCV库。 libs -armeabi -armeabi-v7a -x86 -mips 我想每个apk只包含对应正确CPU架构的OpenCV库。 当前的构建脚本如下: apply plugin: ‘android’ dependencies { compile fileTree(dir: ‘libs’, include: ‘*.jar’) compile project(‘:workspace:OpenCV4Android:sdk:java’) } android { compileSdkVersion 11 buildToolsVersion “18.1.0” sourceSets { main { manifest.srcFile ‘AndroidManifest.xml’ java.srcDirs = [‘src’] resources.srcDirs = [‘src’] aidl.srcDirs = [‘src’] renderscript.srcDirs = [‘src’] res.srcDirs = [‘res’] assets.srcDirs = […]

如何在gradle中获得当前的味道

我的应用程序有两种产品口味: productFlavors { europe { buildConfigField(“Boolean”, “BEACON_ENABLED”, “false”) } usa { buildConfigField(“Boolean”, “BEACON_ENABLED”, “true”) } } 现在我想在任务中获取当前的flavor名称(我在Android Studio中选择的名称)以更改路径: task copyJar(type: Copy) { from(‘build/intermediates/bundles/’ + FLAVOR_NAME + ‘/release/’) 我怎样才能在Gradle中获得FLAVOR_NAME? 谢谢