web-dev-qa-db-ja.com

AndroidアプリケーションでINSTALL_PARSE_FAILED_MANIFEST_MALFORMEDを修正する方法

こんにちは、私はgcmで実験しようとしていますが、gcmを動作させることができません。どこで私がそれをいじっているのか分かりません、以下は私が得ているエラーです。アプリケーションをデバイスに直接デプロイしてデバッグすることを試みていますが、デプロイしようとするとこのエラーが発生します

Waiting for device.
Target device: HT24LW108632
Uploading file
    local path: D:\Data\Android\AndroidTest\out\production\AndroidTest\AndroidTest.apk
    remote path: /data/local/tmp/Android.Test
Installing Android.Test
DEVICE Shell COMMAND: pm install -r "/data/local/tmp/Android.Test"
pkg: /data/local/tmp/Android.Test
Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
          package="Android.Test"
          Android:versionCode="1"
          Android:versionName="1.0">
    <uses-sdk Android:minSdkVersion="14"/>

    <permission
            Android:name="Android.Test.permission.C2D_MESSAGE"
            Android:protectionLevel="signature" />
    <uses-permission Android:name="Android.Test.permission.C2D_MESSAGE" />
    <uses-permission Android:name="Android.permission.GET_ACCOUNTS" />
    <uses-permission Android:name="Android.permission.WAKE_LOCK" />
    <uses-permission Android:name="Android.permission.INTERNET" />
    <uses-permission Android:name="com.google.Android.c2dm.permission.RECEIVE" />



    <application Android:label="@string/app_name" Android:icon="@drawable/ic_launcher">
        <activity Android:name="MainActivity"
                  Android:label="@string/app_name">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN"/>
                <category Android:name="Android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <receiver
                Android:name="com.google.Android.gcm.GCMBroadcastReceiver"
                Android:permission="com.google.Android.c2dm.permission.SEND" >
            <intent-filter>
                <action Android:name="com.google.Android.c2dm.intent.RECEIVE" />
                <action Android:name="com.google.Android.c2dm.intent.REGISTRATION" />

                <category Android:name="Android.Test" />
            </intent-filter>
        </receiver>
        <service Android:name=".GCMIntentService" />
    </application>
</manifest>

私のデバイスはHTC OneXです

  • Androidバージョン:4.03
  • HTC Senseバージョン:4.0
  • ソフトウェア番号:1.29.110.11
  • HTC SDK APIレベル:4.12
  • HTC拡張バージョン:HTCExtension_403_1_GA_7

Android Sea。

編集-1:以下の行にコメントすると、アプリケーションがデプロイおよび実行されますが、以下の許可なしに先に進むことができないことに気づきました...助けてください...

<permission Android:name="Android.Test.permission.C2D_MESSAGE"  Android:protectionLevel="signature" />
23
Shax

Capsの文字を含む名前のパッケージを小文字に変更します。

56
imperator_sp

変更 your

Android:name="MainActivity"

