通过网址或 Html 生成一个简单 Apk

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

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

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

使用截图

通过网址或 Html 生成一个简单 Apk 1

修改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对齐

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

实现原理

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

下载地址

Online Demo(支持作者:https://www.52pojie.cn/thread-1996856-1-1.html

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

有问题及时联系站长,QQ:1240555208
更多优质资源在QQ群里,可以进群领取:467392290~
© 版权声明
THE END
点赞5 分享
及时反馈~ 抢沙发

请登录后发表评论

    暂无评论内容