it-swarm.com.de

Installationsfehler: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED?

Ich entwickle eine kleine Anwendung, die alle Anwendungen auflistet, die auf dem Android= Gerät installiert sind. Aber ich erhalte die folgende Fehlermeldung, während ich versuche, den Code auszuführen.

Installationsfehler: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

Bitte kann mir jemand helfen, diesen Fehler zu beheben.

83
S.P

Dem Aktivitätsnamen sollte "." Vorangestellt werden. in Ihrer Manifest-Datei.

66

Es könnte einen anderen Grund für diesen Fehler geben. Das Attribut

Android:taskAffinity="string" 

Sollte immer mit einem Punkt beginnen, wie:

Android:taskAffinity=".string" 
64
Andy

Ich hatte diesen Fehler, weil ich so große Buchstaben in meinem Paketnamen hatte

Com.Example.packagename

nachdem ich es auf sowas geändert hatte

com.example.packagename

es wurde gelöst

39
Samuel

Der Fehlercode INSTALL_PARSE_FAILED_MANIFEST_MALFORMED wird von PackageParser.Java zurückgegeben, wenn eine große Anzahl von Fehlern in der Datei manifest.xml erkannt wird.

Um den Fehler einzugrenzen, schauen Sie in logcat nach (wenn Sie den Befehl 'adb install foo.apk' ausführen). In dem Problem, auf das ich gestoßen bin, enthielt logcat:

