美文网首页
INSTALL_PARSE_FAILED_MANIFEST_MA

INSTALL_PARSE_FAILED_MANIFEST_MA

作者: 人头串串 | 来源:发表于2019-01-25 16:03 被阅读0次

    在写Android 测试程序的时候,安装Apk突然遇到 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="com.ryan.testproject">
    
        <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/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name=".Main2Activity"
                android:process="activity2" />
            <activity android:name=".Main3Activity"/>
        </application>
    
    </manifest>
    

    我的 AndroidManifest.xml 就这点代码,当时一脸懵逼。错误信息也没说我的Manifest哪行出错了,首先我怀疑是依赖库中的Manifest文件和我的Manifest在合并的时候发生了冲突。

    为了验证我的想法我把所有的第三方依赖都去掉了,只留系统的依赖。然而依然无法安装。当时一度怀疑是AS的问题。

    后来发现我的Main2Activity这个Activity设置了 android:process="activity2"这个属性。改了一下process的名字android:process=".activity2 加了一个.,于是顺利安装成功了!

    原来导致这个错误的原因是process命名不规范!!!

    截取谷歌官方对 android:process 这个属性的解释

    image.png
    应在其中运行 Activity 的进程的名称。正常情况下,应用的所有组件都在为应用创建的默认进程名称内运行,您无需使用该属性。 但在必要时,您可以使用该属性替换默认进程名称,以便让应用组件散布到多个进程中。 如果为该属性分配的名称以冒号(“:”)开头,则会在需要时创建应用专用的新进程,并且 Activity 会在该进程中运行。如果进程名称以小写字符开头,Activity 将在该名称的全局进程中运行,前提是它拥有相应的权限。这可以让不同应用中的组件共享一个进程,从而减少资源占用。
    这个解释并没有说我原来的命名是不规范的!!!坑啊~!

    最后还是总结一下android:process的命名规则吧

    1. 不能以数字开头;
    2. 冒号(“:”)只能用于开头;
    3. 不以冒号(“:”)开头必须含有"." ;
    4. 不能含有特殊字符。

    大概就在这样了吧。

    当然,发生[INSTALL_PARSE_FAILED_MANIFEST_MALFORMED] 这个错误也可能是其他原因引起的,所以需要大家静下心来查找原因,总会找到的。

    相关文章

      网友评论

          本文标题:INSTALL_PARSE_FAILED_MANIFEST_MA

          本文链接:https://www.haomeiwen.com/subject/oqzmjqtx.html