zoukankan      html  css  js  c++  java
  • 批量修改安卓apk包名

    1.准备工作

    1.1 反编译工具apktool下载

    1.2 java, android SDK安装

    1.2 python安装

    2.反编译现有包

    apktool.bat d test.apk

    3. 直接上代码

    import re
    import os
    import shutil
    
    file_path = 'F:\apk\test\AndroidManifest.xml'
    
    root_path = "F:\apk\test\smali\com\test\package"  #smali文件夹下包名目录
    def modify_package(package_org, package_name):
        with open(file_path, 'r') as f:
            file_content = f.read()
            new_file = file_content.replace(package_org, package_name)
        
        with open(file_path, 'w') as f:
            f.write(new_file)
    
        list_dirs = os.walk(root_path)
        other_package = package_name.replace('.', '/')
        other_package_org = package_org.replace('.', '/')
        for root, dirs, files in list_dirs:
            for file_name in files:
                path = root_path + '/' + file_name
                modify_file = ''
                with open(path, 'rb') as f:
                    file_s = f.read()
                    modify_file = file_s.replace(other_package_org, other_package)
                
                with open(path, 'wb') as f:
                    f.write(modify_file)
            
    
            copy_name = "F:\apk\" + package_name + "org.apk"
            dist_name = "F:\apk\" + package_name + ".apk"
            os.system('apktool b F:\apk\test') #重新打包
            shutil.copy('F:\apk\test\dist\test.apk', copy_name)
            shell_cmd = 'jarsigner -verbose -keystore key.key -storepass password -keypass password -signedjar ' + dist_name + ' ' + copy_name + ' alianame'
           
            os.system(shell_cmd)  # 添加签名
    
    
    if __name__ == '__main__' :
        filelines = ''
        with open('channel.txt', 'rb') as f_c:   #channel.txt是需要切的包的包名,一行一个包名
            filelines = f_c.readlines()
        
        package_org = 'com.test.pacakge'
        for line in filelines :
            modify_package(package_org, line.strip())
            package_org = line.strip()
    
    
    
  • 相关阅读:
    配置SecondaryNameNode
    hadoop 根据secondary namenode恢复namenode
    Hadoop如何修改HDFS文件存储块大小
    hadoop1.2.1 datanode 由于权限无法启动 expected: rwxr-xr-x
    CentOS 7 下,如何设置DNS服务器
    Eclipse+pydev环境搭建
    Python numpy
    Leetcode#54 Spiral Matrix
    Leetcode#53 Maximum Subarray
    Leetcode#40 Combination Sum II
  • 原文地址:https://www.cnblogs.com/zjzyh/p/6133917.html
Copyright © 2011-2022 走看看