木子屋 Dnawo's BLOG

C#调用jarsigner对apk签名耗时长解决方法

👤 dnawo 📅 2012-09-20 👁 5519 👍 0 💬 0 🔄 来源:本站原创
C# apk签名类:

using System;
using System.Diagnostics;

namespace ConsoleApplication1
{
    public class Android
    {
        /// <summary>
        /// 签名
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public static string Sign(params string[] args)
        {
            string result = "";
            //进程启动信息
            ProcessStartInfo startInfo = new ProcessStartInfo()
            {
                UseShellExecute = false,
                CreateNoWindow = true,
                WindowStyle = ProcessWindowStyle.Hidden,
                RedirectStandardOutput = true,
                FileName = "jarsigner.exe",
                //WorkingDirectory = "",
                Arguments = args.Length > 0 ? string.Join(" ", args) : ""
            };
            //启动进程
            using (Process process = Process.Start(startInfo))
            {
                process.WaitForExit();
                result = process.StandardOutput.ReadToEnd();
            }
            return result;
        }
    }
}

调用方法签名:

Android.Sign(new string[] { "-verbose", "-keystore", @"F:\sign\key", "-storepass", "123456", "-keypass", "123456", "-signedjar", @"F:\sign\signed.apk", @"F:\sign\test.apk", "market" });

程序运行后,signed.apk大小一直停留在228KB,必须手动关闭程序签名才能完成(signed.apk增大到3M),但同样的参数,在cmd中运行却很正常。

查看jarsigner帮助信息中各个参数的说明,感觉-verbose似乎没什么用:

[-verbose] 签名/验证时输出详细信息

尝试去掉"-verbose",再运行程序,能正常签名了,时间都在3s以内:)

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 MongoDB开启安全模式启用身份验证 下一篇 → 修改系统环境变量Path在C#控制台和WEB应用程序生效时间测试