月度归档:2018年05月

Android P 初步适配

目前只根据「大圣净化」来尝试初步适配。

开始抓虾:

下载 Android P 的 SDK 和创建模拟器,然后将应用运行在Android P模拟器上,好像没啥问题。

设置刘海(cutout):

Android P 会支持刘海,在模拟器中可以开启:
模拟设备刘海(Settings > System > Developer options > Drawing > Simulate a display with a cutout)
不做特殊的处理,也没啥问题~

设置targetSdkVersion ‘P’:

设置targetSdkVersion ‘P’

// build.gradle 中设置
  targetSdkVersion 'P'
or
  TARGET_SDK_VERSION=P
  targetSdkVersion project.TARGET_SDK_VERSION

服务前台运行崩溃:

针对 Android P 或更高版本并使用前台服务的应用必须请求 FOREGROUND_SERVICE 权限。 这是普通权限,因此,系统会自动为请求权限的应用授予此权限。

<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
//sdk-28 目前还不支持,支持之后可以如下设置:API 28 之后才需要该权限
<uses-permission-sdk-28 android:name="string" android:maxSdkVersion="integer" />

关于反射:

目前好像还没啥问题,等下一个 preview 版本再观察。

参考文档:

1. Android P 行为变更
2. 将应用迁移到 Android P

应用认领到心塞

去年写的一个应用「广告住手」,截止目前为止只发布到酷安和Google Play两个市场。
应用功能已经稳定也有一定的用户基础了,打算发布到其他应用市场,比如:小米、应用宝、ViVo等。

当时发布Google Play 启用了Google Play App Signing,大概因此导致签名不一致,无法通过签名认领?

开始踩坑之路:

应用宝:

  • 需要软件著作权,办完至少 1 个月;

小米应用市场:

  • 签名不一致
  • 新增驳回未上线 目前所属开发者北京酷传科技有限公司
  • 联系酷传可进行商议包名归属,让对方帮忙提供信息
  • 提供三个主流应用市场的截图,以便评估认领

ps:这些我都没办法提供…🤮

ViVo:

  • 签名不一致,无法认领

这种状况和你去办一些材料一样,死循环~~

罪魁祸首

  • 北京酷传科技有限公司:

应该是从 Google play 爬包,爬包就爬包吧,还TMD提交到应用市场?

  • Google Play App Signing 也是坑

​总结下经验:

  1. 如果你打算开发新应用,先到各大市场上去提交,占领下包名,可以不正式发布上架。
  2. 不要开启 Google Play App Signing

​解决方法:

  1. 各大市场上去投诉侵权。
  2. 联系酷传提供信息,进行转让

java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

新版本开发,将 TARGET_SDK_VERSION 从 26 改成了 27,在 Android 6.0/7.0/8.1 手机测试没问题;

一发布崩溃日志接踵而来,全都是 Android 8.0 手机,简直疯了~

紧急修复:在 AndroidManifest.xml 将特殊的几个Activity的 portrait 配置删除

<activity
    android:name=".ui.SplashActivity"
    android:screenOrientation="portrait"(删除)/>

查找原因

这个异常大概意思是说:不是全屏的情况不能设置横竖屏?其实是组合的情况才会崩溃:

targetSdkVersion = 27
android:windowIsTranslucent = true
android:windowFullscreen = false
android:screenOrientation ="portrait"

偏偏我真的是这样设置的~

所以避开这种组合情况就行了~~

谷歌的理由

Google throw this exception on Activity onCreate method after v27, their meaning is : if a Activity is translucent or floating, it’s orientation should be relied on parent(background) Activiy, can’t make decision on itself.