android:versionName
を外部リソースファイルに格納された文字列リソースへの参照として、Androidマニフェストに設定しようとしています。文字リソースへの参照としてandroid:versionNameを設定すると、エミュレータでNullPointerExceptionが発生します
は私のAndroidManifest.xml
からの抜粋です:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.toycorporation"
android:versionCode="@integer/version_code"
android:versionName="@string/version_name"
>
と私のプロジェクトのres/values
disrectoryの下にあるbuild.xmlファイルの内容:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<item type="string" name="build_date">03/15/2012</item>
<item type="integer" name="version_code">315281</item>
<item type="string" name="version_name">3.15.28.1</item>
</resources>
後、私は、バージョン番号を取得しようアプリケーションの[バージョン情報]画面に表示します。
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(),0);
Log.d("PackageInfo", "Version name: " + String.valueOf(packageInfo.versionName));
問題の説明:私は、アプリケーションを構築し、自動的に私のHTCのデバイスにインストールする場合は
すべてが完璧に動作します。バージョン名は参照で渡され、About画面ではバージョン名の値がlogcatに記録されます。 しかし、アプリケーションをビルドしてエミュレータで起動しようとすると、バージョン名の代わりにnull
が得られます。
EclipseとIDEAを使用してエミュレータにアプリケーションをビルドしてインストールしようとしました。 問題はIDEに関連していないようです。
UPDATE:
1つの追加のものが登場しversionName
とversionCode
のような使用では動作しません。アプリケーションをGoogle Playにデプロイすることはできません。次のエラーが表示されます:「:versionCodeアンドロイド」属性:ERROR取得:
ファイルが無効である 属性が
' 3.15.28.1 'を使用していますか? –
いいえ、そうではありません。私は 'strings.xml'に単純な文字列リソースを追加しようとしましたが、@Espiandevがアドバイスしたように、' AndroidManifest.xml'でそれを参照しています。まだ運がありません。 –
重複するhttp://stackoverflow.com/questions/6018079/reference-an-integer-resource-for-android-manifest-versioncode –