ZigAndroidTemplate
ZigAndroidTemplate copied to clipboard
Use Android SDK apksigner instead JDK jarsigner
Hi again,
Is there a reason to not use the apksigner of SDK ?
Like this:
/usr/lib/android-sdk/build-tools/33.0.0/apksigner sign --ks .build_config/android.keystore --ks-key-alias default --ks-pass pass:ziguana app-template.apk
Following a patch : Works for me, perhaps usefull for someone.
diff --git a/Sdk.zig b/Sdk.zig
index 58e3b50..5fbead9 100644
--- a/Sdk.zig
+++ b/Sdk.zig
@@ -42,7 +42,7 @@ pub fn init(b: *Builder, user_config: ?UserConfig, versions: ToolchainVersions)
const zipalign = std.fs.path.join(b.allocator, &[_][]const u8{ actual_user_config.android_sdk_root, "build-tools", versions.build_tools_version, "zipalign" ++ exe }) catch unreachable;
const aapt = std.fs.path.join(b.allocator, &[_][]const u8{ actual_user_config.android_sdk_root, "build-tools", versions.build_tools_version, "aapt" ++ exe }) catch unreachable;
const adb = std.fs.path.join(b.allocator, &[_][]const u8{ actual_user_config.android_sdk_root, "platform-tools", "adb" ++ exe }) catch unreachable;
- const jarsigner = std.fs.path.join(b.allocator, &[_][]const u8{ actual_user_config.java_home, "bin", "jarsigner" ++ exe }) catch unreachable;
+ const jarsigner = std.fs.path.join(b.allocator, &[_][]const u8{ actual_user_config.android_sdk_root, "build-tools", versions.build_tools_version, "apksigner" ++ exe }) catch unreachable;
const keytool = std.fs.path.join(b.allocator, &[_][]const u8{ actual_user_config.java_home, "bin", "keytool" ++ exe }) catch unreachable;
break :blk SystemTools{
@@ -697,17 +680,17 @@ pub fn compressApk(sdk: Sdk, input_apk_file: []const u8, output_apk_file: []cons
pub fn signApk(sdk: Sdk, apk_file: []const u8, key_store: KeyStore) *Step {
const sign_apk = sdk.b.addSystemCommand(&[_][]const u8{
sdk.system_tools.jarsigner,
- "-sigalg",
- "SHA1withRSA",
- "-digestalg",
- "SHA1",
- "-verbose",
- "-keystore",
+ "sign",
+ "--ks",
key_store.file,
- "-storepass",
- key_store.password,
- sdk.b.pathFromRoot(apk_file),
+ "--ks-key-alias",
key_store.alias,
+ "--ks-pass",
+ std.mem.concat(sdk.b.allocator, u8, &[_][]const u8{
+ "pass:",
+ key_store.password,
+ }) catch unreachable,
+ sdk.b.pathFromRoot(apk_file),
});
return &sign_apk.step;
}