java服务器动态打包apk
java服务器动态打包apk 代码,可以动态吧一些数据写入raw文件里面,然后,自动使用签名,打包代码为可以安装的apk包
使用这种方式可以 很好实现 用户推广包的制作
public static void getAppUrl(Long uid1, long uid2, long uid3,long uid4,long uid5,
DaoBaoOnErrorListener listener) throws IOException { //uid1.。。。推广用户的id号。
OutputStreamWriter osw = null;
Process process = null;
try {
String path = "D:\\Java\\apktool\\apktool"; //apktool的路径
String appPath = "D:\\myeclipse_workplace\\.metadata\\.me_tcat7\\webapps\\MyMoney\\apk\\"; //需要打包的apk的地址
File file = new File(path);
process = Runtime.getRuntime().exec(
"cmd.exe /c apktool d " + appPath + "app.apk " + appPath
+ "app", null, file); //这个命令,先解压apk包
if (process.waitFor() != 0) {
// listener.onErrorListener("解压失败");
}
String targetPath = appPath + "\\app\\res\\raw\\id.txt"; //解压后的raw下面的文本文件路径,我们把id写里面,apk安装后,从里面取出,写入服务器,用户和推广用户绑定
String content = uid1 + "," + uid2 + "," + uid3+","+uid4+","+uid5;
osw = new OutputStreamWriter(new FileOutputStream(targetPath));
osw.write(content, 0, content.length());
osw.flush(); //把推广用户id写入文本里面去
process = Runtime.getRuntime().exec(
"cmd.exe /c apktool b " + appPath + "app " + appPath
+ "dabao.apk", null, file);
if (process.waitFor() != 0) {
listener.onErrorListener("打包失败");
return;
}
String jdkBinPath = "D:\\Java\\jdk1.7.0_67\\bin"; //jdk路径
File bin = new File(jdkBinPath);
String cmd1 = "cmd.exe /c jarsigner -keystore D:\\Java\\qianming\\my.keystore -storepass 123456 -signedjar D:\\myeclipse_workplace\\.metadata\\.me_tcat7\\webapps\\MyMoney\\apk\\"; // 含有秘钥地址和密码
String cmd2 = uid1 + ".apk";
String cmd3 = " -digestalg SHA1 -sigalg MD5withRSA D:\\myeclipse_workplace\\.metadata\\.me_tcat7\\webapps\\MyMoney\\apk\\dabao.apk my.keystore";
process = Runtime.getRuntime().exec(cmd1 + cmd2 + cmd3, null, bin);
if (process.waitFor() != 0) {
listener.onErrorListener("签名失败");
return;
}
} catch (Exception e) {
e.printStackTrace();
listener.onErrorListener("打包失败");
} finally {
osw.close();
}
listener.onSuccess();
}
package com.hck.dabao;
public interface DaoBaoOnErrorListener {
public void onErrorListener(String errorString);
public void onSuccess();
}
我的网站的 apk,就是用这个方式动态打包产生的: http://androidyuanma.com/downApp?uid=1
java服务器动态打包apk相关推荐
- uniapp使用unipush推送及java后台推送代码(含本地打包apk使用unipush推送)
你懂的,又是项目用到了,作为程序猿义无反顾需要定时 "进化" ,硬头皮去写,虽然曾经作为android开发者写了很多的推送,但是uniapp的推送也是有所差异的,记录一下,以后留用 ...
- Unity(十四)Unity配置打包APK环境Android和Java
吐槽:换了电脑,配置Unity打包环境又花费了大量时间.特此记录下来 (文末提供云盘文件) 以下分三部分说明配置完就可以正常打包APK了,/*第一次打包建议仔细看完*/ 1. Android环境配置 ...
- android服务器打包jar,Android Studio打包apk,aar,jar包方法
文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独有的类库包,而jar包是java ...
- HTML一键打包APK工具(安卓应用APP)
工具简介 "HMTL一键打包APK工具"可以把本地HTML项目或者网站打包为一个安卓应用APK文件,无需编写任何代码,支持在安卓设备上安装运行. 打包工具群:429338543 下 ...
- Python 后台基于 PackerNg 格式动态生成 APK 渠道包
2019独角兽企业重金招聘Python工程师标准>>> 本文代码的原理基于 git@github.com:mcxiaoke/packer-ng-plugin.git 项目. 该项目用 ...
- HTML/网站一键打包APK工具(html网页打包安卓APP应用)
工具简介 "HMTL一键打包APK工具"可以把网站打包为一个安卓应用APK文件,无需编写任何代码,支持在安卓设备上安装运行. 线上地址: 点击进入页面 历史更新 1.4.5 (20 ...
- AndroidStudio 动态调试apk(release版)
今天教大家如何用AndroidStudio去动态调试已经上线的apk文件(类似我们开发的时候去debug调试代码块效果),这就是逆向的时候用的比较平凡的一种手段,而要更好的了解怎么去动态调试apk这里 ...
- 设计模式总结——代理模式以及java的动态代理
定义 给目标对象一个代理对象,并由代理对象控制对目标对象的引用.联想到生活中就像是海外代购 既然是代理,就说明他要做的事情要比你直接去做要做的多,这就联系到了方法的增强,也就联系到了AOP,面向切面. ...
- cocos2d-x3.0rc打包apk遇到的一些问题记录
下载cocos2d-x3.0rc后根据官方教程进行环境配置等等一系列过程没有遇到什么问题 打包apk时出现一些问题: 按照官方教程cmd下运行cocos run -p android -m relea ...
- Java服务器热部署的实现原理
[本文转载于Java服务器热部署的实现原理] 今天发现早年在大象笔记中写的一篇笔记,之前放在ijavaboy上的,现在它已经访问不了了.前几天又有同事在讨论这个问题.这里拿来分享一下. 在web应用开 ...
最新文章
- html+服务器控件语法,HtmlForm 服务器控件声明性语法
- 软件架构:5种你应该知道的模式
- otn系统中常用的电层_WDM与OTN浅谈
- 蚂蚁金服“定损宝”现身AI顶级会议NeurIPS
- ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值
- PMP试题 | 每日一练,快速提分 7.5
- Nginx面试题整理
- java全栈工程师简历,全栈工程师:全栈JavaScript简介
- AWS云上混沌工程实践之启动篇
- 如何在Mac电脑上打开终端
- 【常用表】常用泰勒公式与常用等价
- 共享文件计算机和设备拒绝访问,“拒绝访问”共享文件解决方法
- YS_20190822_图像_Matlab_04
- 人生=亲情+爱情+金钱+理想+友情?
- 华为的用人标准有6条,经典并熟记
- SpringBoot+Vue项目实现高校学生健康打卡系统
- 重温数据结构(C语言版)(第二版)
- iptables知识点总结
- 笔记本linux蓝牙驱动怎么安装程序,如何安装蓝牙设备的驱动程序
- 迁移学习——综述文献