AJM*_*AJM 4 java msbuild android xamarin visual-studio-2013
当我构建我的Xamarin项目时,它使用的jarsigner工具的版本始终来自\ Java\jdk1.6.0_39\bin \
我想知道我们是否可以更改为不同版本的JDK.
看看构建输出它似乎归结为whatecer 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
Run Code Online (Sandbox Code Playgroud)
查看Xamarin的自定义MSBuild任务库(C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Build.Tasks.dll
)AndroidSignPackage
扩展AndroidToolTask
,它扩展了内置的ToolTask类.看起来他们也正确地实现了它,所以你应该能够简单地传递额外的可选参数ToolPath
.
如果您直接从MSBuild调用任务作为自定义构建过程的一部分,则该命令可能如下所示:
<AndroidSignPackage
UnsignedApk="pathtounsignedapk"
SignedApkDirectory="signedapkoutputdir"
Keystore="yourkeystorelocation"
KeyAlias="thekeyaliasusedtosign"
StorePass="thepasswordforthekeystore"
ToolPath="NEWPATHTOJAVASDK" />
Run Code Online (Sandbox Code Playgroud)
如果您正在尝试在Visual Studio环境中集成这些功能,则需要在*.Targets文件中开始浏览并追逐它,如果您对MSBuild不满意我不建议这样做.
除此之外,没有任何保证可以在未经处理的土地上进行保证,并且在最短的时间内会因此而破裂.
在我的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>
Run Code Online (Sandbox Code Playgroud)
看起来它们$(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>
Run Code Online (Sandbox Code Playgroud)
或者,您可以在启动Visual Studio/MSBuild进程之前设置环境变量,以执行将JarsignerToolPath设置为正确属性的构建.
显然你可以使用上述知识进一步研究它,如果你能替换它,就去研究$(_JavaSdkDirectory)
......
归档时间: |
|
查看次数: |
4944 次 |
最近记录: |