本文介绍在Android开发过程中,我们常常会遇到一些棘手的问题,如重复类冲突、动态版本控制及依赖打包等。本文将介绍如何解决这些问题,并提供一些有用的优化方法。
1. 解决重复类冲突问题
在引入多个JAR包或AAR包时,可能会遇到类重复的问题,导致编译失败。这里提供了两种解决方法:
方法1:手动删除重复类
最简单的方法是手动打开JAR包(可以使用ZIP工具),然后删除重复的类文件。这种方法适合于少量的重复类情况。
方法2:通过Gradle脚本自动处理
在build.gradle
文件中增加自动化脚本,检测并删除重复类。
之前写过,详细参考这篇解决 Android 项目中 Duplicate Class 问题。-
2. 动态判断打包APK和AAR并增加日期版本标识
在项目的build.gradle
文件中,通过动态判断插件类型来分别处理应用模块和库模块的输出文件名,并在文件名中添加日期和版本信息。
android {
// 其他配置省略
afterEvaluate {
if (project.plugins.hasPlugin('com.android.application')) {
applicationVariants.all { variant ->
variant.outputs.all { output ->
def date = new Date().format("yyyy_MM_dd", TimeZone.getTimeZone("GMT+08"))
def buildType = variant.buildType.name
def newFileName = "${android.defaultConfig.applicationId}_${buildType}_${date}_v${android.defaultConfig.versionName}.apk"
output.outputFileName = newFileName
}
}
}
if (project.plugins.hasPlugin('com.android.library')) {
libraryVariants.all { variant ->
variant.outputs.all { output ->
def moduleName = project.name
def versionName = android.defaultConfig.versionName
output.outputFileName = "${moduleName}-${variant.name}-${versionName}.aar"
variant.buildConfigField 'String', 'VERSION_NAME', "\"${versionName}\""
}
}
}
}
}
3. 打包AAR时将远程依赖包一起打包
使用fat-aar
插件可以将库及其依赖模块一起打包成一个完整的AAR包。以下是使用fat-aar
插件的步骤:
第一步:添加插件到根目录的build.gradle
文件
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.github.kezong:fat-aar:1.3.8'
}
}
第二步:在主library的build.gradle
中应用插件
apply plugin: 'com.kezong.fat-aar'
第三步:在dependencies
中使用embed
来包含依赖
dependencies {
implementation fileTree(dir: 'libs', include: '*.jar')
embed project(path: ':lib-java', configuration: 'default')
embed project(path: ':lib-aar', configuration: 'default')
embed 'com.google.guava:guava:20.0'
embed 'com.facebook.fresco:fresco:1.12.0'
implementation('androidx.appcompat:appcompat:1.2.0')
}
4. Android Studio 4.0及以上版本中Instant Run功能的开启或关闭
Instant Run功能可以大幅提升应用从编译到运行的速度,但有时也会带来一些不可预见的BUG。在Android Studio 3.0之后,需要通过修改配置文件来关闭Instant Run,Instant Run 改名为HotSwap(热交换)。
关闭Instant Run
总结
本文介绍了在Android开发中常见的几个问题及其解决方案,包括如何处理重复类、动态版本控制、打包完整的AAR以及关闭Instant Run功能。通过这些方法,可以更高效管理项目依赖,提高构建效率,并减少不必要的错误。
标签:版本控制,Instant,variant,Studio,aar,Android,com,android From: https://blog.csdn.net/SHH_1064994894/article/details/140569011