2010-01-29 13 views
3

J'ai été en mesure de créer un fichier * .apk à partir de mon code, placez le fichier dans IIS, et le télécharger sur un certain nombre de téléphones Android. Lors de l'installation , l'application fonctionne exactement comme prévu.APK Deployment Issue

Cependant, après un téléphone est redémarré, le nom de l'application est modifié pour le nom de la classe Java-qualifed de l'activité dans le menu (si « MyActivity » devient « com.mycompany.MyActivity »), et quand J'essaie d'aller à Menu> Paramètres, je reçois une erreur qui provoque Android à forcer fermer mon application. En regardant dans DDMS, je vois que j'obtiens une erreur indiquant qu'il peut pas trouver mon activité de préférences, malgré le fait lors de l'installation initiale , cela fonctionne correctement. J'utilise Eclipse sur Windows XP, et j'ai plusieurs appareils Android au .

Une idée de ce qui se passe?

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> 
+0

Pouvez-vous éditer votre question et poster votre manifeste? Aussi, est-ce arrivé sur une variété de téléphones, ou avez-vous seulement essayé un (et si oui, quel téléphone)? En outre, "Menu> Paramètres" contient-il quelque chose dans votre application? – CommonsWare

+0

Que disent les informations sur l'application (Paramètres -> Applications -> Gérer les applications -> votre application) avant et après le redémarrage? –

+0

J'ai modifié ma question pour inclure mon manifeste. J'ai travaillé principalement avec le HTC Hero, mais je l'ai essayé sur quelques appareils (HTC Droid Eris ou HTC Tattoo). Menu> Paramètres est mon option de menu pour ouvrir mon activité Préférences. Avant le redémarrage, les paramètres> Applications> Gérer les applications répertorie mon application en tant que valeur pour string/app_name. Après le redémarrage, il lit com.company.app. – Brandon

Répondre

2

Je finalement obtenu cela fonctionne. Je pense que l'installateur de paquet sur le HTC Hero (et peut-être le HTC Droid Eris) a quelques problèmes.

J'ai désinstallé mon application du téléphone, changé le nom de mon activité principale et l'ai redéployée sur le Hero. J'ai commencé à avoir immédiatement une "Force Close". J'ai connecté l'appareil à DDMS et j'ai regardé l'erreur. Il cherchait toujours mon ancien nom d'activité. J'ai réinitialisé l'appareil et réinstallé le même paquet (avec le nom mis à jour) et tout fonctionne comme prévu.

Il semble donc que le programme d'installation du paquet cache une partie de l'ancien manifeste ou quelque chose, pas vraiment sûr de ce qui s'y passe exactement. Je peux jouer avec un peu plus si j'ai le temps.

Je ne sais pas si quelqu'un d'autre pourrait vérifier ce problème, peut-être que c'est quelque chose qui devrait être pris avec HTC?

0

essayer d'utiliser cette

manifeste
<?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> 
+0

Cela a entraîné le même comportement que je voyais avant. Je ne pense pas que la qualification des noms soit différente. Après avoir fait un peu plus de jeu (en créant un projet de test séparé), il semble que tout va bien jusqu'à ce que j'ajoute une autre activité. Peut-être que je déclare ces activités incorrectes? – Brandon