Skip to content

pzx521521/apk-editor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

通过网址或html生成一个简单apk

之前发过一个使用apktool版本的,简单来说就是一个对apk反编译和编译的过程 相比使用apktool有以下优点:

  • 没有环境依赖,完全不需要 jdk/jre
  • 无需中间调用apktool,容易部署到服务器/docker

使用

pEpYK4s.png Online Demo

修改apk显示的网页

  • 在线网址
./apkEditor -o="/Users/parapeng/Downloads/app-new.apk" https://www.example.com 
  • 指定输出路径
./apkEditor -o=demo.apk https://www.example.com 
  • 本地文件 仅一个index.html
apkEditor <yourpath>/index.html
  • 本地文件夹 包含html+css+js
apkEditor <your-dir>
  • 本地zip文件 包含html+css+js的zip文件
apkEditor <your-dir>/demo.zip

修改其他信息

在修改显示的网页的基础上添加

  • label 对应application.label
    用于显示软件名
  • versionCode 对应manifest.android:versionCode
    版本号用于更新软件
  • versionName 对应manifest.android:versionName
    用于显示软件版本号
  • package
    对应manifest.android:package
    软件包名
    修改这个要改的东西太多了,请使用apktool
  • 生成默认的webview并修改信息
./apkEditor -versionCode=222 -versionName="2.2.2" -label="NewApp" -o="/Users/parapeng/Downloads/app-new.apk" https://www.example.com

原理

反编译apk正常的流程是:

  • 解压apk
    unzip origin.apk -d origin/
  • 修改文件
    echo "1234" > /tmp/cpid
    cp /tmp/cpid origin/
  • 重新打包apk aapt2+aidl+Renderscript+Javac+DEX+zipflinger
    • 如果不需要修改代码的话是aapt2+zipflinger
    • aapt2会对一些资源做特殊处理,如AndroidManifest.xml会变为一个二进制文件,所以只使用zip是不行的
  • 签名apk
    • v1签名 jarsigner
    • v2签名 (Android11+) apksigner,
      • 必须先 zipalign 在 apksigner,否则会导致签名失效
    • 对于签名v1、v2、zipalign对齐的顺序是:v1----zipalign对齐----v2
  • zipalign对齐
    • Android12+(API31+)必须的
    • 源码cpp

apktool 相当于把重新打包apk简化了,并多了解析dex文件

实现原理

由于并不需要修改dex中的东西
解压->修改->压缩->对齐->签名

参考引用:

zipmerge
signv2

todo

  • 包名的修改
  • 图标修改
  • 桌面App(UI)
  • 对其他的app的修改

下载

github
windows
macos

感觉命令行不太友好.放上GUI的程序

windows(需要webview2) macos

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published