前几天使用命令行adb install安装APK文件时,安装失败,遇到了这个错误提示:

1
INSTALL_FAILED_UID_CHANGED

突然反应过来了,刚刚使用手机的root权限看app的缓存数据,命令行还在那个/data/data/com.xxx.app目录下,由于命令行的占用,所以这个包名路径没有被删除掉。赶紧退出到/data/data/目录下面,ls一看,这个包名路径还存在,用rm -rf一删除,再安装试下,成功了。

Read More

前几天在使用gradle编译项目插件,突然遇到这个错误:

1
2
3
4
5
6
7
8
9
10
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileReleaseJavaWithJavac'.
> Failed to create MD5 hash for file 'E:\workspace\as\app\libs\xxx.jar'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Read More

这几天在解决客户的一个问题,说用了发给我的sqlite的数据库文件会发生数据上传失败问题,于是结合发过来的数据库文件准备看一下。

先是通过adb push命令把文件copy到手机,然后cp到应用的缓存目录(需要root权限),覆盖原来的数据库文件。结果应用一运行就报了如下的错误:

Read More

前几天在项目开发中遇到一个很奇葩的问题,在应用中做了一个清除应用缓存功能,将缓存目录文件中所有的文件都删除,然后再重新初始化的时候,这个目录就不能创建文件和目录了。在红米手机和魅族手机上试了,都会出现这个问题,华为手机上却没有这个问题,我的MOTO手机上也有这个问题。

Read More

之前有写文章说别人对网上文章的看法,这次写的是我对网上文章的看法。一直以来对网上的文章的说法都抱有怀疑态度,一般都是把网上的东西作为参考,找准关键的地方,他的说法与自己写的有什么区别?一对比就知道哪些地方有欠缺,是什么原因。而不是直接copy过来使用。

Read More

前几天遇到了线程死锁问题,导致系统ANR。然后拿到系统/data/anr/traces.txt日志文件后,进行分析,然后找到原因,并解决了问题。

java线程产生死锁的原因,要么同时满足死锁的四个条件,要么是android系统机制的原因,认为发生了类似死锁的情况而导致系统ANR

Read More

基本介绍

本文是针对android开发中的build.gradle文件中的常用配置总结,一些配置是在特定的场景下才使用,一些是为了解决一些问题才加上。所以默认还是使用在Android Studio工具中新建项目时生成的默认的build.gradle文件中的配置,等遇到了问题,再来加一些配置。

Read More

总结一下学习十来天go语言的成果,看了一遍语法之后,写了一个抓取HTML然后转换成PDF文件的程序,分享一下,代码点这里。代码在目前go的1.7.5版本和1.8版本上运行没有问题,据说go向下兼容,而不像swift。但发现有些比较老的资料上的代码,在新的go版本上看不到效果,比如打印地址%p,在新版本中必须得使用unsafe.Pointer(p)转换一下,否则格式化输出指针变量不会打印出内存地址。

其中使用了两个第三方库:

Read More

前段时间在应用中集成了华为推送,现在终于告一段落了,回首起来,发现一路踩的坑,都是泪啊。

先交待下集成华为推送的背景:由于android手机上的google官方的推送GCM在中国大陆基本是残废,而大陆有些手机厂商可能会干掉这部分,造成GCM推送基本不可用。而像小米、华为等手机厂商对android系统的ROM进行了深度定制,用户可以手机桌面直接将应用程序kill,即使有后台服务,都被会一起干掉,同时android新的版本为了改善手机续行,在6.0开始增加了Doze机制,无疑对推送又是一大打击。综合这些因素,决定选几种推送一起集成进来,其中就有针对华为手机的华为推送。

Read More

这几天遇到一个很奇葩的问题,终于解决了,记录一下。

问题场景是:用小米手机使用小米推送一条消息,然后点击通知栏中的消息启动应用,然后进入会话的Activity。应用启动后,如果当前界面不是会话界面,那么新消息会在通知栏显示消息提醒,然后点击会话消息后却进不了会话的Activity,即点击了通知栏通知后,系统都没有启动指定Activity的意思,没有看到系统启动Activity的Log,到是会看到系统处理这个Activity的影子。

Read More

  • 前几天在给一个同事讲&运算取变量的状态写法,原因是我看到他代码中这样写会产生问题,所以想纠正他一下,于是就跟他说你可以参考下android系统中View在measure时使用的状态是怎么通过&运算获取的。

  • 他也说这几个状态是与View在布局文件中设置width或height时,有个对应关系。就这个机会,深入的了解了下View的宽高的measure是怎么与android.view.View.MeasureSpec.EXACTLYandroid.view.View.MeasureSpec.AT_MOSTandroid.view.View.MeasureSpec.UNSPECIFIED这三种状态一一对应的。于是就有了下文。

Read More

  • 前几天在解决应用中一个问题,现象是在nexus 7.0以上系统的手机上创建群组会话时,消息发送超时。然后测试了一上,发现是必现的,而4.4系统的手机上却一切正常,于是一路分析了别人写的代码。最后找到原因并解决,于是就有了本文。

最后找到原因是在Android系统7.0以上,当把Activity的launchMode属性值设置为singleTop时,Activity的生命周期与以前的系统版本对应的生命周期有所不同。

Read More