Android apktool更新版本后遇到的一些问题

  1. 遇到问题:

    由于apktool工具版本的升级和打包环境的升级,在使用apktool d -f hello.apk时,会出现如下错误提示,让我头疼了好久:

C:\Users\beijing_zbs\Desktop\apktool>apktool.bat d -f TencentNews_63.apk unzip
I: Baksmaling...
I: Loading resource table...
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
        at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:54)
        at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:540)
        at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:76)
        at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:68)
        at brut.androlib.Androlib.getResTable(Androlib.java:51)
        at brut.androlib.ApkDecoder.getResTable(ApkDecoder.java:191)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:116)
        at brut.apktool.Main.cmdDecode(Main.java:148)
        at brut.apktool.Main.main(Main.java:77)
Caused by: java.io.IOException: Expected: 0x001c0001, got: 0x00000000
        at brut.util.ExtDataInput.skipCheckInt(ExtDataInput.java:48)
        at brut.androlib.res.decoder.StringBlock.read(StringBlock.java:43)
        at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:100)
        at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:81)
        at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:49)
        ... 8 more

2. 解决办法:

    升级apktool

    https://code.google.com/p/android-apktool/wiki/Install

    

Quick Check

  • Apktool 2.x (Versions after 1.5.2)

  1. Is Java 1.7 installed?

  2. Does executing java -version on command line / command prompt return 1.7?

  3. If not, please install Java 7 and make it the default.

Installation for Apktool 2.x

  • Windows:

  1. Download Windows wrapper script (Right click, Save Link As apktool.bat)

  2. Download apktool-2 (find newest here)

  3. Rename downloaded jar to apktool.jar

  4. Move both files (apktool.jar & apktool.bat) to your Windows directory (Usually C://Windows)

  5. If you do not have access to C://Windows, you may place the two files anywhere then add that directory to your Environment Variables System PATH variable.

  6. Try running apktool via command prompt

3. 升级以后,使用apktool d -s -m -f hello.apk这个工具就可以了

4.编程实现:

#
# -*- coding: utf-8 -*-
'''
Created on 2015-2-2

@author: baosenzhang
'''

import os

def findversionline(path):
    f = open(path,'r')  
    #lines=f.readlines()
    for l in f.readline():  
        line = f.readline()  
        #print l,line
        if line.find('versionName')>-1:  
            #print "OK"
            return line.strip('\n')
        else:
            return 
    f.close()  

def readversioninfo(versioninfolinestr):
    versioninfo=versioninfolinestr.split(' ')
    return [versioninfo[1].split('"')[1],versioninfo[2].split('"')[1]]

def readcontent(path):
    file = open(path,'r')
    send_string = ''
    try:
        send_string=file.read()
    finally:
        file.close()  
        #print send_string.decode('gb2312').encode('utf-8')
        return send_string

def apktooltest():
    os.system('apktool d -s -m -f ..\AppFolder\TencentNews_14.apk -o ..\unzipfolder\\')
    versioninfo=findversionline("\\unzipfolder\\AndroidManifest.xml")
    print versioninfo
    getpackageversion=readversioninfo(versioninfo)
    print getpackageversion
    read_channel = readcontent('\\unzipfolder\\assets\\channel')
    print read_channel


if __name__ == '__main__':
    apktooltest()


转载于:https://my.oschina.net/u/199776/blog/374273

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值