摘要:六原理說明侵入編譯流程,在編譯過程中,修改庫的字節(jié)碼,修改解析相關(guān)的方法,在數(shù)據(jù)類型不一致的時(shí)候,跳過當(dāng)前字段的解析。
一、目錄
1.gson-plugin告別Json數(shù)據(jù)類型不一致(一)
2.gson-plugin基礎(chǔ)源碼分析(二)
3.gson-plugin深入源碼分析(三)
4.gson-plugin如何在JitPack發(fā)布(四)
看完這4篇文章,對Gson解析會(huì)有更加深刻的認(rèn)識,對Android的編譯流程會(huì)有更加深刻的認(rèn)識,寫Android Plugin插件不在話下,修改Java字節(jié)碼小意思,發(fā)布一個(gè)開源項(xiàng)目so easy!
二、項(xiàng)目地址項(xiàng)目地址:github-gson-plugin
三、gson-plugin強(qiáng)化Android-Json解析的插件,解決Android-Json解析數(shù)據(jù)類型轉(zhuǎn)換異常,不影響對Gson庫的使用
四、誕生背景1.Android主要開發(fā)語言是Java,屬于強(qiáng)數(shù)據(jù)類型語言,不少公司后臺開發(fā)采用的是PHP,屬于弱數(shù)據(jù)類型的語言。
2.客戶端與服務(wù)器在進(jìn)行數(shù)據(jù)傳輸?shù)倪^程中,常常因?yàn)槟硞€(gè)字段數(shù)據(jù)類型不一致,導(dǎo)致客戶端gson解析失敗,從而導(dǎo)致整個(gè)頁面的數(shù)據(jù)均無法展示。
1.當(dāng)某個(gè)字段解析失敗的時(shí)候,跳過該字段繼續(xù)解析其它字段,保證其它正常數(shù)據(jù)可以展示出來。
2.當(dāng)某個(gè)字段解析失敗的時(shí)候,通過觀察者模式,將異常拋出,開發(fā)者在收到異常后可以進(jìn)行相應(yīng)的處理(如將異常日志上傳到服務(wù)器,然后推動(dòng)服務(wù)端RD解決)。
3.不影響對Gson庫的使用。
侵入編譯流程,在編譯過程中,修改gson庫的字節(jié)碼,修改gson解析相關(guān)的方法,在數(shù)據(jù)類型不一致的時(shí)候,跳過當(dāng)前字段的解析。
七、接入文檔gson-plugin 接入文檔
1.工程根目錄加入repositories
buildscript { repositories { maven { url "https://jitpack.io" } } } allprojects { repositories { maven { url "https://jitpack.io" } } }
2.工程根目錄build.gradle加入ClassPath
dependencies { classpath "com.github.LianjiaTech:gson-plugin:2.0.1" }
3.工程app目錄build.gradle加入依賴
apply plugin: "com.ke.gson.plugin"
4.可選調(diào)用(監(jiān)聽異常json字段,建議收到后上報(bào)給服務(wù)器)
ReaderTools.setListener(new ReaderTools.JsonSyntaxErrorListener() { @Override public void onJsonSyntaxError(String exception, String invokeStack) { //upload error info to server Log.e("test", "json syntax exception: " + exception); Log.e("test", "json syntax invokeStack: " + invokeStack); } });
5.添加混淆keep
-keep class com.google.gson.** { *; } -keep class com.ke.gson.** { *; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72239.html
摘要:一項(xiàng)目地址項(xiàng)目地址二與關(guān)系普通的庫可以通過源碼的方式直接引入并使用,是一個(gè)插件,無法通過源碼的方式使用,只能編譯并發(fā)布以后,才能被正常使用。是一個(gè)代碼倉庫,我們可以將源代碼托管在這個(gè)平臺上。 一、項(xiàng)目地址 項(xiàng)目地址:github-gson-plugin 二、github與JitPack關(guān)系 1.普通的java庫可以通過源碼的方式直接引入并使用,gson-plugin是一個(gè)插件,無法通過...
摘要:六修改內(nèi)部類的方法這個(gè)的方法是對類型的數(shù)據(jù)進(jìn)行解析,我們判斷輸入的數(shù)據(jù)類型不是類型,就直接跳過解析,核心是在方法中插入方法。每一個(gè)類每一個(gè)內(nèi)部類每一個(gè)匿名內(nèi)部類,都會(huì)生成一個(gè)獨(dú)立的文件,如。 一、項(xiàng)目地址 項(xiàng)目地址:github-gson-plugin 二、ReaderTools解析 /** * Created by tangfuling on 2018/10/23. */ pu...
閱讀 2615·2021-11-02 14:39
閱讀 4342·2021-10-11 10:58
閱讀 1468·2021-09-06 15:12
閱讀 1853·2021-09-01 10:49
閱讀 1339·2019-08-29 18:31
閱讀 1890·2019-08-29 16:10
閱讀 3348·2019-08-28 18:21
閱讀 879·2019-08-26 10:42