升级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

官方网站说明:

image

粗略翻译为:避免初始化和配置完成当前构建所不需要的任务,例如,如果您有多个构建变体,例如“发布”和“调试”构建变体,并且您正在构建应用程序的“调试”版本,则该插件可避免初始化和配置“发布”版本的任务你的应用。

例如以下是根据版本和时间配置自定义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 了 ,升级之后这个问题就不存在了。

就到这儿,有问题我们共同讨论学习进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值