[〜#〜] to [〜#〜]

Android:name=".MainActivity"

[〜#〜] or [〜#〜]クラス名の前に小文字の完全修飾パッケージ名を追加します

Android:name="thepackage.MainActivity"

私が提案したように、activityタグ内でAndroid:nameという名前のすべての属性を変更してください。

9
Vishnuvathsan

の代わりに:

<permission Android:name="Android.permission.C2D_MESSAGE" Android:protectionLevel="signature"/>

に:

<uses-permission Android:name="Android.permission.C2D_MESSAGE" Android:protectionLevel="signature"/>

やってみて.

4
Jason Cidras
<activity Android:name="MainActivity"

のように形成される必要があります

<activity Android:name="com.company.appname" 

エラーなしでこれを行うには、パッケージに移動します(右クリック)> Android tools> rename app package

3
user1833400

「。」が続くアクティビティ名を書き込もうの代わりに

<activity Android:name="MainActivity"
                  Android:label="@string/app_name">

使用する

<activity Android:name=".MainActivity"
                  Android:label="@string/app_name">
1
Vinay Rathod

Android studioでこの同じ問題に遭遇しました

これを解決するのは、会社のドメインをすべて小文字にすることです。

1
amr osama

これに関する問題があります: http://code.google.com/p/Android/issues/detail?id=37658 権限内のパッケージ名に大文字を使用することはできません。このようなパッケージ名でアプリケーションをデプロイし、GCMを使用する必要がある場合、あなたは(私と同じように)困難な状況に陥りました。私はある種の短い形式の許可を使用しようとしました。

<permission Android:name=".permission.C2D_MESSAGE" Android:protectionLevel="signature" />
<uses-permission Android:name=".permission.C2D_MESSAGE" />

同様にサービスも定義しました。アプリケーションパッケージに含まれている必要がありました。 Android 4.3。おそらく4.2でも動作しました。4.0.3では動作しなかったことを知っています。

0
Ivo Pavlik

パッケージ名が小文字であることを確認してください...私のために働いた

0
Hadis

私の場合、パッケージ名は小文字でのみ言及されました。しかし、いくつかのアクティビティでは、名前の一部を使用して名前を付けました。つまり、Android:name=".ContactUs"。マニフェストファイルのすべてのアクティビティ名、サービス名、およびブロードキャストプロバイダー名の前に完全なパッケージ名を付けることで解決しました。

作業コード

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android" package="vcan.doit.com">

<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission Android:name="Android.permission.GET_ACCOUNTS" />
<uses-permission Android:name="Android.permission.READ_PROFILE" />
<uses-permission Android:name="Android.permission.READ_CONTACTS" />

<application
    Android:allowBackup="true"
    Android:icon="@mipmap/ic_launcher"
    Android:label="@string/app_name"
    Android:roundIcon="@mipmap/ic_launcher_round"
    Android:supportsRtl="true"
    Android:theme="@style/Theme.DesignDemo">
    <activity
        Android:name="vcan.doit.com.LoginActivity"
        Android:label="@string/app_name">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.DEFAULT" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        Android:name="vcan.doit.com.MainActivity"
        Android:theme="@style/Theme.DesignDemo" />
    <activity
        Android:name="vcan.doit.com.CheeseDetailActivity"
        Android:parentActivityName="vcan.doit.com.MainActivity">
        <meta-data
            Android:name="Android.support.PARENT_ACTIVITY"
            Android:value="vcan.doit.com.MainActivity" />
    </activity>

    <service Android:name="vcan.doit.com.PushNotification.MyAndroidFirebaseMsgService">
        <intent-filter>
            <action Android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    <service Android:name="vcan.doit.com.PushNotification.MyAndroidFirebaseInstanceIdService">
        <intent-filter>
            <action Android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>

    <activity
        Android:name="vcan.doit.com.AboutUs"
        Android:label="@string/abt_us"
        Android:parentActivityName="vcan.doit.com.MainActivity">
        <meta-data
            Android:name="Android.support.PARENT_ACTIVITY"
            Android:value="vcan.doit.com.MainActivity" />
    </activity>
    <activity
        Android:name="vcan.doit.com.ContactUs"
        Android:label="@string/contact_us"
        Android:parentActivityName="vcan.doit.com.MainActivity">
        <meta-data
            Android:name="Android.support.PARENT_ACTIVITY"
            Android:value="vcan.doit.com.MainActivity" />
    </activity>
    <activity Android:name="vcan.doit.com.WriteToUs"
        Android:label="@string/write_us"
        Android:parentActivityName="vcan.doit.com.MainActivity">
        <meta-data
            Android:name="Android.support.PARENT_ACTIVITY"
            Android:value="vcan.doit.com.MainActivity" />
    </activity>
</application>
0
Raghuram db

この問題がありました。デバイスのメモリがいっぱいです。デバイスのメモリを解放するという問題を解決しました。

0
M.Namjo

Javaパッケージ名とすべてのフォルダ名を小文字で書くと、うまくいきます...

0