Saya mengembangkan aplikasi kecil yang mencantumkan semua aplikasi yang ada / diinstal di perangkat android. Tetapi saya mendapatkan kesalahan di bawah ini ketika saya mencoba menjalankan kode.
Kesalahan penginstalan: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
Tolong adakah yang bisa membantu saya untuk menyelesaikan kesalahan ini.
Jawaban:
Mungkin ada alasan lain untuk kesalahan ini. Atribut
android:taskAffinity="string"
Harus selalu dimulai dengan titik, seperti:
android:taskAffinity=".string"
sumber
Nama aktivitas harus diawali dengan "." dalam file manifes Anda.
sumber
Saya mengalami kesalahan ini karena saya memiliki huruf kapital di nama paket saya seperti ini
Com.Example.packagename
setelah saya mengubahnya menjadi sesuatu seperti
com.example.packagename
itu terpecahkan
sumber
Kode kesalahan INSTALL_PARSE_FAILED_MANIFEST_MALFORMED dikembalikan oleh PackageParser.java ketika mendeteksi kesalahan dalam jumlah besar dalam file manifest.xml.
Untuk mengisolasi kesalahan, lihat di logcat (saat Anda melakukan perintah 'adb install foo.apk'). Dalam masalah yang saya temui, logcat berisi:
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
Pada baris keempat di atas, Anda dapat melihat bahwa PackageParser mengeluh bahwa baris # 214 dari file manifest.xml "<provider> tidak menyertakan atribut otoritas" . Lihat daftar di bawah ini dari semua kasus di PackageParser yang mengembalikan kode kesalahan itu. (PackageParser adalah satu-satunya kelas yang menghasilkan PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED kode kesalahan)
Dalam kasus saya, pesan "<provider> tidak menyertakan atribut otoritas" dihasilkan oleh baris 2490 dari PackagerParser.java dalam fungsi parseProvider yang dipanggil oleh parseApplication.
Dari versi 4.1.1 framework / base / core / java / android / content / pm / PackageParser.java, PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED direferensikan pada baris ini dalam metode ini. Jika nomor baris kode sumber diikuti dengan string yang dikutip, itu adalah pesan yang dicetak di logcat. Jika nomor baris diikuti oleh ekspresi Java yang merupakan kode yang menyebabkan kode kesalahan dikembalikan, fungsi itu harus diselidiki untuk melihat apa yang menyebabkan pesan kesalahan dikembalikan. Dalam beberapa kasus, saya tidak dapat mengisolasi penyebab kesalahan ke satu panggilan metode tertentu.
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
Sangat disayangkan bahwa Anda harus melihat-lihat di logcat dan sumbernya untuk mencari tahu apa yang menyebabkan masalah.
sumber
IntentFilter.MalformedMimeTypeException
yang saya lewatkan.Periksa nama Aktivitas Anda di file manifes
atau nama paket dalam aktivitas / kelas utama
<activity android:name="MainActivity"></activity>
sumber
Saya memiliki masalah yang sama tetapi ketika saya memanggil proses seperti ini:
<service android:name="com.dexode.tama.AppService" android:process="screen" > </service>
Ketika saya mengubah ke:
<service android:name="com.dexode.tama.AppService" android:process=":screen" > </service>
Semuanya mulai bekerja.
sumber
Saya mengalami masalah yang sama beberapa waktu lalu, di dokumen android mereka mengatakan bahwa jika Anda tidak menggunakan ":" sebagai awalan di
android:process
Anda harus menggunakan huruf kecil, tetapi mereka tidak pernah mengatakan itu, maka itu harus menjadi proses seperti paket nama, seperticom.company.app.services.MyService
sumber
Nama apapun seperti
android:name
,android:process
harus dalam bentuk nama paket: dimulai dengana..z
, gabungkan dengan yang lain dengan.
, jangan diakhiri dengan.
...sumber
android:process="com.my_pack.services.MyServiceProcess"
(com.my_pack.services adalah paket tempat layanan saya) dan kesalahan instalasi tidak akan muncul setelah itu.Masalah saya adalah bahwa saya telah menulis (Perhatikan - vs. _):
<meta_data ... /> <!-- instead of --> <meta-data ... />
di bawah suatu aktivitas. Ini mungkin penyebab masalah Anda juga.
sumber
Punya kesalahan yang sama! memiliki tanda izin kosong dan itulah yang menyebabkan masalah!
sumber
Saya mengalami masalah yang sama setelah menambahkan pelokalan
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.package" android:versionCode="10" android:versionName="@string/version_name" >
String tersebut
@string/version_name
secara tidak sengaja diteruskan ke salah satu file string lokal baru yang ditambahkan (hanya muncul di file baru). Setelah memeriksa semua pelokalan dan menghapus@string/version_name
dari setiap file kecuali bahasa lokal semuanya bekerja kembalisumber
Baca log perangkat Android Anda untuk mendiagnosis kesalahan ini. Harapkan baris "W / PackageParser" yang menjelaskan masalahnya.
sumber
<activity/>
harus didefinisikan SEBELUM
<activity-alias/>
sumber
Saya mengalami kesalahan ini karena kode di bawah ini
<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>
Ketika saya berubah
android:mimeType="*"
untukandroid:mimeType="*/*"
memperbaiki kesalahan ini.sumber
aktivitas membuat nama folder harus huruf kecil, jangan gunakan huruf kapital untuk nama folder aktivitas .... selalu lebih baik menggunakan huruf kecil.
sumber
ini bisa karena berbagai alasan, tetapi bagi saya itu diselesaikan dengan mengubah nama paket dengan nama huruf kecil (nama paket adalah Aktivitas, diselesaikan dengan aktivitas).
sumber
Jika Anda menggunakan multidex dalam manifes maka itu harus ditambahkan dengan nilai atau sumber daya. Suka..
<meta-data android:name="android.support.multidex.MultiDexApplication" android:value="@string/yourValue" />
ATAU
<meta-data android:name="android.support.multidex.MultiDexApplication" android:resource="@string/yourValue" />
kemudian bersihkan proyek dan instal ulang aplikasi.
sumber
Dalam kasus saya, saya mengacu pada ikon menggunakan atribut seperti ini:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="?attr/ic_notify" />
alih-alih drawable:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notify" />
Saya menggunakan atribut ini di beberapa tempat tetapi sepertinya atribut ini tidak berfungsi secara nyata.
sumber
Saya membuat aplikasi baru dan menargetkannya ke Android Pie . Semuanya bekerja dengan baik dan bagus, kemudian baru-baru ini saya menemukan bahwa aplikasi saya tidak dapat diinstal ke Android Tidak ada dan versi di bawah OS Android.
Saat menginstal, saya melihat pesan kegagalan
Jadi perbaikan apa yang saya buat adalah sebagai berikut dan semuanya perlu dilakukan dalam
AndroidManifest.xml
file saja.Untuk aktivitas, layanan, penerima dan semuanya
Instead of: android:name=".service.MyService" Used: android:name="com.complete.appicationID.service.MyService"
Untuk izin Manifes
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" />
Itu semua perubahan yang harus saya lakukan untuk membuatnya berfungsi untuk perangkat versi yang lebih rendah juga.
sumber
Target
<activity>
harus ditentukan sebelum itu<activity-alias>
.sumber
Mungkin ada file lain dengan format yang salah tetapi tidak disorot di IDE, misalnya res / values / strings yang mungkin dirujuk oleh manifes untuk hal-hal seperti label.
sumber
Dalam kasus saya, penyebabnya adalah tidak adanya atribut android: name di <activity-alias>. Ini wajib untuk <activity-alias> meskipun tidak boleh memberi nama kelas yang ada. Lucunya - proyek ini terkompilasi tanpa masalah.
sumber
Masalah saya adalah sebagai berikut:
Saya menentukan izin saya dengan cara berikut dan tidak berhasil.
<permission android:name="android.permission.INTERNET"> <meta-data /> </permission> <permission android:name="android.permission.ACCESS_NETWORK_STATE"> <meta-data /> </permission>
Itu berfungsi dengan baik ketika saya mengubahnya menjadi sebagai berikut:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
sumber
Saya mengalami kesalahan ini karena saya memiliki baris di bawah ini.
android:protectionLevel="developer"
Setelah saya mengubahnya menjadi
android:protectionLevel="signature"
masalah terpecahkan
sumber
Setelah berjuang dengan masalah ini, saya menemukan bahwa semua nilai yang digunakan sebagai nilai sumber daya string (alias @ string /) dalam manifes (dari pustaka yang Anda gunakan juga), tidak diizinkan untuk menjadi bagian dari strings.xml pelokalan . Contoh: jika file manifes Anda menggunakan @ string / app_name, definisi string / app_name hanya diizinkan di nilai default / strings.xml dan tidak di file string.xml alternatif yang Anda berikan untuk pelokalan. Saya harap itu membantu..
sumber
Saya mengalami kesalahan yang sama. Saya tidak memiliki karakter huruf besar di nama paket / aplikasi saya dan membersihkan proyek dan solusi lain juga tidak membantu saya. setelah semua saya membuat proyek baru dan menyalin barang-barang saya ke yang baru selangkah demi selangkah dan memeriksa apakah masalah muncul. setelah semua saya memiliki proyek yang bagus dan bebas dari kesalahan tanpa redundansi. terkadang sulit menemukan sumber kesalahan ini sehingga lebih mudah untuk mengambil pendekatan lain.
Saya harap ini membantu seseorang!
sumber
Saya menghadapi kesalahan ini ketika saya menempatkan kelas Aplikasi dalam paket yang salah!
sumber
Anda mungkin belum mengikuti aturan sintaks dari sebuah tag. sebagai contoh:
<meta-data android:name="preloaded_fonts"/>
Tag ini tidak lengkap dan menyebabkan kesalahan ini.
Ringkasan Manifes Aplikasi
sumber
Gunakan
android:resource
di<meta-data>
bukannyaandroid:src
danandroid:srcCompat
sumber
Saya tahu terlambat untuk menjawab di sini tetapi saya melakukan kesalahan aneh jadi kirimkan jawaban saya jika itu membantu seseorang, Dalam kasus saya karena kesalahan, saya Menambahkan aktivitas peluncur Utama sebagai 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>
Jadi ketika saya mencoba menjalankan aplikasi saya mendapatkan kesalahan
Kesalahan saat Menginstal APK
Saya baru saja menghapus kata "-alias" dari pendaftaran aktivitas dan peluncuran aplikasi saya berhasil.
sumber