Android APK部署问题

Android APK部署问题,android,android-manifest,Android,Android Manifest,我已经能够从我的代码创建一个*.apk文件,将该文件 并将其下载到许多Android手机上。在 安装后,应用程序将完全按照预期工作 但是,手机重新启动后,应用程序名称将更改为 菜单中活动的完全限定java类名(so “MyActivity”变为“com.mycompany.MyActivity”),当我试图离开时 在菜单>设置中,我得到一个导致android强制关闭的错误 我的申请书 查看DDMS,我发现有一个错误指示它可以 找不到我的首选项活动,尽管最初 安装后,它工作正常 我在Windows

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

但是,手机重新启动后,应用程序名称将更改为 菜单中活动的完全限定java类名(so “MyActivity”变为“com.mycompany.MyActivity”),当我试图离开时 在菜单>设置中,我得到一个导致android强制关闭的错误 我的申请书

查看DDMS,我发现有一个错误指示它可以 找不到我的首选项活动,尽管最初 安装后,它工作正常

我在WindowsXP上使用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> 

尝试使用此清单

<?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>

所以我终于让它起作用了。我认为HTC Hero(可能还有HTC Droid Eris)上的软件包安装程序有一些问题

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

因此,包安装程序似乎正在缓存旧清单的某些部分或其他内容,但并不确定那里到底发生了什么。如果我有时间,我可以再玩一会儿


我不知道是否有其他人可以验证这个问题,也许这是HTC应该解决的问题?

你能编辑你的问题并发布你的清单吗?另外,这种情况是否发生在各种手机上,或者您是否只试过一部(如果是,是哪部手机)?另外,你的应用程序中是否有“菜单>设置”功能?应用程序信息(设置->应用程序->管理应用程序->你的应用程序)在重新启动之前和之后会说什么?我已经编辑了我的问题,将我的清单包括在内。我主要与HTC Hero合作,但已经在一些设备上试用过(HTC Droid Eris或HTC纹身)。菜单>设置是打开“我的首选项”活动的“我的菜单”选项。重新启动前,设置>应用程序>管理应用程序将我的应用程序列为字符串/app_name的值。重新启动后,会显示com.company.app.ok,因此需要快速更新。我编译了著名的记事本示例程序,并使用与部署我自己的应用程序相同的过程进行了部署,一切都按预期进行。这让我相信这是我的代码或清单中的东西,而不是我的环境。另一个更新。SDK下载的HelloActivity示例展示了与我的应用程序相同的行为。如果我安装了它,一切都很好,但是在重新启动时,应用程序的名称会更改为包名。我还注意到,在Google示例中,他们在androidmanifest.xml中的类名前没有加句点。这导致了与我以前看到的相同的行为。我不认为对名字进行不同的限定是个问题。在做了更多的尝试之后(通过创建一个单独的测试项目),似乎一切都很好,直到我添加了另一个活动。也许我宣布这些活动的方式是不正确的?