Android 混淆與反射

起因

前一段時(shí)間比較空閑略就,于是就把Android的MVVM給封裝了一下吗跋。在我的框架里面‘vm’這個(gè)參數(shù)是肯定存在的桌粉,但是又不想在業(yè)務(wù)邏輯中進(jìn)行賦值vm旦袋。于是乎就通過反射的方式在BaseActivity中通過反射的方式來進(jìn)行處理了。在Debug版本跑的飛起瞄沙,在準(zhǔn)備上uat 版本的時(shí)候出現(xiàn)了閃退的問題己沛。

先說解決方案

在 proguard-rules.pro 排除這2塊的混淆

-keep class **.*Binding {*;}
-keep class **.*BindingImpl {*;}

PS:
我這里直接把整個(gè)類都進(jìn)行了排除混淆,嚴(yán)謹(jǐn)一點(diǎn)的應(yīng)該單獨(dú)配置 setVm的方法的混淆

排查過程

首先查看報(bào)錯(cuò)信息距境,發(fā)現(xiàn)是我自定義的BindingAdapter 空針問題申尼,當(dāng)時(shí)以為我傳入的 實(shí)體類出現(xiàn)了混淆問題,把實(shí)體給排除混淆發(fā)現(xiàn)沒有問題垫桂。 那么引用 ‘vm.scanStatus’為空 會(huì)不會(huì)直接原因就是vm為空师幕?(代碼①)

后面進(jìn)行了代碼測試,果然vm為空诬滩。那么進(jìn)行業(yè)務(wù)層面的主動(dòng)賦值會(huì)不會(huì)就OK了呢霹粥?答案是肯定的,是OK了的疼鸟。那么原因就很明顯了后控,肯定就是我反射的時(shí)候?qū)ふ襰etVm的方法是被混淆掉了。

原因找到了空镜,那么剩下就是解決的方案了浩淘,我們知道的 在DataBinding中的layout會(huì)被映射到 xxxBinding上,而相關(guān)實(shí)現(xiàn)就在xxxBindingImpl上吴攒。那么把這2塊的混淆給去掉不就ok了嗎张抄?加上混淆試一下 果然好用

部分源碼
代碼①

<TextView
    android:id="@+id/connect_step_3"
    style="@style/AppTextView.Connect.Step"
    bindIWarmErrorStep3="@{vm.scanStatus}"
    android:text="@string/connect_step_3" />

@JvmStatic
@BindingAdapter(value = ["bindError"], requireAll = false)
fun bindError(view: TextView, status: Status) {
    when (status) {
        Status.NotFound -> {
            view.visibility = View.VISIBLE
            view.setText(R.string.unfind)
        }
        Status.ConnectedFailed -> {
            view.visibility = View.VISIBLE
            view.setText(R.string.connect_failed)
        }
        else -> view.visibility = View.GONE
    }
}
代碼②
protected open fun initViewModel(vm: VM) {
    val activity = this@BindActivity
    // dataBinding 設(shè)置vm參數(shù)
    ReflectionUtils.invokeMethod(dataBinding, "setVm", vm, viewModelClass)

    vm.loadingStatus.observe(activity, Observer { changeLoadingStatus(it) })
    vm.errorStatus.observe(activity, Observer { changeErrorStatus(it) })
    vm.successStatus.observe(activity, Observer { changeSuccessStatus(it) })
    vm.emptyStatus.observe(activity, Observer { changeEmptyStatus(it) })
    vm.toastMessage.observe(activity, Observer { showToast(it) })
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市洼怔,隨后出現(xiàn)的幾起案子署惯,更是在濱河造成了極大的恐慌,老刑警劉巖镣隶,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泽台,死亡現(xiàn)場離奇詭異,居然都是意外死亡矾缓,警方通過查閱死者的電腦和手機(jī)怀酷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗜闻,“玉大人蜕依,你說我怎么就攤上這事。” “怎么了样眠?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵友瘤,是天一觀的道長。 經(jīng)常有香客問我檐束,道長辫秧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任被丧,我火速辦了婚禮盟戏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甥桂。我一直安慰自己柿究,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布黄选。 她就那樣靜靜地躺著蝇摸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪办陷。 梳的紋絲不亂的頭發(fā)上貌夕,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音民镜,去河邊找鬼啡专。 笑死,一個(gè)胖子當(dāng)著我的面吹牛殃恒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辱揭,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼离唐,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了问窃?” 一聲冷哼從身側(cè)響起亥鬓,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎域庇,沒想到半個(gè)月后嵌戈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡听皿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年熟呛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尉姨。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庵朝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情九府,我是刑警寧澤椎瘟,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站侄旬,受9級(jí)特大地震影響肺蔚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜儡羔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一宣羊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧笔链,春花似錦段只、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坪创,卻和暖如春炕婶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莱预。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工柠掂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人依沮。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓涯贞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親危喉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宋渔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,383評(píng)論 0 5
  • 最近項(xiàng)目有點(diǎn)閑,考慮到以前的項(xiàng)目沒有做過混淆辜限,只是用了加固軟件進(jìn)行加固皇拣,為了安全性,準(zhǔn)備給項(xiàng)目加上薄嫡,這里做個(gè)總結(jié)氧急,...
    想你依然心痛閱讀 744評(píng)論 0 4
  • 今天星期一,天氣晴毫深。新的一周又開始了吩坝,寶貝像往常一樣起床刷牙洗臉,吃過早飯哑蔫,我說:“你在仔細(xì)檢查檢查作業(yè)課...
    嘉旭媽媽閱讀 115評(píng)論 0 0
  • Aug 26th こんばんは Back 用文字調(diào)節(jié)心情的溫度 這幅《神奈川沖·浪里》钾恢,是日本江戶時(shí)代的浮世繪大師葛...
    雅米飯閱讀 222評(píng)論 0 0
  • 綺陌香飄柳如線手素,時(shí)光瞬息如流電。 “來瘩蚪,同學(xué)們都看我這邊~一會(huì)拍照的時(shí)候大家要喊耶噢泉懦!” “3!2疹瘦!1崩哩!” “耶!...
    A李哲哲閱讀 859評(píng)論 9 11