Android 无法使用名为给定版本的maven构建apk
在使用maven构建时,我尝试使用属性文件读取属性,将这些值设置为apk 我用过的插头 ->>>>>> 这将生成myapk.01.00.00.20120127-2010.jar,但apk是myapk.${major\u version}.a.${minor\u version}.${patch\u version}.20120127-2010.apkAndroid 无法使用名为给定版本的maven构建apk,android,maven,build,apk,Android,Maven,Build,Apk,在使用maven构建时,我尝试使用属性文件读取属性,将这些值设置为apk 我用过的插头 ->>>>>> 这将生成myapk.01.00.00.20120127-2010.jar,但apk是myapk.${major\u version}.a.${minor\u version}.${patch\u version}.20120127-2010.apk 让我知道我在这里遗漏了什么?我不知道确切的原因,但看起来properties maven plugin可以替换pom.xml中properties
让我知道我在这里遗漏了什么?我不知道确切的原因,但看起来properties maven plugin可以替换pom.xml中properties标签下正确定义的属性值,maven只能识别pom.xml中显式定义的属性名称,以下pom适合我:
<properties>
<!-- use property name defined in your buildNumber.properties -->
<external.build.version>${major_version}</external.build.version>
</properties>
... ...
<build>
<sourceDirectory>src</sourceDirectory>
<!-- use property name defined earlier in this pom.xml -->
<finalName>myapk.${external.build.version}</finalName>
... ...
${major_version}
... ...
src
myapk.${external.build.version}
... ...
编辑:在我看来,maven预定义的构建生命周期是非常独特的,特别是当与其他构建工具(如ADT)集成时,用于生成apk的pom版本非常有限,而且,从,当前版本的android maven插件没有提供任何配置,用于在apk目标期间自定义最终apk名称。一个类似的讨论被贴了出来,最后得到了一个不太完美的答案 最后,android maven插件提供了在zipalign目标期间自定义最终apk名称的选项:
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<sdk>
<platform>13</platform>
</sdk>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
<zipalign>
<verbose>true</verbose>
<inputApk>${project.build.directory}/${project.artifactId}-${project.version}.apk</inputApk>
<!-- directly use property name defined in external properties file here -->
<outputApk>${project.build.directory}/${project.artifactId}-${major_version}-aligned.apk</outputApk>
</zipalign>
</configuration>
<executions>
<execution>
<id>alignApk</id>
<phase>package</phase>
<goals>
<goal>zipalign</goal>
</goals>
</execution>
</executions>
</plugin>
com.jayway.maven.plugins.android.generation2
安卓maven插件
符合事实的
13
符合事实的
符合事实的
${project.build.directory}/${project.artifactId}-${project.version}.apk
${project.build.directory}/${project.artifactId}-${major\u version}-aligned.apk
alignApk
包裹
优化
这可能是一个解决方案,如果您使用maven zipalign您的最终apk(我想您会这样做),您将得到所有三个输出文件(.ap_u和.apk和.jar)以默认的${project.version}结尾,再加上另一个以${major_version}对齐的apk结尾,但是只有这三个文件以默认的${project.version}结尾将安装在maven中央存储库中。我不知道确切原因,但看起来properties maven plugin可以替换pom.xml中properties标记下正确定义的属性值,maven只能识别pom.xml中显式定义的属性名称,以下pom对我有效:
<properties>
<!-- use property name defined in your buildNumber.properties -->
<external.build.version>${major_version}</external.build.version>
</properties>
... ...
<build>
<sourceDirectory>src</sourceDirectory>
<!-- use property name defined earlier in this pom.xml -->
<finalName>myapk.${external.build.version}</finalName>
... ...
${major_version}
... ...
src
myapk.${external.build.version}
... ...
编辑:在我看来,maven预定义的构建生命周期是非常独特的,特别是当与其他构建工具(如ADT)集成时,用于生成apk的pom版本非常有限,而且,从,当前版本的android maven插件没有提供任何配置,用于在apk目标期间自定义最终apk名称。一个类似的讨论被贴了出来,最后得到了一个不太完美的答案 最后,android maven插件提供了在zipalign目标期间自定义最终apk名称的选项:
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<sdk>
<platform>13</platform>
</sdk>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
<zipalign>
<verbose>true</verbose>
<inputApk>${project.build.directory}/${project.artifactId}-${project.version}.apk</inputApk>
<!-- directly use property name defined in external properties file here -->
<outputApk>${project.build.directory}/${project.artifactId}-${major_version}-aligned.apk</outputApk>
</zipalign>
</configuration>
<executions>
<execution>
<id>alignApk</id>
<phase>package</phase>
<goals>
<goal>zipalign</goal>
</goals>
</execution>
</executions>
</plugin>
com.jayway.maven.plugins.android.generation2
安卓maven插件
符合事实的
13
符合事实的
符合事实的
${project.build.directory}/${project.artifactId}-${project.version}.apk
${project.build.directory}/${project.artifactId}-${major\u version}-aligned.apk
alignApk
包裹
优化
这可能是一个解决方案,如果您使用maven zipalign您的最终apk(我想您会这样做),您将得到所有三个输出文件(.ap_u和.apk和.jar)以默认的${project.version}结尾,再加上另一个以${major_version}对齐的apk结尾,但是只有这三个文件以默认的${project.version}结尾将安装在maven中央存储库中。也尝试了此操作。。仅适用于jar,不适用于apk的名称..:(是的,zipalign是我最后的选择..谢谢:)也试过了。。仅适用于jar,不适用于apk的名称..:(是的,zipalign是我的最后一个选择..谢谢:)你能再说一遍吗,生成了什么,你希望得到什么(两个不同的文件名)?我对“.a”有点困惑,它在你的评论模式中,但在POM.OOps的模式中。。。“a”是个打字错误。。expected apk myapk.01.00.00.20120127-2010.apk实际的apk是myapk.${major\u version}.${minor\u version}.${patch\u version}.20120127-2010.apkAh,我得到了:apk名称中的占位符没有替换<代码>只影响jar最终名称,而apk插件似乎无法正确捕获此设置。您是否可以再次重复,生成的是什么以及您希望得到什么(两个不同的文件名)?我对“.a”有点困惑,它在你的评论模式中,但在POM.OOps的模式中。。。“a”是个打字错误。。expected apk myapk.01.00.00.20120127-2010.apk实际的apk是myapk.${major\u version}.${minor\u version}.${patch\u version}.20120127-2010.apkAh,我得到了:apk名称中的占位符没有替换<代码>只影响jar的最终名称,而apk插件似乎无法正确捕获此设置。