2

このコマンドを実行したい:

zipalign [-f] [-v] <alignment> infile.apk outfile.apk

Maven の使用。Android SDK/tools ディレクトリでこのコマンドを実行する必要があります。誰でもこれを行う方法について私を助けることができますか? これはバッチファイルを使用して実行できると思いますが、バッチファイルの作成方法がわかりません。「mvn clean install」と入力したときにこのコマンドを実行する必要があります。ありがとう

4

2 に答える 2

4

Maven を使用したコマンドの実行

フェーズにバインドされたMaven Exec Pluginを使用できます。install

以下のスニペットでは、次のコマンドを実行するたびにping引数付きのコマンドが実行されます。8.8.8.8mvn install

<project>
...
<build>
    <plugins>
        <plugin>
            <artifactId>exec-maven-plugin</artifactId>
            <groupId>org.codehaus.mojo</groupId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <id>My Command Runner</id>
                    <phase>install</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>ping</executable>
                        <arguments>
                            <argument>8.8.8.8</argument>
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
...
</project>

 
以上です。

 

 


アップデート:

あなたが本当に困っているのは、任意のコマンドではなく、zipalignを実行していることです。そのためには、2 つの方法があります。

maven-android-plugin の組み込み zipalign を使用する

Android Maven Plugin のリリース 2.5.0 の時点で、zipalignゴールはプラグインの一部です。有効にするには、単にゴールzipalignを実行として追加し (例:packageフェーズに)、skipパラメーターをplugin configurationto に設定しますfalse

<zipalign><skip>false</skip></zipalign>

完全な<plugin>タグの例:

<plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>maven-android-plugin</artifactId>
        <inherited>true</inherited>
        <configuration>
                <sign>
                        <debug>false</debug>
                </sign>
                <zipalign>
                        <verbose>true</verbose>
                        <inputApk>${project.build.directory}/${project.artifactId}.apk</inputApk>
                        <outputApk>${project.build.directory}/${project.artifactId}-signed-aligned.apk
                        </outputApk>
                </zipalign>
        </configuration>
        <executions>
                <execution>
                        <id>alignApk</id>
                        <phase>package</phase>
                        <goals>
                                <goal>zipalign</goal>
                        </goals>
                </execution>
        </executions>
</plugin>

ソース:

Exec-Maven プラグインを使用した Zipalign

以下のコードは、Zip アラインメントの機能をフェーズにバインドし、確認packageせずに以前の Zip アラインメント ファイルを上書きします。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.1.1</version>
    <executions>
        <execution>
            <id>zipalign</id>
            <goals>
                <goal>exec</goal>
            </goals>
            <phase>package</phase>
            <configuration>
                <executable>${ANDROID_HOME}/tools/zipalign</executable>
                 <arguments>
                    <argument>-f</argument>
                    <argument>4</argument>
                    <argument>target/${project.build.finalName}.apk</argument>
                    <argument>target/${project.build.finalName}-zipped.apk</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

このプロファイルは、実際の APK の pom に追加する必要があることに注意してください。親ポンに追加することはできません。これは、アーティファクト名 ( ) を定義する Maven プロパティを使用するためですproject.build.finalName

于 2013-05-22T00:41:23.887 に答える
1

Maven を使用して Android プロジェクトをビルドする場合は、zipalign ツールを直接サポートするmaven-android-plugnを使用する必要があります。

于 2013-05-22T02:47:53.347 に答える