gpt4 book ai didi

java - Xamarin 和 APK 签名 - 更改 JarSigner 的路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:24 27 4
gpt4 key购买 nike

当我构建我的 Xamarin 项目时,它使用的 jarsigner 工具的版本总是来自\Java\jdk1.6.0_39\bin\

我想知道我们是否可以换成不同版本的 JDK。

查看构建输出,它似乎归结为 MSBuild../Xamerin/Android.Build.Tasks.dll 告诉它....(见下文)

有没有办法让构建指向另一条路径...JDK 的更高版本?随便

11>Using "AndroidSignPackage" task from assembly "C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Build.Tasks.dll".
11>Task "AndroidSignPackage"
11> C:\Program Files (x86)\Java\jdk1.6.0_39\\bin\jarsigner.exe

最佳答案

查看 Xamarin 的自定义 MSBuild 任务库(C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Build.Tasks.dll)AndroidSignPackage extends AndroidToolTask​​ 扩展内置 ToolTask类(class)。看起来他们也正确地实现了它,因此您应该能够简单地传递额外的可选参数 ToolPath

如果您直接从 MSBuild 调用任务作为自定义构建过程的一部分,则命令可能如下所示:

<AndroidSignPackage
UnsignedApk="pathtounsignedapk"
SignedApkDirectory="signedapkoutputdir"
Keystore="yourkeystorelocation"
KeyAlias="thekeyaliasusedtosign"
StorePass="thepasswordforthekeystore"
ToolPath="NEWPATHTOJAVASDK" />

如果您尝试将此集成到 Visual Studio 环境中,您将需要开始在他们的 *.Targets 文件中四处寻找并追查它,如果您对 MSBuild 不满意,我不建议您这样做.

除此之外,按照 Murphy 的说法,在无证土地上的任何保证都可能而且将在最不合适的时候失效

在我的 Xamarin.Android.Common.targets (C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets) 版本的 Xamarin 工具链中,我们看到 AndroidSignPackage 是从 _Sign 目标中调用的,看起来,至少在这个版本中,正在传递 ToolPath 属性,它在这个版本中被定义为 $(JarsignerToolPath),进一步查看 .targets 文件我们看到它的定义如下:

<CreateProperty Value="$(_JavaSdkDirectory)\bin">
<Output TaskParameter="Value" PropertyName="JarsignerToolPath"
Condition="'$(JarsignerToolPath)' == ''"
/>
</CreateProperty>

看起来他们真的很好(至少在这个版本中)验证 $(JarsignerToolPath) 在设置这个值之前没有定义,如果是这个任务将不会做任何事情并且取现值。

此时您有几个选择,归结为它们将尊重 MSBuild 属性 $(JarsignerToolPath) 但它在此构建过程之前出现。如果您阅读有关 MSBuild 的文档,您会发现可以通过多种方式定义该属性。

最流行的(也是我的建议)是在您的 MSBuild 脚本(记住 CSPROJ 文件只是 MSBuild 脚本)中的一个属性组(我建议在构建配置下)中直接声明它,您可以简单地例如明确定义此属性:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|JDK17' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
... (Additional properties trimmed) ...
<JarsignerToolPath>C:\Program Files (x86)\Java\jdk1.7.0_71\bin</JarsignerToolPath>
</PropertyGroup>

或者,您可以在启动 Visual Studio/MSBuild 进程之前设置一个环境变量,以执行将 JarsignerToolPath 设置为正确属性的构建。

显然,您可以使用上述知识进一步研究并研究是否可以替换 $(_JavaSdkDirectory)...

关于java - Xamarin 和 APK 签名 - 更改 JarSigner 的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29673395/

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