【发布时间】:2014-01-11 13:35:26
【问题描述】:
我们最近开发了一款 Android 应用并通过 Google Play 发布。首先,我们创建了一个 beta 测试组,向其中添加了成员,并从每个人那里获得了反馈等。我们在用户设备上发布和安装此测试版没有问题。
我们将此测试版(API 级别 14+)升级为生产,但安装后应用突然开始失败并出现以下错误:
java.lang.RuntimeException: Unable to instantiate application x.x.x.App:
java.lang.ClassNotFoundException: x.x.x.App
在 AndroidManifest 文件中,Application 的 name 属性是完整的包名 x.x.x.App。我们将其更改为只是类名 App,一切都开始顺利进行。
但是,客户决定让应用与 API 10 - 13 兼容,我们相应地对 AndroidManifest 文件进行了更改。我们只是更改了 minSDK=10。我们再次进行了 beta 测试过程,没有其他错误等。
然后我们决定将这个应用程序推广到生产环境,现在我们得到了同样的错误
java.lang.RuntimeException: Unable to instantiate application x.x.x.App:
java.lang.ClassNotFoundException: x.x.x.App
在安装/升级到这个新版本时再次出现。
这里到底发生了什么 - 我需要一个解释(如果存在的话),因为我无法找到它的任何含义?
编辑:清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.expatindenmark.adquota"
android:versionCode="8"
android:versionName="3.2" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name="App"
android:allowBackup="false"
android:icon="@drawable/ic_launcher_hoejtid_ikon"
android:label="@string/app_name" >
<activity
android:name="com.expatindenmark.adquota.SplashActivity"
android:configChanges="locale"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.expatindenmark.adquota.AdquotaTabActivity"
android:configChanges="locale"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar" >
</activity>
</application>
</manifest>
【问题讨论】:
-
发布您的清单文件...
-
您在之前的清单或证书中是否有任何更改。
-
我们在新版本中唯一改变的是 minSDK - 将 14 替换为 10。
-
@PiyushGupta 好的 - 我将 name = "App" 更改为 name = ".App",现在它可以工作了。这很烦人,缺乏一致性是可怕的!我仍然需要某种解释,为什么这个问题会出现在已经投入生产的应用中。
标签: android android-manifest apk