解决 Android 升级 SDK API 27 过程中遇到的问题
小菜今天升级适配 SDK-API 27,可谓艰难险阻,真的好磨人,记录一下遇到的两个比较重要的问题,希望各位不会掉坑。
问题一 Could not find common.jar
-
小菜是由 26.1.0 准备升级到 27.1.1,首先是更换 SDK-Version 等,然后下载 SDK,一切正常,等到下载完 sync now 同步时,却报了如下错误:
-
在网页中打开链接,却是 404;
查阅网上资料,说涉及到的版本不要用 27.+ 之类的,应替换为准确的版本号,但是小菜用的是明确的 27.1.1,该方案失败;
-
网上部分大神说,需要在 build.gradle 中添加 maven { url "https://maven.google.com" },但是小菜也都有,并不能直接解决问题,如图:
-
之后查阅资料发现在 build.gradle 中 maven 顺序有关系,因为 jcenter 已经删除 android.arch.core 库,需要从 google.com 中下载,小菜调整顺序,rebuild 之后问题解决。
问题二 Only fullscreen opaque activities can request orientation
-
小菜好不容易解决掉问题一,紧接着进入程序各种闪退,如图:
-
小菜按字面意思理解的是,只有占据整个屏幕的 Activity 才可以设置横竖屏,半透明/对话框等不可设置横竖屏,当然小菜用到的侧拉页面也是不可以;
小菜首先把 AndroidManifest.xml 中注册的 Activity 均去掉该属性 android:screenOrientation="portrait";
-
为了横竖屏的切换,小菜添加了一个 values-26 的文件夹,存放针对 Android8.0 以上手机的 style.xml,将 android:windowIsTranslucent 改为 false
<item name="android:windowIsTranslucent">false</item> 并加入 <item name="android:windowDisablePreview">true</item>,如下:
<style name="TopicDetailTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowAnimationStyle">@style/AnimationThemeEpager</item> <item name="android:windowIsTranslucent">false</item> <item name="android:windowDisablePreview">true</item> <item name="android:windowActionBar">false</item> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="android:windowDrawsSystemBarBackgrounds">false</item> <item name="android:windowTranslucentStatus">true</item> </style>
- 以上,就解决掉进入程序闪退,和横竖屏正常切换的问题了。但是如果有需求固定横屏或竖屏呢,很简单,在 Java/Kotlin 代码的 onCreate 中设置 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
即可,亲测可用。
Tips: Android8.0 的适配还会涉及很多东西,需要不断测试研究,并及时优化处理。
以下是小菜的公众号,欢迎闲来吐槽哦~
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Gradle 自定义插件
Gradle 自定义插件 官方原文 gradle学习官方翻译网站 1.新建项目 配置build.gradle //使用官方的 `groovy` 插件 apply plugin: 'groovy' //添加api依赖 dependencies {dependencyHandler -> dependencyHandler .compile gradleApi() dependencyHandler. compile localGroovy() } //添加当前使用的gradle版本为2.1.3 dependencies { DependencyHandler dependencyHandler -> dependencyHandler.compile 'com.android.tools.build:gradle:2.1.3' //dependencyHandler.compile fileTree() } 创建资源 注意,红框内的两者名保持一致! image.png 2.新建pluginLaunch类 class MyPluginLaunch implements Plug...
- 下一篇
Vue单元测试探索
作者:江敏熙 贝聊前端开发工程师 为什么要单元测试? 项目的现状 当前我在公司里负责的项目,可以分为两类: 一类是相似度很高的项目,比如管理后台,这类项目的页面通过各种公共组件搭建而成。公共组件的复用性很高,所以质量尤为重要。如果开发人员在修改了公共组件之后留下了bug,那么将会直接降低了整个项目的质量。我希望让程序去测试这些公共组件,保证每一个公共组件是可用的。 另一类是公司的核心项目,这些项目特点是维护周期长,并且会不断加入新的功能。在项目版本迭代的过程中,当一些原来通过了测试的旧功能发生了bug,一般只能到了测试阶段才能被测试人员发现。我希望由程序去保证部分核心功能的正常运作,当核心功能发生了bug能快速的察觉到,而不是到了测试阶段才发现。 为了解决上面的问题,我尝试引入单元测试。 单元测试的作用 降低bug发生几率,快速定位bug,减少重复的手工测试。 提高代码质量,为项目带来更高的代码可维护性。 方便项目的交接工作,测试脚本就是最好的需求描述。 接下来谈谈如何进行单元测试。 搭建测试框架 测试工具一览 Mocha Mocha(发音"摩卡")诞生于2011年,是现在最流行的Ja...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启