關(guān)于andfix的幾個坑(持續(xù)更新中)

關(guān)于andfix這套熱修復(fù)框架的用法,相信很多人都查過各種各樣的資料,寫過各種各樣的demo或者已經(jīng)真正用到自己的項(xiàng)目中。我也是其中一員,只是想把自己碰到的幾個問題記錄下來,方便碰到同樣問題的人。

1.andfix不能修復(fù)與控件相關(guān)聯(lián)的方法

例如

<Button
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:onClick="login"
android:text="注冊"
/>
public void login(View v){
int i = 10;
int j = 0;
Log.e("old = " + i/j);
}

改為:

public void login(View v){
int i = 10;
int j = 1;
Log.e("old = " + i/j);
}

在現(xiàn)在大部分資料中,是沒有說明不能這樣修復(fù)的。實(shí)際上這樣無法完成修復(fù),至少無法達(dá)到你修改bug的目的。
點(diǎn)擊按鈕后報(bào)錯:

Process: test.sht.com.testproject, PID: 7103
java.lang.IllegalArgumentException: Expected receiver of type test.sht.com.testproject.MainActivity_CF, but got test.sht.com.testproject.MainActivity
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4790)
at android.view.View$PerformClick.run(View.java:19924)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5400)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1037)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

像例子中這樣的情況,建議使用setOnClickListener的方式來做,無論是內(nèi)部類還是實(shí)現(xiàn)接口的方式,都可以完成修復(fù)。其他情況暫時還沒碰到過,應(yīng)該也是這個思路,去除與控件的關(guān)聯(lián)才行。
(臨時更新:使用xutils的小伙伴注意了,下面這種方式也不行的。)

@OnClick(R.id.login)
    public void loginClick(View v) {
...
}

2.不建議使用andfix自帶的那一套下載、驗(yàn)證、加載的方法。

雖然andfix為我們考慮的及其周全,但是在實(shí)際項(xiàng)目中很難與一個固定的驗(yàn)證流程完全貼合。
建議自定義下載文件位置,自定義非重復(fù)的apatch文件名,自己完成MD5及sign等驗(yàn)證,需要加載修復(fù)的時候手動加載,需要刪除或清空的時候都手動去做,至少能完全按照我們設(shè)計(jì)的流程來執(zhí)行。
//170906更新

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容