您的位置:首页 > 移动开发 > Android开发

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

2017-11-09 14:24 746 查看
以下是本人升级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包(见下图),至于问题的原因至此还不明白是为什么……



问题4:中文输入法问题

改用了AS3.0之后,发现搜狗输入法在中文模式下经常卡住,打出的文字选项只显示前几个不完整的字母,发生的概率还是挺高的,以为是搜狗输入法出问题了,一怒之下直接卸载换成了百度输入法,谁知道替换之后百度输入法甚至一个中文都无法输入,这时候才发现应该不是输入法的问题,故继续搜索,解决方案如下:

将AS3.0安装目录下的jre目录替换掉,替换成老版本的jre目录文件,刚开始替换了AS3.0bate版本的,结果还是不行,最后替换为以前用的AS2.3版本安装目录下的jre目录就好了

以上是本次升级踩坑记录,其实还有其他问题,比如lambda和java 8自带lambda冲突、编译环境升级导致需要升级依赖的类库等,只是上述问题着实费了些功夫和心思才得以解决,故在此记录下来,以供参考
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android studio 3-0 问题