12038陌 发表于 2025-9-1 04:42:03

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

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

之前发过一个使用apktool版本的,简单来说就是一个对apk反编译和编译的过程
相比使用apktool有以下优点:
没有环境依赖,完全不需要 jdk/jre 无需中间调用apktool,容易部署到服务器/docker
使用


Online Demo
修改apk显示的网页


[*]在线网址./apkEditor -o="/Users/parapeng/Downloads/app-new.apk" https://www.example.com
[*]指定输出路径./apkEditor -o=demo.apk https://www.example.com
[*]本地文件 仅一个index.htmlapkEditor /index.html
[*]本地文件夹 包含html+css+jsapkEditor
[*]本地zip文件 包含html+css+js的zip文件apkEditor /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正常的流程是:


[*]解压apkunzip origin.apk -d origin/
[*]修改文件echo "1234" > /tmp/cpid
cp /tmp/cpid origin/
[*]重新打包apk
aapt2+aidl+Renderscript+Javac+DEX+zipflinger
如果不需要修改代码的话是aapt2+zipflingeraapt2会对一些资源做特殊处理,如AndroidManifest.xml会变为一个二进制文件,所以只使用zip是不行的
签名apk
v1签名 jarsignerv2签名 (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
macos

寒哥Gh61ac8 发表于 2025-9-1 04:42:42

解决了朋友卡了快一年的问题。十分感谢!

huoxianghui913 发表于 2025-9-1 04:43:12

估计原理就是把WebView包装成app

huoxianghui913 发表于 2025-9-1 04:43:42

apk图标支持更换就好了!

寒哥Gh61ac8 发表于 2025-9-1 04:44:07

厉害,支持一下。

寒哥Gh61ac8 发表于 2025-9-1 04:44:42

牛牛牛,刚试了一下,电脑是WIN11,手机是鸿蒙,测试了几个网址,亲测好用!大赞!

huoxianghui913 发表于 2025-9-1 04:45:01

开源了?秀这就去点个star

风之影赫 发表于 2025-9-1 04:45:14

我是你的第一个Star哟

风之影赫 发表于 2025-9-1 04:46:03

感谢分享,收藏一下

风之影赫 发表于 2025-9-1 04:46:39

感谢分享。收藏了。谢谢
页: [1] 2
查看完整版本: 通过网址或html生成一个简单apk