Установка android:versionName в качестве ссылки на строковый ресурс приводит к исключению NullPointerException в эмуляторе

Я пытаюсь установить android:versionNameв моем манифесте Android как ссылку на строковый ресурс, хранящийся во внешнем файле ресурсов.

Ниже приведена выдержка из моего 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"
>

и содержимое файла build.xml, расположенного в каталоге res/valuesмоего проекта:

<?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, все работает идеально. Имя версии передается по ссылке, и на экране «О программе» я получаю значение имени версии, зарегистрированное в logcat. Но когда я пытаюсь собрать приложение и запустить его на эмуляторе, я получаю nullвместо значения имени версии.

Я уже пытался собрать и установить приложение на эмулятор с помощью Eclipse и IDEA. Так что похоже проблема не в IDE.

UPDATE:

Появилась еще одна вещь, которая не работает при таком использовании versionNameи versionCode. Приложение не может быть развернуто в Google Play. Появляется следующая ошибка:

Файл недействителен: ОШИБКА при получении атрибута 'android:versionCode': атрибут не является целочисленным значением

8
задан Vladimir Kosinets 20 March 2012 в 08:48
поделиться