1、现象:
手机上调测时报错:android.database.sqlite.SQLiteException: near "$change": syntax error (code 1):
在使用SQLite动态创建表时报错,多了一个$change字段。
于是反复读代码,发现应该不会有$change这个字段。表字段是通过注解方式实现,getDeclareFields方式获取的字段。
2、经过查找,发现多了一个
public static transient volatile com.android.tools.fd.runtime.IncrementalChange这么信息,是系统自动生成的。于是怀疑是工具的原因
3、查找后发现,是android studio2的Instant Run功能导致,默认该功能是开启的。关闭了该功能就好使了。
1:打开settings
image2:搜索 Install Run
image取消勾选,apply
然后重启Android Studio
总结:以后用android studio使用反射就需要注意了,有可能该问题导致多了字段。如果写代码时,也可以加上判断就比较完美些。
网友评论