前置条件
1.需要先确定你要升级的Android版本(这里我是从6.0升级到8.0,也就是compileSdkVersion从23升级到26),无论是升级到什么版本,你的AS都至少需要升级到3.0以上的版本才会支持。
2.确定你的Android版本后,就要确定对应的Gradle版本(Gradle的版本需要注意Android Gradle Plugin Version和Gradle Version 的对应关系,详情可以查看 https://www.cnblogs.com/diyishijian/articles/7751407.html)
3.常规的SDK配置,这里就不做描述了。(由于版本升级,只要找到对应的高版本的SDK即可,可查看 https://blog.****.net/zcmain/article/details/94772865)
(题外话)4.可能签SDK需要修改包名,操作可查看 https://blog.****.net/u011486491/article/details/55049805
操作步骤
0.将AS显示项目类型修改成Android,方便查找后续修改的文件
1.修改Manifest.xml文件,将 targetSdkVersion屏蔽
修改为
2.修改Gradle Scripts中的build.gradle,(这里有两个build文件,选择项目的),根据前置条件2和3中的图片查看版本,进行修改;(这个需要修改的数值对应两张图片分别是:Gradle的插件版本,和Plugin Version)
下一步,点击File→Settings,在打开的窗口中选择,Build,Execution,Deployment选项,选择里面的Gradle,修改Gradle user home的路径,(这个文件是我再网上下载下来的, https://services.gradle.org/distributions/)
修改完成后记得点击
3.修改Gradle Scripts中的build.gradle(这次是app中的),
根据下图,可以看到在Android studio3.0中,compile依赖关系已被弃用,被implementation和api替代,provided被compile only替代,apk被runtime only替代。
详细可以查看https://www.jianshu.com/p/f34c179bc9d0。
4.如果Build中没有显示Generate Signed Bundle/APK这个选项,
先去File→选择Sync Project with Gradle Files,然后等待编译完成即可显示。
5.按照原来的操作步骤,点击Generate Signed Bundle/APK,即可打出升级版本后的包。
*6.由于Android 8.0版本升级后,关于获取权限的机制有所修改,在打完的安装包无法打开的情况下,第一个需要解决就是Android请求外部储存SD卡读写权限的问题,可以查看 https://blog.****.net/c529283955/article/details/104266083,进行修改。(当前没有做权限获取,所以在Manifest.xml中添加了
用于屏蔽获取Android权限的弹窗,其他包括网络通讯、通知栏等权限的修改参照:
https://www.cnblogs.com/candyzhmm/p/11242938.html
和 https://blog.****.net/qq_38306233/article/details/83785911
或 https://www.jianshu.com/p/a8fd3d1fa0a3进行修改)
7.动态获取权限可以参考https://www.cnblogs.com/Free-Thinker/p/6047968.html这篇文章。
*7.1.如果在使用ActivityCompat时,一直报错,记得在上面添加
import android.support.v4.app.ActivityCompat;