不少應用平臺上傳APK後都用aapt工具來解析Android 的資源內容, 並得到圖標。 可是aapt有個bug, 不能正常解析資源內容。 我今天在百度,豌豆莢,360 等大平臺上上傳本身的應用時遇到這個問題, 摸索了半天才找到真正的解決方案。android
首先進入Android SDK裏的tools文件夾下, 而後在cmd執行如下命令: shell
aapt dump badging 您的apk路徑.apk
執行完了會輸出錯誤信息, 好比:
app
package: name='com.yourdomain.yourapp' versionCode='1' versionName='1' sdkVersion:'8' W/ResourceType(15821): Failure getting entry for 0x7f04001b (t=3 e=27) in package 0 (error -84) application-label-en:'Your App Name' application-icon-120:'res/drawable-ldpi/appicon.png' application-icon-160:'res/drawable-mdpi/appicon.png' application-icon-240:'res/drawable-hdpi/appicon.png' application-icon-320:'res/drawable-xhdpi/appicon.png' ERROR getting 'android:icon' attribute: attribute is not a string value
以上咱們能夠看到, 錯誤位置, 可是這裏根本看不到具體在哪兒。t=3 e=27的 意思是, type爲3, entity 爲27的那個資源有問題,接下來咱們執行另外一個命令獲取更詳細的信息。dom
aapt dump resources 您的apk路徑.apk
type 3 configCount=2 entryCount=28 spec resource 0x7f040000 com.yourdomain.yourapp:string/Quiz_Type: flags=0x00000000 spec resource 0x7f040001 com.yourdomain.yourapp:string/QUIZ_TYPES: flags=0x00000000 ... Lines cut out for brevity ... spec resource 0x7f04001a com.yourdomain.yourapp:string/info: flags=0x00000000 spec resource 0x7f04001b com.yourdomain.yourapp:string/app_name: flags=0x00000000 config (default): resource 0x7f040000 com.yourdomain.yourapp:string/Quiz_Type: t=0x03 d=0x0000001c (s=0x0008 r=0x00) resource 0x7f040001 com.yourdomain.yourapp:string/QUIZ_TYPES: t=0x03 d=0x0000001d (s=0x0008 r=0x00) ... Lines cut out for brevity ... resource 0x7f04001a com.yourdomain.yourapp:string/info: t=0x03 d=0x0000001a (s=0x0008 r=0x00) config en: resource 0x7f04001b com.yourdomain.yourapp:string/app_name: t=0x03 d=0x00000030 (s=0x0008 r=0x00)
這樣咱們就能夠尋找type爲3, entity 爲27的那個資源, 若是資源過多, cmd窗體看不全, 就用這個命令吧:工具
aapt dump resources 您的apk路徑.apk > D:\elbiz.text
這樣就能夠把所有信息保存到D盤根目錄下的elbiz.text文件裏。ui
找到有問題的那個資源後, 該刪除的就刪除, 該修改的就修改。 good luck!spa