初次Android 6.0升级Android 8.0的心酸总结

时间:2024-05-21 08:35:35

前置条件
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)
初次Android 6.0升级Android 8.0的心酸总结
3.常规的SDK配置,这里就不做描述了。(由于版本升级,只要找到对应的高版本的SDK即可,可查看 https://blog.****.net/zcmain/article/details/94772865)初次Android 6.0升级Android 8.0的心酸总结

(题外话)4.可能签SDK需要修改包名,操作可查看 https://blog.****.net/u011486491/article/details/55049805

操作步骤
0.将AS显示项目类型修改成Android,方便查找后续修改的文件
初次Android 6.0升级Android 8.0的心酸总结
1.修改Manifest.xml文件,将 targetSdkVersion屏蔽
初次Android 6.0升级Android 8.0的心酸总结
修改为
初次Android 6.0升级Android 8.0的心酸总结

2.修改Gradle Scripts中的build.gradle,(这里有两个build文件,选择项目的),根据前置条件2和3中的图片查看版本,进行修改;(这个需要修改的数值对应两张图片分别是:Gradle的插件版本,和Plugin Version)初次Android 6.0升级Android 8.0的心酸总结
下一步,点击File→Settings,在打开的窗口中选择,Build,Execution,Deployment选项,选择里面的Gradle,修改Gradle user home的路径,(这个文件是我再网上下载下来的, https://services.gradle.org/distributions/)
初次Android 6.0升级Android 8.0的心酸总结
修改完成后记得点击
初次Android 6.0升级Android 8.0的心酸总结

3.修改Gradle Scripts中的build.gradle(这次是app中的),初次Android 6.0升级Android 8.0的心酸总结
根据下图,可以看到在Android studio3.0中,compile依赖关系已被弃用,被implementation和api替代,provided被compile only替代,apk被runtime only替代。
初次Android 6.0升级Android 8.0的心酸总结

详细可以查看https://www.jianshu.com/p/f34c179bc9d0。

4.如果Build中没有显示Generate Signed Bundle/APK这个选项,
初次Android 6.0升级Android 8.0的心酸总结
先去File→选择Sync Project with Gradle Files,然后等待编译完成即可显示。
初次Android 6.0升级Android 8.0的心酸总结

5.按照原来的操作步骤,点击Generate Signed Bundle/APK,即可打出升级版本后的包。

*6.由于Android 8.0版本升级后,关于获取权限的机制有所修改,在打完的安装包无法打开的情况下,第一个需要解决就是Android请求外部储存SD卡读写权限的问题,可以查看 https://blog.****.net/c529283955/article/details/104266083,进行修改。(当前没有做权限获取,所以在Manifest.xml中添加了初次Android 6.0升级Android 8.0的心酸总结
用于屏蔽获取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;