Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法使用名为给定版本的maven构建apk_Android_Maven_Build_Apk - Fatal编程技术网

Android 无法使用名为给定版本的maven构建apk

Android 无法使用名为给定版本的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

在使用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标签下正确定义的属性值,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插件似乎无法正确捕获此设置。