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

news/2025/1/6 14:59:59/文章来源:https://www.cnblogs.com/gnz48/p/18651797

GitHub - pzx521521/apk-editor

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

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

  • [x] 没有环境依赖,完全不需要 jdk/jre
  • [x] 无需中间调用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

github
windows
macos

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/863817.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EXCEL中自动突出显示(自动高亮)行或列

EXCEL中,当选择的单元格距离列首或行首过远时,考验眼睛的时候就到了。解决方法很多,如果想要自动突出显示,就只能上vba代码了。解决的问题 EXCEL中,当选择的单元格距离列首或行首过远时,考验眼睛的时候就到了。解决方法很多,如果想要自动突出显示,就只能上vba代码了。方…

DL00868-基于深度学习的红外船舶检测识别分类完整实现数据8000+

随着遥感技术的快速发展,包括无人机、卫星等,红外图像在船舶检测识别中的作用日益凸显。相对于可见光图像,红外图像具有在夜晚和恶劣天气条件下高效检测识别船舶的天然优势。近年来,深度学习作为一种强大的图像处理技术,在红外船舶检测识别领域取得了显著进展。完整链接:…

基于深度学习的红外船舶检测识别分类完整实现数据集8000+张

随着遥感技术的快速发展,包括无人机、卫星等,红外图像在船舶检测识别中的作用日益凸显。相对于可见光图像,红外图像具有在夜晚和恶劣天气条件下高效检测识别船舶的天然优势。近年来,深度学习作为一种强大的图像处理技术,在红外船舶检测识别领域取得了显著进展。完整链接:…

第三章 MBR -- loader

第三章 MBR --> loader 本文是对《操作系统真象还原》第三章学习的笔记,欢迎大家一起交流。 a 知识介绍 在上一章的代码部分,我们通过 BIOS 中断进行字符输出,但是离开实模式之后,BIOS 中断就没法用了,因为 BIOS 中断向量表只在实模式下存在,因此我们肯定还会有别的方…

正常运行 打包后提示某些属性或者类找不到

lombok 注解未正确加载,注意 idea属性修改

itextpdf 找出PDF中 文字的坐标

目录添加引用添加工具类调用 找到位置,签名的话见:https://www.cnblogs.com/vipsoft/p/18644127 新项目可以尝试一下 iText 7 , 我这边是老项目所以还是继续使用 iText 5,主打够用 iText 5 没有直接提供获取文本精确位置的功能。它只能提取文本内容,而文本位置通常需要通过…

Jmeter 进行websocket接口测试

什么是websocket协议? Websocket是基于tcp的一种全双通信协议,客户端与服务器之间通过websocket建立连接后,客户端和服务器之间会长时间保持连接状态(即长连接)。客户端可以向服务器发送数据,服务器也可以主动向客户端推送数据。与http协议不同的是http是tcp的单向通信协…

vscode下载vetur和vue-helper插件之后删除键(backspace)失效

最近我在学习前端的过程中,使用vscode下载的vue的插件:vetur和vue-helper这两个 但随后在写代码的时候发现删除键(backspace)不能使用,其他键都能正常使用,也可以用鼠标选中右键剪切/删除 最后发现是上面的插件会占用backspace按键作为插件的功能键 解决方法 点击左上角—…

使用 C# WPF 根据 SEGY 数据绘制二维地震图

一、引言 在地震勘探领域,SEGY(Society of Exploration Geophysicists Y-data)文件格式是常见的地震数据存储格式。对于地震数据的可视化,通常会将 SEGY 文件中的振幅数据通过图像进行展示,以便进行分析。本文将介绍如何使用 C# WPF 应用程序绘制基于 SEGY 数据的二维地震…

为什么浏览器打开的网页默认是英文显示?

最近在学习的时候遇到的问题,打开一些软件的官网默认都是英文(即使这些网站是国内做的)。 其中一个原因是浏览器的默认设置语言是英文 修改浏览器默认语言 以Google Chrome浏览器为例: 右上角三个点—>设置 左边找到“语言” 将中文置顶

LeetCode 762[二进制表示中质数个计算置位]

LeetCode 762[二进制表示中质数个计算置位]题目 链接 LeetCode 762[二进制表示中质数个计算置位] 详情实例提示题解 思路 两个条件: 1、二进制位为1 2、满足条件1的个数为质数首先 for 循环遍历区间for (int i = left; i < right + 1; i++){int iCount = 0;//二进制位为1的…