From a12aaa534b5b6129e2c6c354f3d445553a1840e6 Mon Sep 17 00:00:00 2001 From: SimonIT Date: Thu, 2 Jan 2025 23:29:28 +0100 Subject: [PATCH 1/4] feat: First signing support --- .../gdx/jnigen/gradle/JnigenExtension.java | 8 ++ .../gdx/jnigen/gradle/JnigenSignTask.java | 114 ++++++++++++++++++ .../jnigen/gradle/JnigenSigningExtension.java | 24 ++++ 3 files changed, 146 insertions(+) create mode 100644 compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java create mode 100644 compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSigningExtension.java diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java index 7fc7781e..c9ade0a0 100644 --- a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java @@ -75,6 +75,7 @@ public class JnigenExtension { Action robovm; JnigenBindingGeneratorExtension generator; + JnigenSigningExtension signing = new JnigenSigningExtension(); @Inject public JnigenExtension (Project project) { @@ -96,6 +97,10 @@ public void nativeCodeGenerator (Action container) { container.execute(nativeCodeGeneratorConfig); } + public void signing (Action container) { + container.execute(signing); + } + public void all (Action container) { this.all = container; } @@ -258,6 +263,9 @@ private void checkForTasksToAdd (BuildTarget target) { jnigenBuildTask.setBuildTarget(target); jnigenBuildTask.dependsOn(jnigenTask); + JnigenSignTask jnigenSignTask = project.getTasks().create("jnigenSign" + os.name() + "_" + architecture.getDisplayName() + bitness.name(), JnigenSignTask.class, this); + jnigenSignTask.dependsOn(jnigenBuildTask); + platformLevelTargetsSeen.get(platform).mustRunAfter(jnigenBuildTask); if (HostDetection.os == os && HostDetection.architecture == architecture && HostDetection.bitness == bitness) { DefaultTask hostTask = project.getTasks().create("jnigenBuildHost", DefaultTask.class); diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java new file mode 100644 index 00000000..32c49f62 --- /dev/null +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java @@ -0,0 +1,114 @@ +package com.badlogic.gdx.jnigen.gradle; + +import com.badlogic.gdx.jnigen.BuildConfig; +import com.badlogic.gdx.jnigen.FileDescriptor; +import com.badlogic.gdx.jnigen.build.RuntimeEnv; +import com.badlogic.gdx.jnigen.build.ToolFinder; +import com.badlogic.gdx.jnigen.build.ToolchainExecutor; +import groovy.lang.Closure; +import org.gradle.api.DefaultTask; +import org.gradle.api.tasks.TaskAction; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Inject; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class JnigenSignTask extends DefaultTask { + + + private static final Logger log = LoggerFactory.getLogger(JnigenSignTask.class); + + private final JnigenExtension ext; + + @Inject + public JnigenSignTask(JnigenExtension ext) { + this.ext = ext; + + setGroup("jnigen"); + setDescription("Signs native libraries"); + } + + @TaskAction + public void run() { + BuildConfig buildConfig = new BuildConfig(ext.sharedLibName, ext.subProjectDir + ext.temporaryDir, ext.subProjectDir + ext.libsDir, ext.subProjectDir + ext.jniDir, null, new FileDescriptor(ext.subProjectDir)); + RuntimeEnv env = new RuntimeEnv(); + List args = new ArrayList<>(); + ext.targets.forEach(target -> { + switch (target.os) { + case Windows: + Map params = ext.signing.getJsignParams(); + params.put("file", target.getTargetBinaryFile(buildConfig).getPath()); + Closure jsign = (Closure) ext.project.getExtensions().getByName("jsign"); + jsign.call(params); + break; + case Linux: + File bsign = ToolFinder.getToolFile("bsign", env, true); + String secretKeyRingFile = (String) getProject().property("signing.secretKeyRingFile"); + String keyId = (String) getProject().property("signing.keyId"); + String password = (String) getProject().property("signing.password"); + args.add("--sign"); + args.add(target.getTargetBinaryFile(buildConfig).getPath()); + args.add("-P"); + args.add(String.format("\"--keyring %s --default-key %s --passphrase %s --batch\"", secretKeyRingFile, keyId, password)); + ToolchainExecutor.execute(bsign, new File(""), args, new ToolchainExecutor.ToolchainCallback() { + @Override + public void onInfoMessage(String message) { + log.info(message); + } + + @Override + public void onErrorMessage(String message) { + log.error(message); + } + + @Override + public void onSuccess() { + log.info("Signing successful"); + } + + @Override + public void onFail(int statusCode) { + log.error("Signing failed with status code: {}", statusCode); + } + }); + break; + case MacOsX: + case IOS: + File codesign = ToolFinder.getToolFile("codesign", env, true); + args.add("-s"); + args.add(ext.signing.getIdentity()); + args.add("-f"); + args.add(target.getTargetBinaryFile(buildConfig).getPath()); + ToolchainExecutor.execute(codesign, new File(""), args, new ToolchainExecutor.ToolchainCallback() { + @Override + public void onInfoMessage(String message) { + log.info(message); + } + + @Override + public void onErrorMessage(String message) { + log.error(message); + } + + @Override + public void onSuccess() { + log.info("Signing successful"); + } + + @Override + public void onFail(int statusCode) { + log.error("Signing failed with status code: {}", statusCode); + } + }); + break; + case Android: + log.info("Signing not supported on Android"); + break; + } + }); + } +} diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSigningExtension.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSigningExtension.java new file mode 100644 index 00000000..6a0e7440 --- /dev/null +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSigningExtension.java @@ -0,0 +1,24 @@ +package com.badlogic.gdx.jnigen.gradle; + +import java.util.Map; + +public class JnigenSigningExtension { + private Map jsignParams; + private String identity; + + public Map getJsignParams() { + return jsignParams; + } + + public void setJsignParams(Map jsignParams) { + this.jsignParams = jsignParams; + } + + public String getIdentity() { + return identity; + } + + public void setIdentity(String identity) { + this.identity = identity; + } +} From 264070ab7c48bf3bd91745f90a9112c963dc9f40 Mon Sep 17 00:00:00 2001 From: SimonIT Date: Fri, 3 Jan 2025 00:59:15 +0100 Subject: [PATCH 2/4] fix: Build for correct buildTarget --- .../gdx/jnigen/gradle/JnigenExtension.java | 1 + .../gdx/jnigen/gradle/JnigenSignTask.java | 49 +++++------------- gdx-jnigen-generator-test/build.gradle | 15 +++++- gdx-jnigen-generator-test/keystore.p12 | Bin 0 -> 2724 bytes 4 files changed, 27 insertions(+), 38 deletions(-) create mode 100644 gdx-jnigen-generator-test/keystore.p12 diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java index c9ade0a0..d3b9397c 100644 --- a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java @@ -264,6 +264,7 @@ private void checkForTasksToAdd (BuildTarget target) { jnigenBuildTask.dependsOn(jnigenTask); JnigenSignTask jnigenSignTask = project.getTasks().create("jnigenSign" + os.name() + "_" + architecture.getDisplayName() + bitness.name(), JnigenSignTask.class, this); + jnigenSignTask.setBuildTarget(target); jnigenSignTask.dependsOn(jnigenBuildTask); platformLevelTargetsSeen.get(platform).mustRunAfter(jnigenBuildTask); diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java index 32c49f62..7ef5806f 100644 --- a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java @@ -1,6 +1,7 @@ package com.badlogic.gdx.jnigen.gradle; import com.badlogic.gdx.jnigen.BuildConfig; +import com.badlogic.gdx.jnigen.BuildTarget; import com.badlogic.gdx.jnigen.FileDescriptor; import com.badlogic.gdx.jnigen.build.RuntimeEnv; import com.badlogic.gdx.jnigen.build.ToolFinder; @@ -24,6 +25,8 @@ public class JnigenSignTask extends DefaultTask { private final JnigenExtension ext; + private BuildTarget buildTarget; + @Inject public JnigenSignTask(JnigenExtension ext) { this.ext = ext; @@ -32,57 +35,29 @@ public JnigenSignTask(JnigenExtension ext) { setDescription("Signs native libraries"); } + public void setBuildTarget (BuildTarget buildTarget) { + this.buildTarget = buildTarget; + } + @TaskAction public void run() { BuildConfig buildConfig = new BuildConfig(ext.sharedLibName, ext.subProjectDir + ext.temporaryDir, ext.subProjectDir + ext.libsDir, ext.subProjectDir + ext.jniDir, null, new FileDescriptor(ext.subProjectDir)); RuntimeEnv env = new RuntimeEnv(); List args = new ArrayList<>(); - ext.targets.forEach(target -> { - switch (target.os) { + switch (buildTarget.os) { case Windows: Map params = ext.signing.getJsignParams(); - params.put("file", target.getTargetBinaryFile(buildConfig).getPath()); + params.put("file", buildTarget.getTargetBinaryFile(buildConfig).getPath()); Closure jsign = (Closure) ext.project.getExtensions().getByName("jsign"); jsign.call(params); break; - case Linux: - File bsign = ToolFinder.getToolFile("bsign", env, true); - String secretKeyRingFile = (String) getProject().property("signing.secretKeyRingFile"); - String keyId = (String) getProject().property("signing.keyId"); - String password = (String) getProject().property("signing.password"); - args.add("--sign"); - args.add(target.getTargetBinaryFile(buildConfig).getPath()); - args.add("-P"); - args.add(String.format("\"--keyring %s --default-key %s --passphrase %s --batch\"", secretKeyRingFile, keyId, password)); - ToolchainExecutor.execute(bsign, new File(""), args, new ToolchainExecutor.ToolchainCallback() { - @Override - public void onInfoMessage(String message) { - log.info(message); - } - - @Override - public void onErrorMessage(String message) { - log.error(message); - } - - @Override - public void onSuccess() { - log.info("Signing successful"); - } - - @Override - public void onFail(int statusCode) { - log.error("Signing failed with status code: {}", statusCode); - } - }); - break; case MacOsX: case IOS: File codesign = ToolFinder.getToolFile("codesign", env, true); args.add("-s"); args.add(ext.signing.getIdentity()); args.add("-f"); - args.add(target.getTargetBinaryFile(buildConfig).getPath()); + args.add(buildTarget.getTargetBinaryFile(buildConfig).getPath()); ToolchainExecutor.execute(codesign, new File(""), args, new ToolchainExecutor.ToolchainCallback() { @Override public void onInfoMessage(String message) { @@ -105,10 +80,10 @@ public void onFail(int statusCode) { } }); break; + case Linux: case Android: - log.info("Signing not supported on Android"); + log.warn("Signing not supported for {}", buildTarget.os); break; } - }); } } diff --git a/gdx-jnigen-generator-test/build.gradle b/gdx-jnigen-generator-test/build.gradle index 70035942..48d75021 100644 --- a/gdx-jnigen-generator-test/build.gradle +++ b/gdx-jnigen-generator-test/build.gradle @@ -3,6 +3,7 @@ import com.badlogic.gdx.jnigen.commons.Os plugins { id "com.badlogicgames.jnigen.jnigen-gradle" + id 'net.jsign' version '6.0' } sourceCompatibility = 1.8 @@ -57,6 +58,18 @@ jnigen { options = ["-I" + file("src/test/resources/").absolutePath] } + signing { + jsignParams = [ + name : 'My Application', + url : 'http://www.example.com', + keystore : 'keystore.p12', + alias : 'test', + storepass: 'secret', + tsaurl : 'http://timestamp.sectigo.com' + ] + identity = '-' + } + addLinux(x32, ARM) addLinux(x64, x86) addLinux(x64, ARM) @@ -83,4 +96,4 @@ eclipse { project { name = "gdx-jnigen-generator-test" } -} \ No newline at end of file +} diff --git a/gdx-jnigen-generator-test/keystore.p12 b/gdx-jnigen-generator-test/keystore.p12 new file mode 100644 index 0000000000000000000000000000000000000000..0744948167709a49e1c29b4d48e18d9ed10edb4e GIT binary patch literal 2724 zcma);X*d*$8pmgk2_gG7mcm%aSPMwi#s~ zipYp85s5@uBWtJo-1~H%`{~{f@AE$I@BjYakN@XIk>RBvAQ(l4Tfo>A63r5KIDyB2 zrDV7+gbdgIiPceLXw`p7&_W0qn)?%H|Evty@&C9u;6P9*8G8OF)I;HaIiQ>>?~5RIC;%l6V|Pn51A2lX zKm`almDLpJ5Fwzqdh`KVMW8xC$dDnf0JTk0pxhWpVCf_Or27U-eCqw7&y}urT&lGu zX`{rFqB+^2n1mFmMk?h|;-$)HwQcz!9M_)OJEXv3pNMQ}E08KWI?ad?bcHbNL+6_d zE;hydMVqmD8bQf+IErGETsUalHE2iWVvUuPvTtwK9lzpKc6p~KNDC-E1}hX%5Gx^e z?m|Y5sasQmPXmz}vDTFId&AMJn4mPs*#oau*Pb(9b^sB za12f4hHobqhg>z$FWRC1QH_iPiRV=2weq900JgNe5W@?3iD&uNO5Ov|8!T_`vU!ZY zfmiqCXgk^Q$1%TQrz-?aT;z$L53kaoEKTD^S4X<`ZUJ7R++^i_z#GBVVVUkq23Av# z3?}7?4^)*!YWA}K=@`}Mn(NHV+Plc;J(F?4?%21I`#UW8hRUUadZd^NOSW`aoPlgP zaenM+1x7sS03Qu?aa(zG$3jWXuKE&lN~*fC%KK|iaKsigH-DRD4g(so;Xy-N=g&`uheoFjt| z#wFryMb}iLrYKy-uT&T%n^8QnL&=77dWuMT++p0jy3hQlg^x;Ip-flZ8^L*ui>Ps9 zkqxV8>yXO{^-W1Ww5H|FH;$^3_`Zl8zAbFTP_DBKyu2041#bkR8{kGK{!cK4=1@zNajJ`1~MMZ zoRJB&JOER%Wowx_-eW!FEox3*UQ6q_uC)$0a(qyN6H7CvVgSCL`$ZydllNa$n&Q&y zA16}4xgviC1IFM%nK!II-P{?8 z5uI9#QN^x%g`gL1Ir@_Nz8eG`jwVbg*M5n#@a!a(D%n_FNd2oAXDb_DL73LDsPlhu zvd4=a=zoAmempl~Rfn=9;2=O7(W;KHsVyNd3A?8B2UiFKr_0~9{V>;g|3R_h@g+Hx z{CpD}7se~DH0<1y;*ad36;pl8#@`JTN*0*nqL~pYQNi1P$)7a z?$^>WSScA2^b-+5K)}!D^^XGlUlFaWKBltVcFqWox7(KZ%5B(OK70B9iD+8%UbcbZ zZc0n5JOQ53bv%{~UK=$W;Ii($p5ZW#NtTFx%{8;YC`eoKU`;K*Z%Cj2R4mrB7`_HI zHyhNaP}-CPIIc1e;v}UDzHD88mY-u{)h?{mepJ{!lNYI8q%1I7A+ZMvF5SXPX(GSr zgd*&9KhezkprgABZ;hqfm81~Nr>V$cA8l2jqj^YzrxP;E*==@?~D@RZz6KbCDm zgBgZ>giAY}@`kLbvdM9?dFb>=-Gg5AOHN_eGZ>kI``3!@U$?fu6HfA~5xnJA?2`Mf zyX5=)pn=DEP<%{gz>7?Y-pA-H3?1WRxhCn7sR7pQgFtVd?ZkXBRD-o=MhprD5y0Az#o`_iNm%46fU? zm|W!0%Kpt>zdIMqZt83M-LB$Iv7AJCE_5IJl4Y0s<~(zFj&UB)@CCW8~*!9|{wj0I&cfTwyl2 zG<-7=M#)heaUo_UQkIx>+2_iJwBlS>(~{K&BWh@Qhe+!RVqiG{hFc}odThhQ-QDUZ zYWd>ay!VK5#8KHg8yx~{R7vW!RPN14U8Pm`?SuED_SPGIX!ntFdKmr#Gp)BKUW&gd zzFG8v@@;>_m|5u3WY6T~$t8A_q z3DnmWi=9*Ky&~sp)c5XerQuTraMnz4O*Mqi$+S5vfy}po+xDA!cfwQ*aUsF`Uy<`S D`swV^ literal 0 HcmV?d00001 From 54a528f0a2bd642041c837c5ed8764a17cb468c9 Mon Sep 17 00:00:00 2001 From: SimonIT Date: Mon, 6 Jan 2025 16:17:51 +0100 Subject: [PATCH 3/4] refactor: Add sign tasks only if configured --- .../gdx/jnigen/gradle/JnigenExtension.java | 22 +++++- .../gdx/jnigen/gradle/JnigenSignTask.java | 75 +++++++++---------- 2 files changed, 55 insertions(+), 42 deletions(-) diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java index d3b9397c..43403fd3 100644 --- a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenExtension.java @@ -75,7 +75,8 @@ public class JnigenExtension { Action robovm; JnigenBindingGeneratorExtension generator; - JnigenSigningExtension signing = new JnigenSigningExtension(); + JnigenSigningExtension signing; + DefaultTask signAllTask; @Inject public JnigenExtension (Project project) { @@ -98,7 +99,14 @@ public void nativeCodeGenerator (Action container) { } public void signing (Action container) { + if (signing != null) + throw new IllegalStateException("signing already configured"); + signing = new JnigenSigningExtension(); container.execute(signing); + + signAllTask = project.getTasks().create("jnigenSignAll", DefaultTask.class); + signAllTask.setGroup("jnigen"); + signAllTask.setDescription("Signs all signable native libraries"); } public void all (Action container) { @@ -263,9 +271,15 @@ private void checkForTasksToAdd (BuildTarget target) { jnigenBuildTask.setBuildTarget(target); jnigenBuildTask.dependsOn(jnigenTask); - JnigenSignTask jnigenSignTask = project.getTasks().create("jnigenSign" + os.name() + "_" + architecture.getDisplayName() + bitness.name(), JnigenSignTask.class, this); - jnigenSignTask.setBuildTarget(target); - jnigenSignTask.dependsOn(jnigenBuildTask); + if (signing != null) { + if (os == Windows && signing.getJsignParams() != null + || (os == MacOsX || os == IOS) && signing.getIdentity() != null) { + JnigenSignTask jnigenSignTask = project.getTasks().create("jnigenSign" + os.name() + "_" + architecture.getDisplayName() + bitness.name(), JnigenSignTask.class, this); + jnigenSignTask.setBuildTarget(target); + jnigenSignTask.dependsOn(jnigenBuildTask); + signAllTask.dependsOn(jnigenSignTask); + } + } platformLevelTargetsSeen.get(platform).mustRunAfter(jnigenBuildTask); if (HostDetection.os == os && HostDetection.architecture == architecture && HostDetection.bitness == bitness) { diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java index 7ef5806f..f665b962 100644 --- a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java @@ -44,46 +44,45 @@ public void run() { BuildConfig buildConfig = new BuildConfig(ext.sharedLibName, ext.subProjectDir + ext.temporaryDir, ext.subProjectDir + ext.libsDir, ext.subProjectDir + ext.jniDir, null, new FileDescriptor(ext.subProjectDir)); RuntimeEnv env = new RuntimeEnv(); List args = new ArrayList<>(); - switch (buildTarget.os) { - case Windows: - Map params = ext.signing.getJsignParams(); - params.put("file", buildTarget.getTargetBinaryFile(buildConfig).getPath()); - Closure jsign = (Closure) ext.project.getExtensions().getByName("jsign"); - jsign.call(params); - break; - case MacOsX: - case IOS: - File codesign = ToolFinder.getToolFile("codesign", env, true); - args.add("-s"); - args.add(ext.signing.getIdentity()); - args.add("-f"); - args.add(buildTarget.getTargetBinaryFile(buildConfig).getPath()); - ToolchainExecutor.execute(codesign, new File(""), args, new ToolchainExecutor.ToolchainCallback() { - @Override - public void onInfoMessage(String message) { - log.info(message); - } + switch (buildTarget.os) { + case Windows: + Map params = ext.signing.getJsignParams(); + params.put("file", buildTarget.getTargetBinaryFile(buildConfig).getPath()); + Closure jsign = (Closure) ext.project.getExtensions().getByName("jsign"); + jsign.call(params); + break; + case MacOsX: + case IOS: + File codesign = ToolFinder.getToolFile("codesign", env, true); + args.add("-s"); + args.add(ext.signing.getIdentity()); + args.add("-f"); + args.add(buildTarget.getTargetBinaryFile(buildConfig).getPath()); + ToolchainExecutor.execute(codesign, new File(""), args, new ToolchainExecutor.ToolchainCallback() { + @Override + public void onInfoMessage(String message) { + log.info(message); + } - @Override - public void onErrorMessage(String message) { - log.error(message); - } + @Override + public void onErrorMessage(String message) { + log.error(message); + } - @Override - public void onSuccess() { - log.info("Signing successful"); - } + @Override + public void onSuccess() { + log.info("Signing successful"); + } - @Override - public void onFail(int statusCode) { - log.error("Signing failed with status code: {}", statusCode); - } - }); - break; - case Linux: - case Android: - log.warn("Signing not supported for {}", buildTarget.os); - break; - } + @Override + public void onFail(int statusCode) { + log.error("Signing failed with status code: {}", statusCode); + } + }); + break; + default: + log.warn("Signing not supported for {}", buildTarget.os); + break; + } } } From 6ab3387e23827168a9b7f7fad3480c70db50aed4 Mon Sep 17 00:00:00 2001 From: SimonIT Date: Tue, 7 Jan 2025 11:43:00 +0100 Subject: [PATCH 4/4] fix: Set working dir for codesign --- .../java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java index f665b962..3308f00a 100644 --- a/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java +++ b/compiling/gdx-jnigen-gradle/src/main/java/com/badlogic/gdx/jnigen/gradle/JnigenSignTask.java @@ -58,7 +58,7 @@ public void run() { args.add(ext.signing.getIdentity()); args.add("-f"); args.add(buildTarget.getTargetBinaryFile(buildConfig).getPath()); - ToolchainExecutor.execute(codesign, new File(""), args, new ToolchainExecutor.ToolchainCallback() { + ToolchainExecutor.execute(codesign, getProject().getProjectDir(), args, new ToolchainExecutor.ToolchainCallback() { @Override public void onInfoMessage(String message) { log.info(message);