Blog


Launcher3无图标问题

 

MTK8382/8121平台。

 

机器(8寸,默认竖屏)第一次烧录完成后,以横放姿势启动,发现Launcher没有图标,而竖屏启动是没有这个问题的。在测试过程中发现,在设置中clear data后也会有这样的问题。因此可以初步判断是database初始化的问题,因为database存储着favorite icon和workspace的数据。

对比database,发现workspaces字段没有写入。查看输出的log,发现最大的不同在于,在step1的初始化过程中,出现了

setApplicationContext called twice!old=com.android.launcher3.LauncherApplication@41c76888 new=com.android.launcher3.LauncherApplication@41c76888

的warning。查找warning输出的位置,发现在onCreate中。也就是说在初始化过程中,Launcher3 onCreate了两次。

 

我们知道,为了重新布局,Launcher每次转屏都会重新onCreate的。而以横屏摆放启动,会导致在默认竖屏的状态下,很短时间内又进行了一次转屏。

看了一下AndroidManifest.xml,发现android:screenOrientation属性是nosensor,所以每次启动都是默认(竖屏)。改为sensor后,第一次初始化方向和实际方向一致,则不会出现执行两次onCreate()的情况。

 

在LauncherModel.java中,搜索“step 1”,可以找到初始化workspace的过程。而恰恰这个workspace初始化没有被synchronized保护起来。导致初始化database的过程中产生冲突,从而导致写入失败。

版权所有,转载请注明出处:

http://sickworm.com/?p=15




【MT8382/8121】使用绝对路径编译模块会导致recourse_overlay无法应用的问题

 

之前为了方便mm模块编译,写了个脚本,实现了在任意模块其子目录下执行脚本即可编译的功能。

其实原理就是一层一层目录地往上寻找Android.mk文件,找到存放Android.mk目录后,就把该目录当作./mk mm 的目录参数。

(脚本现在还有点bug,等改好再放上来,以免误人子弟)

这里我犯了一个错误,我获取目录参数的使用的是pwd,也就是绝对路径。大家使用mm命令都是用相对路径,不会无聊打绝对路径上去的。这导致了一个问题,我编译出来的Launcher3.apk没有添加recourse_overlay中的壁纸,只有1.4M左右。由于mm.log中是没有相关信息的,导致发现的过程比较曲折。

后来发现overlay记录是在AppAssets_Overlay.log中,但是里面记录的东西都是重复的,没什么价值。

版权所有,转载请注明出处:

http://sickworm.com/?p=13




Android源码的BUG

 

在Android系统移植过程中,遇到很多源码上的BUG。但是我们看到市面上都是没有这些问题的。难道这些BUG在每个开发商都要经历一次解BUG的过程吗?Android释放的源码是否是最新的?暂时没有想法。仅在此记录我遇到的Android源码上的BUG。

 

MTK8382/8121:

1、Launcher3无图标问题

 

2、Launcher3自定义壁纸旋转后拉伸无法恢复

 

3、Settings点击Location(位置)后右上角的开关button不会消失

 

 

版权所有,转载请注明出处:

http://sickworm.com/?p=11