这几天在解决客户的一个问题,说用了发给我的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

android应用开发过程中,总会遇到一些坑。当遇到这些坑马上反应过来时,会很快解决。而没有反应过来时,估计是要折腾半天,下面记录一些这样的坑,防止自己遗忘再犯同样的错,自己以后再遇到类似的问题,也在这里记录下来。

Read More

这两天在集成微信支付的功能,先是客户在插件中集成支付功能,后来发现回调不起来,于是将支付功能集成到了主应用,然后暴露接口给插件使用。费劲几个小时的折腾,于是乎就有下文。

我们先来看下官网对于code为-1的说明(官网说明地址点这里):

1
开放平台配置的报名和应用签名是否一致:(android);确认是否使用正式的keystore打包apk并安装调试;(android);提交订单部分需要在服务器端完成。

先请仔细阅读,你遇到的问题就在这段描述中。其中注意,中间还错别字报名应为包名(鹅厂果然不一样)。

Read More

gradle在build混淆后的代码时,会出现如下错误提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
Warning: there were 2 unresolved references to library class members.
You probably need to update the library versions.
Alternatively, you may have to specify the option
'-dontskipnonpubliclibraryclassmembers'.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)
Warning: Exception while processing task java.io.IOException: Please correct the above warnings first.
:app:transformClassesAndResourcesWithProguardForRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
java.io.IOException: Please correct the above warnings first.

Read More