先記錄,有時間慢慢研究。
結論:官方版本apktool decode出來的目錄不做任何修改重新build經(jīng)常會報找不到資源錯誤,是因為部分資源decode出來如下:
renyideMacBook-Pro:tmp renyi$ vi /Users/renyi/tmp/castbox/res/menu/z.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@id/bl" android:title="@string/te" app:showAsAction="vu" />
<item android:id="@id/bm" android:title="@string/tf" app:showAsAction="vu" />
</menu>
正確內(nèi)容應該將showAsAction換成s0,因為本身apk被混淆過,強行decode成明文反而會導致無法被識別。
這個問題在作者的issue里也提到了,并且最后的一個哥們給出了他處理過的apktool.jar解決了這個問題。鏈接
But!!!
這個小哥給的jar雖然可以正常處理混淆問題但是總是會把array類型的資源搞丟,你去res/values/arrays.xml中發(fā)現(xiàn)item都沒了。好傻逼。不過還好除了這個暫時沒發(fā)現(xiàn)其他問題。
于是正常的流程:用小哥的apktool decode,然后用官方apktool decode出來的arrays.xml替換掉前者目錄中的相應文件。
你說沙雕不沙雕?