背景
每次android加固了都要命令行签名好麻烦,正好之前做了个图标生成工具。
所以改了改,比写批处理还要省事。
原理
其实就是用winform程序调用控制台执行命令,android签名的命令如下
%JAVA_HOME%injarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore [你的keystore] -signedjar [签名好的路径] [要签名的路径] [keystore的别名]
在界面里面选择了参数之后弹出控制台,输入密码就行了,非常省事(貌似密码也可以放进参数,懒得研究了,有知道的大神求评论给出)。
界面效果
之前icon生成工具改的,简单点就行。
icon生成的功能把ios的尺寸阉割了。
顺着自上而下的步骤点击就行。
如果你没有在环境变量里设定JAVA_HOME参数,程序启动会有提示,如果设定了就不需要再点击“配置JAVA目录”了。
如果自己配置JAVA目录,指向JDK的根目录就行,不要指向BIN。
关键源码
一如既往的,所有源码都有注释。请不要挑剔命名..半个小时弄的东西。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.IO; namespace WindowsFormsApplication1.DAL { public class Signture { public static string cmdFormat = "{0}\bin\jarsigner"; public static string cmdStrFormat = " -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore {0} -signedjar {1} {2} {3}"; /// <summary> /// 检查java环境 /// </summary> /// <returns></returns> public static bool isJavaEnvirSettled() { return string.IsNullOrEmpty(Environment.GetEnvironmentVariable("JAVA_HOME")); } /// <summary> /// 运行cmd命令 /// 会显示命令窗口 /// </summary> /// <param name="cmdExe">指定应用程序的完整路径</param> /// <param name="cmdStr">执行命令行参数</param> public static bool RunCmd(string cmdExe, string cmdStr) { bool result = false; try { using (Process myPro = new Process()) { //指定启动进程是调用的应用程序和命令行参数 ProcessStartInfo psi = new ProcessStartInfo(cmdExe, cmdStr); myPro.StartInfo = psi; myPro.Start(); myPro.WaitForExit(); result = true; } } catch { } return result; } public static string savePath(string file) { string filePath = Path.GetDirectoryName(file); string fileName = Path.GetFileNameWithoutExtension(file); return filePath + "\" + fileName + ".signed.apk"; } } }
private void buttonX4_Click(object sender, EventArgs e) { //执行 string align=textBox1.Text; string savedPath = DAL.Signture.savePath(apkPath); string cmd = string.Format(DAL.Signture.cmdFormat, javaPath); string cmdStr = string.Format(DAL.Signture.cmdStrFormat, keyPath, savedPath, apkPath, align); DAL.Signture.RunCmd(cmd, cmdStr); }
你还能干些啥
因为代码已经放在这里了,而且已经满足我自己需要了,所以等功能更新那就只有等我也用的上的时候改了。。
1.你可以开发一下脑洞简单改改用来批量打渠道包
2.拿来执行其他的命令,比如取md5码之类的
源码地址:
链接:http://pan.baidu.com/s/1c2YAD4 密码:uvy9
P.S.
自己在做独立开发,希望广结英豪,尤其是像我一样脑子短路不用react硬拼anroid、ios原生想干点什么的朋友。App独立开发群533838427
微信公众号『懒文』-->lanwenapp<--