【问题标题】:How to fix INSTALL_PARSE_FAILED_MANIFEST_MALFORMED in my android application如何在我的 android 应用程序中修复 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
【发布时间】:2012-09-05 22:56:38
【问题描述】:

您好,我正在尝试使用 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

  • 安卓版本: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" />

【问题讨论】:

  • 当你得到这个错误时检查logcat输出总是一个好主意,因为它可能是由不同的事情引起的。消息(Tag PackageParser)会给你具体的行号和描述性错误。

标签: java android android-emulator android-manifest google-cloud-messaging


【解决方案1】:

我遇到了这个问题。我的设备内存已满。我解决了释放设备内存的问题。

【讨论】:

    【解决方案2】:

    在我的例子中,我只用小写字母提到了包名。但对于少数活动,我用部分名称命名它,即 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>
    

    【讨论】:

      【解决方案3】:

      把java包名和所有文件夹名写成小写,就可以正常使用了...

      【讨论】:

        【解决方案4】:

        确保您的包名是小写字母... 为我工作

        【讨论】:

          【解决方案5】:

          改变你的

          android:name="MainActivity"

          android:name=".MainActivity"
          

          在你的类名之前添加完全限定的小写包名

          android:name="thepackage.MainActivity"
          

          请按照我的建议更改activity 标签内所有名为android:name 的属性。

          【讨论】:

          • 出现错误,因为活动名称不是以清单中的 (.) 点开头
          【解决方案6】:

          将大写字母的名称包更改为小写字母。

          【讨论】:

          • 但是当我开始放置 gcm 相关配置时,我能够成功部署应用程序,它给出了错误。
          • imperator_sp,你是对的,它确实有效,创建一个带有小写字母的包,项目成功运行。谢谢
          • 节省我的一整天。谢谢
          【解决方案7】:

          我在 android studio 中遇到了同样的问题

          解决这个问题的方法是让公司域名都是小写的,

          【讨论】:

            【解决方案8】:

            关于这个的问题: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 上它没有。

            【讨论】:

              【解决方案9】:

              尝试写活动名称后跟“。” 而不是

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

              使用

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

              【讨论】:

                【解决方案10】:

                代替:

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

                到:

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

                试试看。

                【讨论】:

                  【解决方案11】:
                  <activity android:name="MainActivity"
                  

                  应该是这样的

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

                  要做到这一点而不会出错,请转到包(右键单击)> android 工具> 重命名应用程序包

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2021-08-18
                    • 2021-11-19
                    • 2023-01-27
                    • 2022-01-17
                    • 2019-11-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多