gpt4 book ai didi

c# - 使用新的签名功能自动化 Gradle 构建和签名

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:34 24 4
gpt4 key购买 nike

我有一个 Android Studio 项目和一个创建该项目发布版本的 C# 脚本:首先我使用 CMD.exe 创建一个未签名的发布 APK,然后我使用 jarsigner 来签署应用程序(这是构建 apk 所必需的,甚至无需打开 Android Studio 并能够更改 key 存储)。

我最近更新了 Android Studio,现在当我直接从 IDE 生成签名的 APK 时,有一个新选项:签名版本 - V1(Jar 签名)和 V2(完整 APK 签名)。此次更新后,如果我使用我的 C# 脚本构建 APK,则 Google Play 不接受 APK 文件:它说我的 APK 未优化,我应该使用优化工具并重新上传。我相信这两个变化是相关的。

我的问题是如何使用 jarsigner 选择签名版本?我在jarsignergradlew 帮助中没有找到相关的选项。

这是我的 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();

最佳答案

我最终只使用 Gradle 工具来构建和签署发布 APK(从管道中排除了分离的 Java jarsigner 进程)。

这是应用级 build.gradle 文件中的新签名配置:

signingConfigs {
release {
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_KEY
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
v1SigningEnabled true;
v2SigningEnabled true;
}
}

如您所见,我添加了 v1SigningEnabledv2SigningEnabled 字段。 keystore 信息取自 gradle.properties 文件,如 this 中所述。主题,我只是调整了我的脚本以根据更改 keystore 所需的内容来更改文件内容。现在 APK 文件已上传,没有任何错误。

关于c# - 使用新的签名功能自动化 Gradle 构建和签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44627035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com