解決 appt getting 'android:icon' attribute: attribu

不少應用平臺上傳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

相關文章
相關標籤/搜索