【发布时间】:2017-11-21 11:04:46
【问题描述】:
我有一个 Android Studio 项目和一个用于发布该项目的 C# 脚本:首先我使用 CMD.exe 制作一个未签名的发布 APK,然后我使用 jarsigner 对应用程序进行签名(这是需要构建 apk 甚至无需打开 Android Studio 并能够更改密钥存储)。
我最近更新了 Android Studio,现在当我直接从 IDE 生成签名 APK 时,有一个新选项:签名版本 - V1(Jar 签名)和 V2(完整 APK 签名)。在此更新之后,如果我使用我的 C# 脚本构建 APK,则 APK 文件不被 Google Play 接受:它说我的 APK 未优化,我应该使用优化工具并重新上传。我相信这两个变化是相关的。
我的问题是如何使用jarsigner 选择签名版本?我在jarsigner 和gradlew 帮助中没有找到相关选项。
这是我的 C# 简化代码:
//assemble an unsigned APK
Process cmd = new Process()
cmd.StartInfo.FileName = "CMD.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine(@"cd /d """ + Application.StartupPath + @"""");
cmd.StandardInput.WriteLine(@"gradlew assembleRelease");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
//sign the APK
string args = @"-keystore """ + keyPath + @""" -storepass " + alias +
@" """ + Application.StartupPath +
@"\app\build\outputs\apk\app-release-unsigned.apk"" " + aliasPas;
Process java = new Process();
java.StartInfo.FileName = Path.Combine(GetJavaInstallationPath(), "bin\\jarsigner.exe");
java.StartInfo.Arguments = args;
java.StartInfo.UseShellExecute = false;
java.Start();
java.WaitForExit();
【问题讨论】:
标签: c# android gradle automation signing