今天在寫Xposed模塊的過程中,爲了找到某個Field,需要判斷Filed的某個祖先的類型是是Fragment類型
但在做比較的時候出現了問題,發生了Fragment != Fragment的問題:
注:這裏的 Fragment 是 android.support.v4.app.Fragment 而不是 android.app.Fragment
我們知道v4包是要額外導入的,
所以說,一共出現了兩份v4包,一份打包在宿主app裏,一份打包在自己的模塊裏面,在加載的時候會出現因爲ClassLoader不一致而導致兩個class不同的情況
如圖:
在debug添加查看發現,兩個Class雖然都是android.support.v4.app.Fragment但由於ClassLoader不一樣,導致兩個Class不相等;
查看其它的Class發現,系統自帶的那些jar裏面的Class都是由BootClassLoader加載的,
而BootClassLoader的實例在虛擬機中只有一個,所以模塊中的Context.class和宿主app裏的Context.class是一樣的