在开发android应用时,一般都会用很多的第三方框架。有些框架会提供各个CPU的架构的SO库,比如arm、arm-v7a、x86、mips,有的甚至还提供64位的版本;而有的为了缩小应用包的体积只提供了一些常用的,比如arm,x86。如果应用中有的第三方框架提供了arm和x86的版本,而有的提供了arm,arm-v7a,x86三个版本,那么当运行在arm-v7a版本的CPU上,就会提示找不到只有arm和x86版本的SO库,这样很容易导致应用挂掉,报java.lang.UnsatisfiedLinkError错误,提示native方法找不到实现。

Read More

在使用android studio过程中,使用gradle编译的时候总会出现一些问题,下面是几个常见问题的解决方法。

  • 被编译的代码或资源有问题( finished with non-zero exit value 1):

出现这种编译异常表现是exit value 1,一般会给出错误提示,所以很容易排查。这种错误很常见,错误提示有时候是在日志中明显的给出来了,如下示例所示:

Read More

AndFix加载补丁包过程分析

andfix提供了一套可以热替换java中原有方法的工具,在实际应用中可以用来热替换修复出现bug的方法,从而使用应用不需要升级应用就能解决部分问题。

本文主要是分析运行在android应用中的一套工具环境,从java层到native层分析andfix框架热替换方法的过程。

Read More

apkpatch工具实现分析

apkpatch工具是配套阿里AndFix框架的一个生成aptach补丁包的工具,链接地址是:https://github.com/alibaba/AndFix/tree/master/tools 。主要包含反编译对比两个APK的类和方法、修改类名写入PACTH.MF文件、生成补丁apatch包。

由于没有从网上找到对应的源码,以下分析过程均通过jd-gui工具反编译jar包阅读反编译代码完成。

Read More

今天下午在调应用,突然Android Studio弹出Low disk space on a Android Studio system directory partition提示,磁盘空间不够了?赶紧跑去看了磁盘用量。傻眼了,早上来还有几百M的C盘,现在只剩下几十M了。早在之前就已经注意到了C盘容量会莫名的减少,但是没有注意是哪个程序占用了更多的空间,今天决定要找找,于是就有了下文。

1.二分法找出磁盘占用空间最大的目录

Win 7的应用程序缓存目录是在C:\Users\jacpy\AppData目录中,jacpy为当前系统用户名。AppData为隐藏目录,要在目录菜单的“组织”中找到“文件夹和搜索选项”的弹出框的“查看”Tab页中修改,不会修改也没关系,打开一个目录,把上面的路径直接copy到路径框里面,把用户名换成自己的电脑用户名,回车就行了。

Read More

前几天开发一个类似微信搜索显示搜索结果分类展示的功能,很自然的联想到了使用ListView去展示最后搜索的结果。每个分类最前面要显示一个分类的标题,就想使用getItemViewType()getViewTypeCount()这两个方法做展示效果,结果在搜索过滤条件刷新Adapter的列表时,发生了以下错误:

Read More

前几天给博客增加评论功能,测试OK后准备将生成的文件提交到github,执行hexo deploy命令时报如下错:

1
2
3
bash: /dev/tty: No such device or address
error: failed to execute prompt script (exit code 1)
fatal: could not read Username for 'https://jacpy.github.com': No error

Read More

在做android SQLite数据插入性能优化时,前面一篇android SQLite性能优化(一)——使用事务和预处理提到了使用事务和预处理做优化,本篇介绍使用NDK的方式进行数据插入优化。
使用NDK操作数据库时,需要使用sqlite的官方源码,我这里测试使用的是官方的3.8.7.4版本的代码。同样在使用sqlite操作数据库时使用了事务和预处理。

Read More

老大交给了一个任务,其他项目组在应用初始化时,需要从服务器下载通讯录,然后插入到本地数据,由于数据量比较大,整个插入过程非常耗时,看我能不能优化一下。于是就有了下文。

SQL执行性能影响从根本原因上不外乎以下几种情况:

1.CPU执行时间;

2.存储器读写时间;

3.网络传输消耗。

Read More

这一刻准备了好久,今天终于成为了现实。

一直打算自己建一个博客,写点东西放在上面,由于各种原因未能实现,前些日子忙完了,今天正式开通了。主要打算将自己遇到的问题、解决的方案整理成博客分享出来,一来可以锻炼自己的表达能力,二来给别人提供一些参考。

Read More