INSTALL_PARSE_FAILED_MANIFEST_MALFORMED त्रुटि कोड PackageParser.java द्वारा लौटाया जाता है जब वह मैनिफ़ेस्ट.xml फ़ाइल में बड़ी संख्या में त्रुटियों का पता लगाता है।
त्रुटि को अलग करने के लिए, logcat में देखें (जब आप 'adb install foo.apk' कमांड करते हैं)। जिस समस्या का मुझे सामना करना पड़ा, उसमें 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
ऊपर की चौथी पंक्ति में, आप देख सकते हैं कि PackageParser मेनिफ़ेस्ट #xml फ़ाइल की उस लाइन # 214 पर शिकायत करता है "<प्रदाता> में प्राधिकरण विशेषता शामिल नहीं है" । PackageParser में सभी मामलों के नीचे लिस्टिंग देखें जो उस त्रुटि कोड को लौटाता है। (PackageParser एकमात्र ऐसा वर्ग है जो PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED त्रुटि कोड का उत्पादन करता है)
मेरे मामले में संदेश "<प्रदाता> में अधिकारियों की विशेषता शामिल नहीं है" पैसेपोराइडर फ़ंक्शन द्वारा parseApplication द्वारा कहा गया ParseProvider फ़ंक्शन में PackagerParser.java की लाइन 2490 द्वारा निर्मित है।
4.1.1 संस्करण से चौखटे / आधार / कोर / जावा / Android / सामग्री / दोपहर / PackageParser.java, PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED को इन विधियों में इन पंक्तियों पर संदर्भित किया जाता है। यदि स्रोत कोड लाइन संख्या एक उद्धृत स्ट्रिंग के बाद होती है जो लॉगकैट में मुद्रित संदेश है। यदि पंक्ति संख्या एक जावा एक्सप्रेशन के बाद है जो कि कोड है जो उस त्रुटि कोड को वापस करता है, तो उस फ़ंक्शन को यह देखने के लिए जांचना चाहिए कि त्रुटि संदेश किस कारण से लौटा है। कुछ मामलों में मैं एक विशिष्ट विधि कॉल के कारण त्रुटि को अलग नहीं कर सका।
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
यह अफसोस की बात है कि आपको लॉगकैट में चारों ओर प्रहार करना पड़ता है और यह पता लगाने के लिए कि समस्या क्या होती है।