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功能導緻,預設該功能是開啟的。關閉了該功能就好使了。
總結
以後用android studio使用反射就需要注意了,有可能該問題導緻多了字段。如果寫代碼時,也可以加上判斷就比較完美些。
---------------------
轉自:https://blog.csdn.net/danielinbiti/article/details/51301343