W/ActivityManager(  360): No content provider found for permission revoke: file:///data/local/tmp/foo.apk
D/Finsky  (32707): [1] PackageVerificationReceiver.onReceive: Verification requested, id = 6
D/Finsky  (32707): [1] WorkerTask.onPreExecute: Verification Requested for id = 6,   data=file:///data/local/tmp/foo.apk flags=112 fromVerificationActivity=false
W/PackageParser(32707): /data/local/tmp/foo.apk (at Binary XML file line #214): <provider> does not include authorities attribute
D/Finsky  (32707): [716] PackageVerificationService.getPackageInfo: Cannot read archive for file:///data/local/tmp/foo.apk in request id=6
D/Finsky  (32707): [1] PackageVerificationReceiver.onReceive: Verification requested, id = 6
W/ActivityManager(  360): No content provider found for permission revoke: file:///data/local/tmp/foo.apk
I/PackageManager(  360): Copying native libraries to /data/app-lib/vmdl1205566381
W/PackageParser(  360): /data/app/vmdl1205566381.tmp (at Binary XML file line #214): <provider> does not include authorities attribute

In der vierten Zeile oben sehen Sie, dass PackageParser diese Zeile # 214 der manifest.xml-Datei beanstandet "<Anbieter> enthält kein Berechtigungsattribut". Nachfolgend finden Sie eine Auflistung aller Fälle in PackageParser, die diesen Fehlercode zurückgeben. (PackageParser ist die einzige Klasse, die den Fehlercode PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED erzeugt.)

In meinem Fall wird die Meldung "<Anbieter> enthält kein Berechtigungsattribut" von Zeile 2490 von PackagerParser.Java in der von parseApplication aufgerufenen Funktion parseProvider ausgegeben.


Ab der 4.1.1-Version von frameworks/base/core/Java/Android/content/pm/PackageParser.Java wird in diesen Methoden in diesen Zeilen auf PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED verwiesen. Wenn auf die Zeilennummer des Quellcodes eine Zeichenfolge in Anführungszeichen folgt, ist dies die in logcat gedruckte Nachricht. Wenn der Zeilennummer ein Java Ausdruck folgt, der den Fehlercode verursacht hat, sollte diese Funktion untersucht werden, um festzustellen, warum die Fehlermeldung zurückgegeben wurde In einigen Fällen konnte ich die Fehlerursache nicht auf einen bestimmten Methodenaufruf eingrenzen.

in parsePackage:
  536:  (only used in 'core apps' with no 'pkg')
  973:  "<manifest> has more than one <application>"
  1275: "Bad element under <manifest>: "      --if RIGID_PARSER

in parsePermissionGroup:
  1464: !parsePackageItemInfo(owner, perm.info, outError,
    "<permission-group>", sa,
    com.Android.internal.R.styleable.AndroidManifestPermissionGroup_name,
    com.Android.internal.R.styleable.AndroidManifestPermissionGroup_label,
    com.Android.internal.R.styleable.AndroidManifestPermissionGroup_icon,
    com.Android.internal.R.styleable.AndroidManifestPermissionGroup_logo)
  1482: !parseAllMetaData(res, parser, attrs, "<permission-group>", perm,
    outError)

in parsePermission:
  1506: !parsePackageItemInfo(owner, perm.info, outError,
    "<permission>", sa,
    com.Android.internal.R.styleable.AndroidManifestPermission_name,
    com.Android.internal.R.styleable.AndroidManifestPermission_label,
    com.Android.internal.R.styleable.AndroidManifestPermission_icon,
    com.Android.internal.R.styleable.AndroidManifestPermission_logo)
  1530: "<permission> does not specify protectionLevel"
  1541: "<permission>  protectionLevel specifies a flag but is not based on signature type"
  1548: !parseAllMetaData(res, parser, attrs, "<permission>", perm, outError)

in parsePersmissionTree:
  1572: !parsePackageItemInfo(owner, perm.info, outError,
    "<permission-tree>", sa,
    com.Android.internal.R.styleable.AndroidManifestPermissionTree_name,
    com.Android.internal.R.styleable.AndroidManifestPermissionTree_label,
    com.Android.internal.R.styleable.AndroidManifestPermissionTree_icon,
    com.Android.internal.R.styleable.AndroidManifestPermissionTree_logo)
  1585: "<permission-tree> name has less than three segments: "+perm.info.name
  1595: !parseAllMetaData(res, parser, attrs, "<permission-tree>", perm, outError)

in parseInstrumentation:
  1625: new Instrumentation(mParseInstrumentationArgs, new InstrumentationInfo())
  1648: "<instrumentation> does not specify targetPackage"
  1654: !parseAllMetaData(res, parser, attrs, "<instrumentation>", a, outError)

in parseApplication:
  1678: buildClassName(pkgName, name, outError) == null
  1851: (Set by various other functions)
  1869: parseActivity(owner, res, parser, attrs, flags, outError, false, hardwareAccelerated) == null
  1878: parseActivity(owner, res, parser, attrs, flags, outError, true, false) == null
  1887: parseService(owner, res, parser, attrs, flags, outError) == null
  1896: parseProvider(owner, res, parser, attrs, flags, outError) == null
    2484: "Heavy-weight applications can not have providers in main process"
    2890: "<provider> does not incude authorities attribute"
  1905: parseActivityAlias(owner, res, parser, attrs, flags, outError) == null
  1917: parseMetaData(res, parser, attrs, owner.mAppMetaData, outError) == null
  1969: "Bad element under <application>: "+tagName

Es ist bedauerlich, dass Sie sich in logcat und der Quelle umsehen müssen, um herauszufinden, was ein Problem verursacht.

27
Ribo

Überprüfen Sie Ihr Aktivitätsname in der Manifestdatei

oder der Paketname in Hauptaktivität/Klasse

<activity Android:name="MainActivity"></activity>
9
Diptendu

Ich habe das gleiche Problem, aber wenn ich Prozess wie folgt aufrufen:

<service
    Android:name="com.dexode.tama.AppService"
    Android:process="screen" >
</service>

Wenn ich wechsle zu:

<service
    Android:name="com.dexode.tama.AppService"
    Android:process=":screen" >
</service>

Alles fängt an zu funktionieren.

9
Dawid Drozd

Ich bin vor einiger Zeit auf dasselbe Problem gestoßen. In den Android docs wurde gesagt, dass wenn Sie nicht ":" als Präfix in Android:process Verwenden. du solltest einen Kleinbuchstaben verwenden, aber das haben sie nie gesagt, dann sollte es ein Paket wie der Prozessname sein, wie com.company.app.services.MyService

8
4gus71n

Beliebiger Name wie Android:name, Android:process sollte in Form eines Paketnamens vorliegen: beginnt mit a..z, kombiniert mit anderen mit ., ende nicht mit ....

7
user942821

Mein Problem war, dass ich geschrieben hatte (Beachten Sie die - gegen die _):

<meta_data ... /> 
<!-- instead of -->
<meta-data ... />

unter einer Aktivität. Dies könnte auch die Ursache für Ihr Problem sein.

7
Ymabob

Ich habe das gleiche Problem, nachdem ich Lokalisierungen hinzugefügt habe

<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="my.package"
    Android:versionCode="10"
    Android:versionName="@string/version_name" >

Die Zeichenfolge @string/version_name Wurde versehentlich in eine der neu hinzugefügten lokalisierten Zeichenfolgendateien übertragen (sie wurde nur in den neuen Dateien angezeigt). Nachdem Sie alle Lokalisierungen überprüft und @string/version_name Aus jeder Datei entfernt haben, außer deu locale, hat alles wieder funktioniert

2
vir us

Habe den gleichen Fehler! hatte ein leeres Erlaubnis-Tag und das verursachte das Problem!

2
bhumika singh
<activity/>

muss VORHER definiert werden

<activity-alias/>
2
Ajvo

Ich hatte diesen Fehler, weil der Code unten

<intent-filter>
                <action Android:name="Android.intent.action.VIEW" />
                <category Android:name="Android.intent.category.DEFAULT" />
                <data Android:mimeType="*" Android:Host="*" Android:scheme="content" />
            </intent-filter>

Als ich Android:mimeType="*" In Android:mimeType="*/*" Änderte, wurde dieser Fehler behoben.

2
Ke Di

Lesen Sie die Android Geräteprotokolle, um diesen Fehler zu diagnostizieren. Erwarten Sie eine "W/PackageParser" -Zeile, in der das Problem erläutert wird.

2
Dan Fabulich

der Ordner zum Erstellen von Namen für Aktivitäten muss klein geschrieben sein. Verwenden Sie keine Großbuchstaben für den Namen des Aktivitätsordners. Es ist immer besser, Kleinbuchstaben zu verwenden.

1
Khan

In meinem Fall habe ich mit einem Attribut wie dem folgenden auf ein Symbol verwiesen:

<meta-data Android:name="com.google.firebase.messaging.default_notification_icon" Android:resource="?attr/ic_notify" />

anstelle des ziehbaren:

<meta-data Android:name="com.google.firebase.messaging.default_notification_icon" Android:resource="@drawable/ic_notify" />

Ich benutze dieses Attribut an mehreren Stellen, aber es scheint nicht in Manifest zu funktionieren.

1
M.Sameer

<activity-alias> Ziel <activity> muss angegeben werden vor dem Alias.

1
Eugen Pechanec

Wenn Sie Multidex in Manifest verwenden, sollte es mit Wert oder Ressource hinzugefügt werden. Mögen..

<meta-data Android:name="Android.support.multidex.MultiDexApplication"
Android:value="@string/yourValue" />

OR

<meta-data Android:name="Android.support.multidex.MultiDexApplication"
Android:resource="@string/yourValue" />

bereinigen Sie dann das Projekt und installieren Sie die App neu.

1
Sam

Verwenden Android:resource im <meta-data> anstatt Android:src und Android:srcCompat

0
Bibin Johny

Ich weiß, dass es spät ist, hier zu antworten, aber ich mache einen seltsamen Fehler, also poste meine Antwort, wenn es jemandem hilft. In meinem Fall habe ich versehentlich die Main Launcher-Aktivität als Alias ​​hinzugefügt

   <activity-alias
        Android:name=".activities.SplashActivity"
        Android:targetActivity=".activities.SplashActivity">

        <intent-filter>
            <action Android:name="Android.intent.action.MAIN"/>
            <category Android:name="Android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity-alias>

Wenn ich also versuche, meine App auszuführen, wird ein Fehler angezeigt

Fehler beim Installieren von APK

Fehler [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]

Ich entferne einfach "-alias" Word aus der Aktivitätsregistrierung und meine App wird erfolgreich gestartet.

0
Ajay Pandya

In meinem Fall war die Ursache das Fehlen des Attributs Android: name in <Aktivitäts-Alias>. Es ist für <Aktivitäts-Alias> obligatorisch, darf jedoch keine vorhandene Klasse benennen. Lustige Sache ist - das Projekt kompiliert ohne Probleme.

0
Gena Batsyan

Ich hatte genau den gleichen Fehler. Ich hatte keinen Großbuchstaben in meinem Paket-/Anwendungsnamen und bereinigte das Projekt und andere Lösungen halfen mir auch nicht weiter. Immerhin habe ich ein neues Projekt erstellt und meine Sachen Schritt für Schritt auf das neue kopiert und überprüft, ob das Problem auftaucht. Immerhin hatte ich ein schönes und fehlerfreies Projekt ohne Redundanz. Manchmal ist es schwierig, die Ursache für diesen Fehler zu finden, sodass es einfacher ist, einen anderen Ansatz zu wählen.

ich hoffe das hilft jemandem!

0
Mehran Zamani

Mein Problem war wie folgt:

Ich habe meine Berechtigungen folgendermaßen angegeben und es hat nicht funktioniert.

<permission Android:name="Android.permission.INTERNET">
    <meta-data />
</permission>
<permission Android:name="Android.permission.ACCESS_NETWORK_STATE">
    <meta-data />
</permission>

Es hat gut funktioniert, als ich es wie folgt geändert habe:

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
0
shahensha

Ich erstelle eine neue Anwendung und richte sie auf Android Pie aus. Alles hat gut funktioniert und in letzter Zeit habe ich festgestellt, dass meine Anwendung nicht auf Android Naught und niedriger von Android OS) installiert werden kann.

Während der Installation wird eine Fehlermeldung angezeigt

Installation fehlgeschlagen mit der Meldung INSTALL_PARSE_FAILED_MANIFEST_MALFORMED.

Also, welche Fixes ich gemacht habe, sind wie folgt und sie müssen alle nur in der AndroidManifest.xml Datei gemacht werden.

Für Aktivität, Service, Empfänger und alles

Instead of:
    Android:name=".service.MyService"

Used: 
    Android:name="com.complete.appicationID.service.MyService"

Für Manifest-Berechtigungen

Instead of: 
     <uses-permission Android:name="{applicationId}.permission.MAPS_RECEIVE" />
     <permission
         Android:name="{applicationId}.permission.MAPS_RECEIVE"
         Android:protectionLevel="signature" />

Used:
     <uses-permission Android:name="com.complete.appicationID.permission.MAPS_RECEIVE" />
     <permission
         Android:name="com.complete.appicationID.permission.MAPS_RECEIVE"
         Android:protectionLevel="signature" />

Das waren alles Änderungen, die ich durchführen musste, damit es auch für Geräte mit niedrigeren Versionen funktioniert.

0
Harpreet

Nachdem ich mit diesem Problem zu kämpfen hatte, stellte ich fest, dass alle Werte, die als String-Ressourcenwert (aka @ string /) in den Manifesten (der Bibliotheken, die Sie auch verwenden) verwendet werden, nicht Teil von strings.xml von Lokalisierungen sein dürfen . Beispiel: Wenn Ihre Manifestdatei @ string/app_name verwendet, ist die Definition von string/app_name nur in Ihren Standardwerten/strings.xml und nicht in der alternativen Datei string.xml zulässig, die Sie für Lokalisierungen angeben. Ich hoffe das hilft..

0
Ozzz

Sie haben wahrscheinlich die Syntaxregeln eines Tags nicht befolgt. beispielsweise:

<meta-data
      Android:name="preloaded_fonts"/>

Dieses Tag ist unvollständig und verursacht diesen Fehler.

Übersicht über das App-Manifest

0
gadolf

Ich hatte diesen Fehler, weil ich die folgende Zeile hatte.

Android:protectionLevel="developer"

Nachdem ich es geändert habe

Android:protectionLevel="signature"

problem wurde gelöst

0
Swalih

Ich bin auf diesen Fehler gestoßen, als ich die Anwendungsklasse in ein falsches Paket gestellt habe!

0
farhad.kargaran

Möglicherweise sind andere Dateien fehlerhaft, aber in der IDE nicht hervorgehoben, z. B. die res/values ​​/ strings, auf die das Manifest möglicherweise für Elemente wie labels verweist.

0
m_cheung