升级到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包(见下图),至于问题的原因至此还不明白是为什么……

升级到AndroidStudio3.0之后项目打包遇到的问题及解决方案_第1张图片

问题4:中文输入法问题

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

你可能感兴趣的:(Android)