Articles of android gradle

错误:任务’:app:processDebugGoogleServices’的执行失败。 >请修复版本冲突

将我的Google Play服务更新为rev 28后,我收到此错误。 我不知道为什么会这样,因为之前工作正常。 这是我的build.gradle文件 apply plugin: ‘com.android.application’ apply plugin: ‘com.google.gms.google-services’ android { compileSdkVersion 23 buildToolsVersion ‘23.0.2’ defaultConfig { applicationId “com.matsoltech.pakistancurrentaffairs” minSdkVersion 10 targetSdkVersion 23 versionCode 11 versionName “2.1.1” } buildTypes { release { multiDexEnabled = true minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } } dependencies { compile fileTree(include: [‘*.jar’], dir: ‘libs’) compile files(‘src/main/libs/universal-image-loader-1.9.3.jar’) compile […]

错误:程序types已存在:android.arch.lifecycle.LiveData

当我按下Android Studio中的播放按钮时,我的应用程序会编译,但会显示此错误(编辑): 错误:程序types已存在:android.arch.lifecycle.LiveData (完整日志) 我尝试删除.gradle文件夹,然后转到Build > Clean Project和Build > Rebuilt Project 。 但是,它不起作用。 我也尝试删除源代码,然后再从git克隆并将文件夹导入Android Studio。 但是,它仍会产生该错误。 这是我的应用程序的app/build.gradle : apply plugin: ‘com.android.application’ android { compileSdkVersion 27 buildToolsVersion ‘27.0.3’ defaultConfig { applicationId “com.edricchan.studybuddy” minSdkVersion 24 targetSdkVersion 27 versionCode 8 versionName “1.0.0-rc.503” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” resConfigs “en” multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ […]

Android Gradle – 是否仅在发布时使用拆分?

我希望“abi”使用“splits”,但仅限于发布版本。 这可能吗? 我尝试使用extvariables和variables“def”也默认设置为false。 对于releaseWithLog(和release),此variables在buildTypes中设置为true。 但是我不知道Gradle是如何工作的,因为当我将带有测试消息的writeln()添加到“debug”,“releaseWithLog”和“release”并运行build时,所有消息都在输出中,所以这确认了variables“splitsEnabled “虽然我为调试构建,但是设置为true – 我希望调试的值为”false“(因此不使用拆分进行调试)。 apply plugin: ‘com.android.application’ android { compileSdkVersion 19 buildToolsVersion ‘20.0.0’ ext { splitsEnabled = false } defaultConfig { … } buildTypes { debug { … } releaseWithLog { … splitsEnabled = true } release.initWith(releaseWithLog) release { … } } … splits { abi { println(splitsEnabled) enable splitsEnabled reset() […]

Android gradle build:运行assembleDebug会调用项目依赖项的发布任务

运行assembleDebug时,会调用我依赖的项目的发布相关任务。 例如,我有一个名为’x’的项目,它取决于’y’。 当我gradle assembleDebug它调用y:mergeReleaseProguardFiles,packageReleaseAidl等…等等。

Android:app在Lollipop上运行时加载库,但不是IceCreamSandwich

我目前正在使用Android Studio开发Android应用。 目前,该应用程序在Lollipop设备上完美启动,但由于前棒棒糖设备上的ClassNotFoundException (在ICS上测试并且失败),因此在启动时崩溃。 缺少的类总是来自运行时的外部库。 这是gradle文件: buildscript { repositories { maven { url ‘https://maven.fabric.io/public’ } } dependencies { classpath ‘io.fabric.tools:gradle:1.+’ } } apply plugin: ‘com.android.application’ apply plugin: ‘io.fabric’ android { compileSdkVersion 23 buildToolsVersion ‘23.0.0’ defaultConfig { applicationId ‘com.kappsports.kapp10’ minSdkVersion 18 targetSdkVersion 23 versionCode 1 versionName ‘1.0.0’ multiDexEnabled true } buildTypes { release { minifyEnabled false […]

错误:在ABI的NDK工具链文件夹中找不到工具链,前缀为:llvm

我想使用gradel( gradlew clean build )编译一个开源的android项目(Netguard)但是我遇到了这个错误: A problem occurred configuring project ‘:app’. > Exception thrown while executing model rule: NdkComponentModelPlugin.Rules#cre ateToolchains > No toolchains found in the NDK toolchains folder for ABI with prefix: llvm 我说,但没有find帮助的东西。 这是main build.gradle : buildscript { repositories { jcenter() } dependencies { classpath ‘com.android.tools.build:gradle-experimental:0.6.0-alpha1’ } } allprojects { repositories { jcenter() […]

如何在运行我的gradle构建之前在Android Studio中设置环境variables

My Gradle构建查看名为BUILD_NUMBER的环境variables,以确定要分配给我的Android应用程序的版本,如下所示: def buildNumber = System.getenv(“BUILD_NUMBER”) ?: “local” 因此,只要设置了该环境variables,就会在defaultConfig中使用内部版本号,如下所示: versionName “1.4.0.”+buildNumber 通常,Jenkins将调用此Gradle构建并提供BUILD_NUMBER环境variables。 如果我从命令提示符运行Gradle构建,我知道我可以设置BUILD_NUMBER = x。 但是,如果我使用Android Studio构建,如何通过Android Studio本身设置BUILD_NUMBER环境variables?

在新的Android插件3.0.0-alpha1中重命名输出文件

我在之前的gradle插件中使用它,它工作正常。 applicationVariants.all { v -> v.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, output.outputFile.name.replace(“app-release.apk”, “companyName-app-v${variant.versionName}.apk”)) }} 最近更新到3.0.0-alpha1它显示错误。 我阅读了链接https://developer.android.com/studio/preview/features/new-android-plugin-migration.html但无法find确切的错误来源。 我有什么问题可以修复吗?

ConsumerProguardFiles与ProguardFiles

我试图构建一个包含带有proguard的库模块La的应用程序,我注意到该库没有被混淆。 试图理解为什么。 在这个时刻,这是我的buildType: release { minifyEnabled false useProguard true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } 经过一些搜索,我遇到了ConsumerProguardFiles函数,该函数声明: ProGuard规则文件将包含在已发布的AAR中。 然后,任何使用AAR的应用程序项目将使用这些proguard规则文件(如果启用了ProGuard)。 这允许AAR指定收缩或混淆排除规则。 这仅适用于Library项目。 这在Application项目中被忽略。 现在,我的库La的buildType如下: release { minifyEnabled false useProguard true consumerProguardFiles ‘proguard-rules.pro’ } 现在我的库La正在使用它的proguard规则,库代码被混淆了。 所以我的问题是: 1)这种不同行为的原因是什么。 为什么ProguardFiles不会混淆库的规则而是忽略它? 2)我猜测ConsumerProguardFiles所做的是将库的规则与主应用程序proguard规则合并。 这个假设是否正确? 3)简而言之:对应用程序使用proguardFiles,对库使用ConsumerProguardFiles。 正确? 感谢您抽出宝贵的时间阅读!

在Android上分叉gradle依赖项

我有一段时间没有开发Android,我正在尝试使用Gradle依赖项的新function做正确的事情。 我想知道当您需要修改一个特定的依赖项以满足您的需求时,最佳实践是什么。 例如,假设我们有两个库通过子类化适配器来扩展RecyclerViewfunction: Adapter –> AdapterA Adapter –> AdapterB 由于Java不支持多重inheritance,我想让两个库一起工作的唯一方法就是修改其中一个,这样子类层次结构如下所示: Adapter –> AdapterA –> AdapterB 如果我是正确的,这是要走的路,那么修改和集成库的最佳方法是什么,以下是我能想到的选项: 在GitHub上分叉并使用JitPack添加分叉修改的库 将库作为本地模块添加到应用程序并修改源 请certificate或建议什么是更好的,如果有任何其他替代方案来实现这一点。