0

Android アプリケーションに svn リビジョン番号を追加する際に問題があります。私はグーグルで調査を行い、これを見つけました:http: //ballardhack.wordpress.com/2010/09/28/subversion-revision-in-android-app-version-with-eclipse/ しかし、私はしたくありませんこのプロジェクトを Eclipse でビルドします。「mvn clean install android:deploy」でプロジェクトをコンパイルします

これも見つけました:http://maven-svn-revision-number-plugin.googlecode.com/svn/site/examples/resource_filtering.html

ファイル 'revision.txt in /res/raw' を作成し、pom.xml に次のように追加します。

<build>
        <finalName>${project.artifactId}</finalName>
        <sourceDirectory>src</sourceDirectory>

        <resources>
            <resource>
                <directory>res/raw/</directory>
                <filtering>true</filtering>
            </resource>
        </resources>


        <plugins>
           <plugin>
                <groupId>com.google.code.maven-svn-revision-number-plugin</groupId>
                <artifactId>svn-revision-number-maven-plugin</artifactId>
                <version>1.13</version> <!-- please use the latest version -->
                <executions>
                    <execution>
                        <goals>
                            <goal>revision</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <entries>
                        <entry>
                            <prefix>prefix</prefix>
                        </entry>
                    </entries>
                </configuration>
            </plugin>

しかし、うまくいきません!ビルド後 (mvn クリーン インストール)、ファイル 'revision.txt' を開くと、次のようになります。

repository = ${prefix.repository}
path = ${prefix.path}
revision = ${prefix.revision}
mixedRevisions = ${prefix.mixedRevisions}
committedRevision = ${prefix.committedRevision}
committedDate = ${prefix.committedDate}
status = ${prefix.status}
specialStatus = ${prefix.specialStatus}

Maven SVN Revision Number Plugin を使用してファイルにリビジョン番号を付ける方法は?

4

1 に答える 1

1

解決策を見つけました!ファイルから Subversion を読み取るように設定し、AndroidManifest.xml を更新します。

pom.xml に次を追加します。

<plugin>
                <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                <artifactId>android-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>update-manifest</id>
                        <goals>
                          <goal>manifest-update</goal>
                        </goals>
                        <configuration>
                          <manifest>
                            <versionName></versionName>
                            <versionCode>${prefix.revision}</versionCode>
                            </manifest>
                            </configuration>
                      </execution>
                </executions>

            </plugin>

Javaコードで:

int version = 0;
        try {
            PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), 0);
            version = pi.versionCode;
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("TAG", "Version number not found in package", e);
        }

        String version_name = "??";
        try {
            PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), 0);
            version_name = pi.versionName;
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("TAG", "Version name not found in package", e);
        }
        TextView tv_version = (TextView)findViewById(R.id.version);
        tv_version.setText("Version: "+ version_name + "." + String.valueOf(version));

そして最後に動作します:)

于 2012-08-17T13:56:25.017 に答える