升级targetSdkVersion为26以后
前言
google从下个月开始,所有在play上架的app都会要求升级的。为了与时俱进,我们的app也要升级到targetSdkVersion=26了,虽然我们的APP是助手类,不可能上架google play。
关于升级后8.0的各种介绍,参考这里https://developer.android.com/about/versions/oreo/
8.0行为变更看这里https://developer.android.com/about/versions/oreo/android-8.0-changes
基本上,看完上面链接里的内容以后,你就能针对你的代码做修改了。下面主要记录一下实际修改中的几处重点。
垂直滚动的ViewPager存在滑动不灵敏的问题
使用jenkins为android工程打包,支持多包名,改资源(踩坑指南)
使用jenkins为android工程打包,支持多包名,改资源(简单上手)
下载安装jenkins
官网地址:https://jenkins.io/
没什么好说的,网上教程一大堆,唯一要做的是要修改jenkins_home目录所在分区,因为将来所有的内容都要放在这里,如果分区太小,指不定哪天就满了,到时就打不了包了。
实践中,发现/home/jenkins目录也要处理一下,我就碰上了/home/jenkins目录占满了根分区,打开发现都是gradle打包时生成的一些缓存,就将/home/jenkins使用ln
命令做了个软连接到另一个分区目录下。
Mac系统的TM快照占了空间导致iTunes不能备份手机
Mac系统的TM快照占了空间导致iTunes不能备份手机
国庆的时候,我的手机被我女票一脚踢掉了2300块,屏幕黑了一个角,iPhone X, OLED屏幕。
本来约到了今天天才吧维修,3点多的时候,打算给手机备个份,就接上线开工了。结果提示空间不足。
我电脑是256GB的MAC,剩余还有170GB,手机也是256GB,使用了有106GB
电脑上打开关于本机,显示剩余170GB,但是用自带的磁盘工具,就显示剩余20GB
在网上查了查资料,都是说time machine的快照占了空间,就把备份关了,空间还是没有释放。
搞不定,打支持电话,结果客服姐姐给我远程指导了一番没有成功,然后让我等一下查一查,过一会一本正经的和我说说:备份不是只备份数据的,256GB的电脑是备不了256的手机的,建议您换一个大容量的电脑。
WTF???难道是因为我穷?
挂了电话,自己继续研究,找到了命令行,在命令行下删除了。
sudo tmutil listsnapshots /
sudo tmutil deletesnapshots
继续备份,成功了。
然后时间赶不上了,好不容易抢到的天才吧,又得推迟了,而且明天已经没有了,约了下周的。
时间机器的本地快照:
https://support.apple.com/zh-cn/HT204015
苹果还号称这个有多屌,说什么用到磁盘的时候,自己就删除了。结果和自家的软件还起了冲突,我关了自动备份重启了5回,都没有删除掉我的快照腾出空间。
另外,主要是因为穷。谁给我点钱我换个512GB的MAC,512应该够了吧。
ListView实现仿知乎广告Item
前言
知乎APP有一个广告效果,是list在滑动的时候,在某一个item显示出一个远大于item的背景,给人一种item是空的感觉,网上已经有了demo,但我看了看全是拿RecyclerView写的,RecyclerView有一个好处就是,它滑动时的回调,可以准确的拿到dx dy。
1 | public void onScrolled(RecyclerView recyclerView, int dx, int dy) |
但是结合我们的项目,还是使用的之前的ListView,如果整个修改成RecyclerView,成本太高,于是就在ListView上尝试的写了一次,稍微记录一下实现方法。
因为我们的Item里面,还有一个类似弹幕的东东,就没有像网上的demo一样直接画drawable,而是采用了LinearLayout来实现。
原理
ListView也有onScroll()方法,不它该方法的回调时给的参数是item的position
1 | onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) |
是否允许创建快捷方式的权限检测
前言
部分手机的权限管理里,会有一个创建快捷方式权限。近期,产品妹子发现360手机助手可以检测到权限并弹出引导提示,符合的机型有,小米,VIVO,华为。于是我们也得加啊。。。
调研
MIUI:
小米手机root方便,root后,直接看到了权限管理的配置的值,小米上,通过AppOpsManager的checkOpNoThrow()可以检测到是否有快捷方式权限。至于op的值是多少,我就不写了,自己查一查。
vivo
找到了vivo的launcher的所有快捷方式所在的ContentProvider,content://com.bbk.launcher2.settings/favorites
遍历了一圈发现了一个字段叫shortcutPermission
,修改了权限后,这个值会有变化。
有趣的是,初始化假如是禁止的情况,它的值是1,但是只要编辑过,就会变化成16(允许),17(禁止),18(询问,部分手机有这个选项)。
Notification通知栏的那些事
应用市场的尔虞我诈(突破华为安装时来源检测)
前言
去年年底的时候,产品妹子拿着一部华为手机来找我们组,这部手机在安装应用的时候,会显示安装来源,同时,对包进行了扫描检测。但是有一个奇怪的现象是,同一款应用,安装过程不同。
- 从我们市场安装,则显示出市场名字,并提示建议从官方市场安装,用户必须勾选允许才能安装,不然只能取消或去华为商店下载。
- 从豌豆荚中安装,显示的是未知来源,没有提示从官方市场安装。
- 从360手机助手、应用宝安装显示出市场名字,提示通过安全检测。
这个安全引导在一定程度上能将我们的流量直接导入到官方市场下载。应用市场就是靠下载、安装的流量转化来赚钱的,而在安装的时候,ROM方就设置一些门槛,将量转化到自己的市场里。而且从上面的结果猜测,360和应用宝明显是走了公关渠道,而豌豆荚则是使用了黑科技。