105

Android デバイスに存在する/インストールされているすべてのアプリケーションを一覧表示する小さなアプリケーションを開発しています。しかし、コードを実行しようとしているときに、以下のエラーが発生します。

インストール エラー: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

このエラーを整理するのを手伝ってください。

4

38 に答える 38

89

このエラーには別の理由が考えられます。属性

android:taskAffinity="string" 

次のように、常にドットで開始する必要があります。

android:taskAffinity=".string" 
于 2012-12-23T21:30:33.713 に答える
69

アクティビティ名の前に「.」を付ける必要があります。あなたのマニフェストファイルに。

于 2011-07-25T12:24:28.557 に答える
47

このようなパッケージ名に大文字が含まれていたため、このエラーが発生していました

Com.Example.packagename

私はそれを次のようなものに変更した後

com.example.packagename

解決しました

于 2013-09-04T06:45:18.750 に答える
37

INSTALL_PARSE_FAILED_MANIFEST_MALFORMED エラー コードは、packageParser.java が manifest.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

上記の 4 行目で、PackageParser が manifest.xml ファイルの 214 行目「<provider> には権限属性が含まれていません」というエラーが表示されていることがわかります。そのエラー コードを返す PackageParser のすべてのケースの以下のリストを参照してください。(PackageParser は、PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED エラー コードを生成する唯一のクラスです)

私の場合、「<provider> には権限属性が含まれていません」というメッセージが、parseApplication によって呼び出される parseProvider 関数の PackagerParser.java の 2490 行目によって生成されます。


Frameworks/base/core/java/android/content/pm/PackageParser.java の 4.1.1 バージョンから、これらのメソッドのこれらの行で PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED が参照されます。ソース コードの行番号の後に、logcat に出力されるメッセージである引用符付き文字列が続く場合。行番号の後に、エラー コードが返されたコードである Java 式が続く場合、その関数を調査して、エラー メッセージが返された原因を確認する必要があります。いくつかのケースでは、エラーの原因を 1 つの特定のメソッド呼び出しに切り分けることができませんでした。

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

問題の原因を突き止めるために、logcat とソースを調べなければならないのは残念です。

于 2014-09-03T13:44:20.213 に答える
10

マニフェスト ファイルでアクティビティ名を確認します

またはメインアクティビティ/クラスのパッケージ名

<activity android:name="MainActivity"></activity>
于 2011-05-19T16:54:16.237 に答える
10

私は同じ問題を抱えていますが、次のようにプロセスを呼び出すと:

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

私が変更すると:

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

すべてが機能し始めます。

于 2015-01-08T15:53:01.450 に答える
8

私の問題は私が書いたことでした(-対_に注意してください):

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

活動中。これも問題の原因である可能性があります。

于 2012-12-03T10:36:16.253 に答える
8

などの名前は、パッケージ名の形式にする必要がandroid:nameあります。android:processa..z..

于 2012-02-11T21:23:23.173 に答える
4

以下のコードのため、このエラーが発生しました

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

android:mimeType="*"このエラーをandroid:mimeType="*/*"修正するために変更したとき。

于 2016-05-30T08:30:12.230 に答える
4

Android デバイスのログを読んで、このエラーを診断してください。問題を説明する「W/PackageParser」行を期待してください。

于 2014-07-15T05:12:15.180 に答える
3

ローカリゼーションを追加した後、同じ問題に遭遇しました

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

文字列@string/version_nameが、新しく追加されたローカライズされた文字列ファイルの 1 つに誤って渡されました (新しいファイルにのみ表示されます)。すべてのローカリゼーションを確認し、@string/version_nameeng locale を除くすべてのファイルから削除した後、すべてが再び機能しました

于 2013-07-30T14:15:50.577 に答える
3

同じエラーが発生しました!空の許可タグがあり、それが問題の原因でした!

于 2013-01-26T18:32:02.247 に答える
3
<activity/>

must be defined BEFORE

<activity-alias/>
于 2014-10-27T17:06:30.383 に答える
2

マニフェストで multidex を使用している場合は、値またはリソースを追加する必要があります。お気に入り..

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

また

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

次に、プロジェクトをクリーンアップしてアプリを再インストールします。

于 2016-12-12T10:27:59.390 に答える
2

新しいアプリケーションを作成し、それをAndroid Pieにターゲット設定します。すべてがうまく機能していましたが、最近、アプリケーションがAndroid Naught 以下のバージョンの Android OS にインストールされないことがわかりました。

インストール中に失敗メッセージが表示される

インストールはメッセージ INSTALL_PARSE_FAILED_MANIFEST_MALFORMED で失敗しました。

それで、私が行った修正は次のとおりであり、それらはすべてAndroidManifest.xmlファイルでのみ行う必要があります。

アクティビティ、サービス、受信者、およびすべてについて

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

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

マニフェストのアクセス許可の場合

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" />

これは、下位バージョンのデバイスでも機能させるために実行しなければならなかったすべての変更です。

于 2019-08-27T10:38:06.833 に答える
1

私の場合、原因は < activity-alias > に android:name 属性がないことでした。< activity-alias > には必須ですが、既存のクラスに名前を付けてはなりません。面白いことに、プロジェクトは問題なくコンパイルされます。

于 2013-11-21T15:48:46.507 に答える
1

私の問題は次のとおりです。

次の方法で権限を指定していましたが、機能していませんでした。

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

次のように変更したところ、問題なく動作していました。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2013-12-21T08:39:43.247 に答える
1

不正な形式であるが IDE で強調表示されていない他のファイルがある可能性があります。たとえば、マニフェストがラベルなどのために参照する可能性のある res/values/strings です。

于 2013-09-19T13:01:28.580 に答える
0

私の場合、行を削除して<action android:name="android.intent.action.MAIN" />追加し直してアプリを実行させました

<queries>

    <!-- Intent filter signatures that you are going to query: -->
    <intent>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent>
</queries>
于 2021-07-24T19:27:46.430 に答える
0

私の場合、原因は次のとおりです。

android:resource="@color/app_green"
于 2020-08-17T22:51:55.507 に答える