Tworzę małą aplikację, która zawiera listę wszystkich aplikacji obecnych / zainstalowanych na urządzeniu z systemem Android. Ale pojawia się poniższy błąd, gdy próbuję uruchomić kod.
Błąd instalacji: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
Czy ktoś może mi pomóc rozwiązać ten błąd.
Odpowiedzi:
Może istnieć inny powód tego błędu. Atrybut
android:taskAffinity="string"
Powinien zawsze zaczynać się od kropki, na przykład:
android:taskAffinity=".string"
źródło
Nazwa działania powinna być poprzedzona przedrostkiem „.” w pliku manifestu.
źródło
Miałem ten błąd, ponieważ nazwa mojego pakietu zawierała duże litery
Com.Example.packagename
po tym, jak zmieniłem to na coś takiego
com.example.packagename
został rozwiązany
źródło
Kod błędu INSTALL_PARSE_FAILED_MANIFEST_MALFORMED jest zwracany przez PackageParser.java, gdy wykryje dowolny z dużej liczby błędów w pliku manifest.xml.
Aby zidentyfikować błąd, zajrzyj do logcat (po wykonaniu polecenia „adb install foo.apk”). W napotkanym problemie logcat zawierał:
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
W czwartym wierszu powyżej widać, że PackageParser zgłasza skargę, że wiersz 214 pliku manifest.xml „<provider> nie zawiera atrybutu uprawnień” . Zobacz poniższą listę wszystkich przypadków w PackageParser, które zwracają ten kod błędu. (PackageParser jest jedyną klasą, która generuje kod błędu PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED)
W moim przypadku komunikat „<provider> nie zawiera atrybutu uprawnień” jest generowany w linii 2490 PackagerParser.java w funkcji parseProvider wywoływanej przez parseApplication.
Z wersji 4.1.1 frameworks / base / core / java / android / content / pm / PackageParser.java w tych metodach znajdują się odwołania do PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED. Jeśli po numerze linii kodu źródłowego występuje ciąg znaków w cudzysłowie, to jest to komunikat drukowany w logcat. jeśli po numerze wiersza następuje wyrażenie Java będące kodem, który spowodował zwrócenie tego kodu błędu, należy zbadać tę funkcję, aby zobaczyć, co spowodowało zwrócenie komunikatu o błędzie. W kilku przypadkach nie mogłem wyodrębnić przyczyny błędu do jednego wywołania metody.
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
Szkoda, że musisz przeszukać logcat i źródło, aby dowiedzieć się, co powoduje problem.
źródło
IntentFilter.MalformedMimeTypeException
, co przegapiłem.Sprawdź nazwę swojego działania w pliku manifestu
lub nazwa pakietu w głównym działaniu / klasie
<activity android:name="MainActivity"></activity>
źródło
Mam ten sam problem, ale kiedy dzwonię do tego procesu:
<service android:name="com.dexode.tama.AppService" android:process="screen" > </service>
Kiedy zmieniam na:
<service android:name="com.dexode.tama.AppService" android:process=":screen" > </service>
Wszystko zaczyna działać.
źródło
Napotkałem ten sam problem jakiś czas temu, w dokumentach Androida powiedzieli, że jeśli nie używasz ":" jako prefiksu
android:process
, powinieneś użyć małej litery, ale nigdy tego nie powiedzieli, to powinien być pakiet podobny do procesu imię, na przykładcom.company.app.services.MyService
źródło
Dowolna nazwa taka jak
android:name
,android:process
powinna mieć formę nazwy pakietu: zaczyna się oda..z
, łączy się z innymi.
, nie kończy się na.
...źródło
android:process="com.my_pack.services.MyServiceProcess"
Nazwałem proces w taki sposób: (com.my_pack.services to pakiet, w którym znajduje się moja usługa) i błąd instalacji nie pojawi się po tym.Mój problem polegał na tym, że napisałem (zwróć uwagę na - w porównaniu z _):
<meta_data ... /> <!-- instead of --> <meta-data ... />
w ramach działania. Może to być również przyczyną Twojego problemu.
źródło
Mam ten sam błąd! miał pusty znacznik pozwolenia i to powodowało problem!
źródło
Po dodaniu lokalizacji napotykam na ten sam problem
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.package" android:versionCode="10" android:versionName="@string/version_name" >
Ciąg
@string/version_name
przypadkowo przeszedł do jednego z nowo dodanych zlokalizowanych plików łańcuchowych (pojawił się tylko w nowych plikach). Po sprawdzeniu wszystkich lokalizacji i usunięciu@string/version_name
z każdego pliku oprócz lokalizacji eng, wszystko znów działałoźródło
Przeczytaj dzienniki urządzenia z Androidem, aby zdiagnozować ten błąd. Spodziewaj się wiersza „W / PackageParser” wyjaśniającego problem.
źródło
<activity/>
należy zdefiniować PRZED
<activity-alias/>
źródło
Miałem ten błąd, ponieważ kod poniżej
<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>
Kiedy zmieniłem,
android:mimeType="*"
abyandroid:mimeType="*/*"
naprawić ten błąd.źródło
nazwa folderu utworzonego działania musi być małymi literami. Nie używaj wielkich liter jako nazwy folderu działań .... zawsze lepiej jest używać małych liter.
źródło
może to być z wielu powodów, ale dla mnie zostało to rozwiązane poprzez zmianę nazwy pakietu z nazwą małymi literami (nazwa pakietu to Działania, rozwiązane za pomocą działań).
źródło
Jeśli używasz multidex w manifeście, należy dodać do niego wartość lub zasób. Lubić..
<meta-data android:name="android.support.multidex.MultiDexApplication" android:value="@string/yourValue" />
LUB
<meta-data android:name="android.support.multidex.MultiDexApplication" android:resource="@string/yourValue" />
następnie wyczyść projekt i ponownie zainstaluj aplikację.
źródło
W moim przypadku odnosiłem się do ikony przy użyciu takiego atrybutu:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="?attr/ic_notify" />
zamiast rysowanego:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notify" />
Używam tego atrybutu w kilku miejscach, ale wygląda na to, że nie działa w manifest.
źródło
Tworzę nową aplikację i kieruję ją na Android Pie . Wszystko działało dobrze i dobrze, a ostatnio odkryłem, że moja aplikacja nie instaluje się na Androida Naught i starszej wersji systemu operacyjnego Android.
Podczas instalacji widzę komunikat o błędzie
Więc jakie poprawki, które zrobiłem, są następujące i wszystkie muszą być zrobione
AndroidManifest.xml
tylko w pliku.Za działalność, usługę, odbiorcę i wszystko
Instead of: android:name=".service.MyService" Used: android:name="com.complete.appicationID.service.MyService"
Dla uprawnień Manifest
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" />
To były wszystkie zmiany, które musiałem wprowadzić, aby działał również na urządzeniach z niższą wersją.
źródło
Cel
<activity>
musi być określony przed<activity-alias>
.źródło
Mogą istnieć inne pliki, które są zniekształcone, ale nie są wyróżnione w środowisku IDE, na przykład res / values / strings, do których manifest może się odnosić w przypadku etykiet.
źródło
W moim przypadku przyczyną był brak atrybutu android: name w <activity-alias>. Jest to obowiązkowe dla <alias-aktywności>, chociaż nie może nazywać istniejącej klasy. Zabawne jest to, że projekt kompiluje się bez problemów.
źródło
Mój problem był następujący:
Określałem swoje uprawnienia w następujący sposób i to nie działało.
<permission android:name="android.permission.INTERNET"> <meta-data /> </permission> <permission android:name="android.permission.ACCESS_NETWORK_STATE"> <meta-data /> </permission>
Działało dobrze, kiedy zmieniłem to na następujący:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
źródło
Miałem ten błąd, ponieważ miałem wiersz poniżej.
android:protectionLevel="developer"
Po zmianie na
android:protectionLevel="signature"
problem został rozwiązany
źródło
Po zmaganiu się z tym problemem odkryłem, że wszystkie wartości, które są używane jako wartość zasobu ciągu (aka @ string /) w manifestach (bibliotek, których również używasz), nie mogą być częścią strings.xml lokalizacji . Przykład: jeśli twój plik manifestów używa @ string / nazwa_aplikacji, definicja ciągu / nazwa_aplikacji jest dozwolona tylko w domyślnych wartościach / strings.xml, a nie w alternatywnym pliku string.xml, który podajesz do lokalizacji. Mam nadzieję że to pomogło..
źródło
Miałem ten sam błąd. nie miałem wielkich liter w nazwie mojego pakietu / aplikacji i wyczyściłem projekt, a inne rozwiązania również mi nie pomogły. w końcu stworzyłem nowy projekt i krok po kroku kopiowałem swoje rzeczy do nowego i sprawdzałem, czy problem się pojawia. w końcu miałem ładny i wolny od błędów projekt bez żadnej redundancji. czasami trudno jest znaleźć źródło tego błędu, więc łatwiej jest zastosować inne podejście.
mam nadzieję, że to komuś pomoże!
źródło
Napotkałem ten błąd, kiedy umieściłem klasę aplikacji w złym pakiecie!
źródło
Prawdopodobnie nie przestrzegałeś reguł składniowych dla tagu. na przykład:
<meta-data android:name="preloaded_fonts"/>
Ten tag jest niekompletny i powoduje ten błąd.
Omówienie manifestu aplikacji
źródło
Użyj
android:resource
w<meta-data>
zamiastandroid:src
iandroid:srcCompat
źródło
Wiem, że jest późno na odpowiedź, ale popełniam dziwny błąd, więc napisz moją odpowiedź, jeśli komuś to pomoże, W moim przypadku przez pomyłkę Dodałem główną aktywność programu uruchamiającego jako alias
<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>
Więc kiedy próbuję uruchomić aplikację, pojawia się błąd
Błąd podczas instalowania APK
Po prostu usunąłem słowo „-alias” z rejestracji aktywności i pomyślnie uruchomiłem moją aplikację.
źródło