升级到AndroidStudio3.0之后项目打包遇到的问题及解决方案

以下是本人升级AS3.0之后,将原先项目迁移过来遇到的几个问题

问题1:gradle编译问题(描述简单操作难)

升级为3.0之后 gradle-wrapper.properties文件中的
distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip
升级为了
distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip
为此特意去网站下载了4.1-all的包放到了本地,同时修改工程依赖的build.gradle中的
classpath ‘com.android.tools.build:gradle:2.2.0’ –> 3.0.0
gradle下载地址:http://services.gradle.org/distributions/

问题2:产生编译文件命名问题

以前命名release包的方法如下

    自定义生成apk文件名,eg:appName.wanDouJia.V1.0.1-2017011816.release.apk
    /*applicationVariants.all { variant ->
        variant.outputs.each { output ->
            if ("release".equalsIgnoreCase(variant.buildType.name)) {
                def fileName = "appName"
                def outputFile = output.outputFile
                if (outputFile != null && outputFile.name.endsWith('.apk')) {
                    fileName += "." + variant.getFlavorName().substring(1) + ".v" + versionName + "-" + buildTime() + ".release" + ".apk"
                    output.outputFile = new File(outputFile.parent, fileName)
                }
            }
        }

    }

其中buildTime()方法代码为:

//获取系统时间
def buildTime() {
    def df = new SimpleDateFormat("yyyyMMdd")
    df.setTimeZone(TimeZone.getDefault())
    return df.format(new Date())
}

升级为3.0之后,会报关于outputFile引起的错误,故更改为了以下方法得到解决:

    flavorDimensions 'api'
    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            if ("release".equalsIgnoreCase(variant.buildType.name)) {
                outputFileName = "appName"+ "." + variant.getFlavorName().substring(1) + ".v" + versionName + "-" + buildTime() + ".release" + ".apk"
            }
        }

    }

网上也有不同的搜索结果,例如以下代码,这是根据不同的命名需求来定的:

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            outputFileName=" ${variant.applicationId}- ${ buildType.name}- ${defaultConfig.versionName}-${ defaultConfig.versionCode }-${releaseTime() }.apk"
        }
    }

问题3:生成的apk包文件损坏问题

改用了AS3.0之后,我们刚好需要编译一个新的版本,于是提升了版本号然后点击了绿色的小箭头之后生成了一个apk包直接丢到了官网服务器,然后打开我的手机app正常提示升级,但是下载下来之后安装出现了一些问题,提示我安装包损坏,这就奇怪了,AS内能直接build通过,安装正常,生成的apk包却有问题,于是开始各种搜索解决方案,使用了如将instant run功能关闭等解决方案,都没有解决问题,最终打包没有问题的apk所用的方法是通过AS右上角的Gradle工程目录中的打包方式才打好了apk包(见下图),至于问题的原因至此还不明白是为什么……

使用gradle工具打包

问题4:中文输入法问题

改用了AS3.0之后,发现搜狗输入法在中文模式下经常卡住,打出的文字选项只显示前几个不完整的字母,发生的概率还是挺高的,以为是搜狗输入法出问题了,一怒之下直接卸载换成了百度输入法,谁知道替换之后百度输入法甚至一个中文都无法输入,这时候才发现应该不是输入法的问题,故继续搜索,解决方案如下:
将AS3.0安装目录下的jre目录替换掉,替换成老版本的jre目录文件,刚开始替换了AS3.0bate版本的,结果还是不行,最后替换为以前用的AS2.3版本安装目录下的jre目录就好了
以上是本次升级踩坑记录,其实还有其他问题,比如lambda和java 8自带lambda冲突、编译环境升级导致需要升级依赖的类库等,只是上述问题着实费了些功夫和心思才得以解决,故在此记录下来,以供参考

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值