Vla*_*ets 8 resources android reference version 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"
>
Run Code Online (Sandbox Code Playgroud)
以及位于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>
Run Code Online (Sandbox Code Playgroud)
稍后我尝试检索版本号以在我的应用程序的"关于"屏幕上显示它.
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(),0);
Log.d("PackageInfo", "Version name: " + String.valueOf(packageInfo.versionName));
Run Code Online (Sandbox Code Playgroud)
问题描述:
当我构建应用程序并自动将其安装在我的HTC设备上时,一切都很完美.版本名称通过引用传递,在"关于"屏幕上,我获取了logcat中记录的版本名称值.但是当我尝试构建应用程序并在模拟器上启动它时,我得到的null不是版本名称值.
我已经尝试使用Eclipse和IDEA构建应用程序并将其安装到模拟器.所以似乎问题与IDE无关.
更新:
还出现了一个额外的东西,它不能用于versionName和versionCode.应用程序无法部署到Google Play.出现以下错误:
该文件无效:ERROR获取'android:versionCode'属性:属性不是整数值
我认为这种方法/您如何使用它存在多种问题。
1.) 如果您可以编译 APK 并将其上传到 android 市场,并且使用了正确的版本号和名称,那么您就可以使用 android:versionCode="@integer/version_code" android:versionName="@ 的资源引用字符串/版本名称”
如果你不能,那么你不应该使用 rerences。
2.) 如果您打算采用这种方法,为什么要尝试使用 getResources().getString(R.string.version_name) 从 packageinfo 中检索它们呢?
总而言之,除了能够通过构建框交换资源文件之外,我没有看到这种方法有太多优势。在这种情况下,您可能需要使用后一种方法来填充您的“关于”屏幕。
| 归档时间: |
|
| 查看次数: |
5124 次 |
| 最近记录: |