3

我已经能够从我的代码创建一个 *.apk 文件,将文件放在 IIS 中,然后将其下载到许多 Android 手机上。安装后,应用程序完全按预期工作。

但是,手机重新启动后,应用程序名称更改为菜单中活动的完全限定 java 类名称(因此“MyActivity”变为“com.mycompany.MyActivity”),当我尝试转到菜单时> 设置,我收到一个错误,导致 android 强制关闭我的应用程序。

查看 DDMS,我发现我收到一个错误,表明它找不到我的首选项活动,尽管在初始安装时它可以正常工作。

我在 Windows XP 上使用 Eclipse,并且有几个 Android 设备可供我测试。

知道发生了什么吗?

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.company.app"
  android:versionCode="1"
  android:versionName="1.0">
<application android:icon="@drawable/logo" android:label="@string/app_name"> <!--android:debuggable="true">-->
    <activity android:name="com.company.app.ActivityMain"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.company.app.Preferences"
              android:label="@string/app_settings">
              <intent-filter>
                <category android:name="android.intent.category.PREFERENCE"></category>
                <action android:name="android.intent.action.MAIN"></action>
              </intent-filter>
    </activity>
    <service android:name="com.company.app.Service"></service>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
</manifest> 
4

2 回答 2

2

所以我终于得到了这个工作。我认为 HTC Hero(也可能是 HTC Droid Eris)上的软件包安装程序存在一些问题。

我从手机上卸载了我的应用程序,更改了我的主要活动的名称,并将其重新部署到 Hero 上。我开始立即获得“强制关闭”。我将设备连接到 DDMS 并查看了错误。它仍在寻找我的旧活动名称。我将设备重置为出厂设置并重新安装了相同的软件包(使用更新的名称),一切都按预期工作。

所以似乎包安装程序正在缓存旧清单的某些部分或其他东西,不太确定那里到底发生了什么。如果我有时间,我可能会多玩一些。

我不知道其他人是否可以验证这个问题,也许这是应该与HTC接洽的事情?

于 2010-02-01T00:43:37.660 回答
0

尝试使用此清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.company.app"
  android:versionCode="1"
  android:versionName="1.0">
<application android:icon="@drawable/logo" android:label="@string/app_name"> <!--android:debuggable="true">-->
    <activity android:name=".ActivityMain"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Preferences"
              android:label="@string/app_settings">
              <intent-filter>
                <category android:name="android.intent.category.PREFERENCE"></category>
                <action android:name="android.intent.action.MAIN"></action>
              </intent-filter>
    </activity>
    <service android:name=".Service"></service>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
</manifest>
于 2010-01-29T17:22:02.243 回答