首页 > 编程知识 正文

安卓改apk包名的软件,如何改apk包名

时间:2023-05-04 20:52:21 阅读:273998 作者:2883

     由于工作需要要修改一个历史很久远的android apk的一些包名参数,但是由于年久失修,找不到原来出包的项目工程了,所以没有办法通过打包的方式去修改apk的包名处理。这里提供一个不需要经过工程打包就可以修改包名的处理方案

一、需要准备的工具

1、你需要可以运行jdk的环境,以及apk解包工具apktool,这里使用的是apktool-2.3.4.jar

2、可以运行python的环境

 

二、了解原理

1、可以使用命令java -jar apktool-2.3.4.jar d -f aa.apk -o bb

aa.apk是你要解包的apk,bb是解包之后生成的文件夹名字。

android工程通过解包之后,一般的目录结构都是固定的,如下面所示

 

AndroidManifest.xml这里面是存在着包名的,所以这里要修改包名处理,这个文件里面所有的原包名都要改成,你要的目标包名

2、smali目录下面有很多文件,这里一般情况下认为就是你代码生成的文件,不过这里有点不一样的就是,如果你的包名是aa.bb.cc的话,这里面的就是以aa/bb/cc形式存在,替换的时候也要遵循这里规则去替换

全部改一遍之后就是apk改包名就差不多算完成了,然而这个工作要手工完成吗,太麻烦了,假如你经常有需求改的话,每次都全局都搜一遍,一个一个改?太不智能了,所以搞了一个python脚本去批量的替换包名处理

 

三、脚本批量替换 # -*- coding: UTF-8 -*-import osfrom shutil import copyimport platformdef change_file(real_path, last_package, new_package): last_package1 = last_package.replace(".", "/") new_package1 = new_package.replace(".", "/") print(real_path) st1 = "" is_write = False for line in open(real_path): if line.find(last_package)>=0: line = line.replace(last_package, new_package) is_write = True elif line.find(last_package1)>=0: line = line.replace(last_package1, new_package1) is_write = True st1 += line if is_write == True: open(real_path, "w").write(st1)def change_dir(root, last_package, new_package): for file_name in os.listdir(root): real_path = os.path.join(root, file_name) real_path = real_path.replace("\", "/") if os.path.isdir(real_path): change_dir(real_path, last_package, new_package) else: change_file(real_path, last_package, new_package)version = platform.python_version()versionCode = int(version[0:1])last_package = ""new_package = ""root_dir = "./bb" if versionCode >= 3: last_package = input("input old packageNamen") new_package = input("input new packageNamen")else: last_package = raw_input("input old packageNamen") new_package = raw_input("input new packageNamen")print(root_dir, last_package, new_package)change_dir(root_dir, last_package, new_package)if versionCode >= 3: input("enter any keyn")else: raw_input("enter any keyn")

 

四、打包回apk包

     把之前解包之后的目录文件夹重新打包成apk,可以使用命令

     java -jar apktool-2.3.4.jar b -o new.apk bb 这里的bb就是之前解包之后的文件夹,如果打包完成之后就是修改了包名的apk了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。