遊戲/程序/更新/二次開發/小作品相關發佈
Feb 23
相对于java从设计之初就养成的一条exception往下流,trycatch到底的作风,在我们iOS开发过程中,oc的异常处理就是一个不可逾越的障碍阻碍着程序的运行与调试。因为oc一般用NSError甩错误,一旦遇到异常,八成就是非常非常严重的不可挽回的错误了,并且由于oc往下直通c层,里面发生的异常简直是多种多样非常难以准确定位和分析。因此,我们来总结一下常见的异常和抓取处理分析方式。
Feb 8
最近,Airbnb正式在github上发布了酷炫狂拽屌炸天的移动应用库Lottie(http://airbnb.design/lottie/)。这个库的作用是在应用中native的渲染AE动画的导出(导出依赖的是bodymovin库),同时支持android,iOS和RN3个端/平台。由于AE是业界做酷炫狂拽屌炸天的动效的行业标准软件之一,如果可以直接导出的话,UE就不用啰啰嗦嗦的给FE分解动画了,FE也不用费超级大的劲儿去手动实现复杂的动画了。看这发布了10天,3个库加起来有1w4的star了,就知道大家是多么的激动~。那么这个东西到底能带给我们怎么样的体验呢,我们来尝试一下。
Jan 11
在这里阅读的是,微信安卓653.980版的反编译后的代码。很清晰的可以看到,小程序在代码中被称为appbrand,主要逻辑放在包com.tencent.mm.plugin.appbrand下面(部分抽出的ui控件除外);另外引用了3个js资源,均在/assets/wxa_library/下。虽然很大部分代码被混淆过的,但是适当的反编译后,我们还是能看出绝大部分东西。
Jan 11
这两天拆了一个微信小程序的自定义文件格式wxapkg(详见另一篇关于微信小程序的博客文章),虽然这个文件格式确实很简单,不过也是基于我以前拆文件的经验才分分钟看透的。既然有做了这么一件事儿,那就来顺便总结总结,对文件逆向工程时我的思路和方法。

-1. 开始前的工作

我们需要一个hex编辑器,不需要编辑的话hex浏览器就可以了
我们需要样本文件,至少要两个。如果有能够生成这个文件的软体本体更好。
我们先尝试过常见文件格式进行操作,比如zip什么的,太常见了。
Dec 2
JSPatch是iOS开发中最常见的热修复/热更新方案。简单的说,JSPatch主要基于jscore运行时动态允许脚本和ocruntime的动态特性,通过js脚本控制oc上下文中的程序以达到目的。选择jscore作为脚本引擎很大目的是为了绕过appstore关于程序动态特性的上架审核规则(reactnative同理),而基于oc的runtime特性是能实现热修复的基础,因此在swift中,不是基于nsobject的类是无法使用这个热更新的,这也是现在swift还没在中大型工程中广泛使用的主要原因之一。
Sep 23
之前制作TabCalendar的过程中,在下拉部分的事件处理感觉还是写得比较稚嫩,因此自我感觉还需要再练练手。因此这次选择下拉刷新组件开刀,原因有3点:
1.在业务使用中有需求,实际app中很少有使用android自带下拉刷新的,都是仿iOS的重置版本,因此我们也需要一个。
2.虽然只是一个简单的交互,但能够在他上面耍的花样很多,值得抽象整理一次。
3.其涉及到双层滚动等各种触控问题,值得整理一次。

嗯,因此这次抽象了SwipeRefreshAbs作为基础抽象,并尝试了多个交互设计的实现。下面挑重点的记录。
Sep 13
在面向b端的app制作过程中,我们经常遇到以日期为单位进行交互和数据展示的展示性界面。大概是由于b端app多是密集的数据展示性质的,而一般的业务数据最常见的展示方式就是以天或者周为单位进行展示。因此我们曾经多次遇到,以日期为TabLayout的单位制作TabLayout+ViewPager的标准界面。然而,用TabLayout来呈现日期,其实有很大的缺陷的。

1.首先,仅仅把天罗列在一起,无法呈现出周的意味,需要添加多余的文字来描述星期信息。

2.另外由于TabLayout是单纯的横向滑动切换的,导致进行跨较长的日期进行查看的时侯操作异常困难。

3.同时,若在一旁添加点击展开日历控件进行选择,虽然可以解决问题,却会导致界面交互繁琐不具有连贯性。
因此,参考各方交互设计,实现了将TabLayout和Calendar组合在一起的控件:TabCalendar。如下是交互浏览视频:
Aug 15
如果说在使用RecyclerView的过程中,我们偶尔还能提到ItemDecoration,那么ItemAnimator这张东西估计是写一百个列表都不会提一次,有些人一辈子都没动过了。初学RecyclerView都会稍微提到一下ItemAnimator,它是做RecyclerView的item增删改动画的工作,是RecyclerView一对一的标配,拥有默认实现DefaultItemAnimator而且效果还不错(真的效果还不错)。那么,如果DefaultItemAnimator可以满足我们的业务需求,我们在其之上,还需要做些什么呢?

深究