升级AndroidStudio 3.5.1 之后的问题
AndroidStudio 3.5.1 编译几个小问题
升级问题配置参数导致的几个小问题
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
}
gradle-warpper.properties 文件配置
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
项目的sdk 版本配置就算了, 直接说运行碰上的两个问题
API ‘variant.getPackageApplication()’ is obsolete and has been replaced with ‘variant.getPackageApplicationProvider()’.
这个网上查了一下 ,
Android Studio 更新至gradle 4.10.1后Variants API变化
同步警告:
WARNING: API ‘variantOutput.getPackageApplication()’ is obsolete and has been replaced with ‘variant.getPackageApplicationProvider()’.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variantOutput.getPackageApplication(), use -Pandroid.debug.obsoleteApi=true on the command line to display a stack trace.
Affected Modules: app
官方网站说明:
粗略翻译为:避免初始化和配置完成当前构建所不需要的任务,例如,如果您有多个构建变体,例如“发布”和“调试”构建变体,并且您正在构建应用程序的“调试”版本,则该插件可避免初始化和配置“发布”版本的任务你的应用。
例如以下是根据版本和时间配置自定义apk名称方法,更新后需要将 defaultConfig.xxx 修改为 variant.xxx :
这个地方我的项目中配置主要是用来 指定生成文件的目录和文件的名称 获取到app 的versionName和VersionCode 为此 修改,
//// 这是原来配置
def generateApk(variant) {
if (variant.buildType.name == "release") {
variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/release")
variant.getPackageApplication().outputScope.apkDatas.forEach { apkData ->
apkData.outputFileName = "gc_part_" + android.defaultConfig.versionName + ".apk"
}
}
}
修改完了以后的配置 包含了打包的文件名称 :
//自定义apk名称含版本号信息
applicationVariants.all {variant ->
variant.outputs.all {
outputFileName = "gc_part_${variant.versionCode}-${variant.versionName}-${releaseTime()}.apk"
}
}
然后运行, 又出了个问题,
日志如下:
Cause: buildOutput.apkData must not be null
国内网上搜到的解决方式都是,
点击 Build 然后点击 Clean Project 重新运行即可
然鹅对于我来说还是没用 ,无奈Google了一番, 找到了 ,
deleting debug/output.json and release/output.json solved my problem
删了之后,果然可以了。
再记一笔,
貌似 3.5.0 版本 有个问题 就是同时打开多个项目会导致一个文件共用数超过最大数,两个项目会同时进入indexing和Build project structure 的死锁, 不停的这样折腾,然后Mac 哗哗的响, 这个问题我没有管他,要么不管,要么build 不成功 也先不用管。
过了几天 AS 提醒我 升级3.5.1 了 ,升级之后这个问题就不存在了。
就到这儿,有问题我们共同讨论学习进步。