编译报错:Manifest merge failed : Attribute application@appComponentFactory

简述

接入sdk的过程中,遇到点坑。能看到此博文说明你也遇到了和我一样的问题,我做个记录,方便有缘人观看。不想看过程的同学,可以直接跳到底下直接看解决方案。

gradle 编译报错

Android Studio 游戏工程目前是非安卓X ,渠道给出了安卓X和非安卓X SDK 两种接入方案,我采用了非安卓X 接入方案。按文档中描述依赖各种jar或者aar。编译工程如无意外,果然还是出意外了,gradle编译报错。

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
     //游戏 java层 有v7包的引用
    implementation 'com.android.support:appcompat-v7:28.0.0'
}

依赖的资源.png

编 译 报 错 信 息 如 下 \color{red}{编译报错信息如下}

Execution failed for task ‘:app:processReleaseManifest’
Manifest merger failed : Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from > [core-1.1.0.aar] AndroidManifest.xml:24:18-86

is also present at [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory).

Suggestion: add ‘tools:replace=“android:appComponentFactory”’ to element at AndroidManifest.xml:9:5-96:19 to override.

依赖冲突.png

翻 译 过 来 \color{blue}{翻译过来}

执行任务,合并资源失败:[ core-1.1.0.aar ] 清单文件中的属性 android:appComponentFactory=“androidx.core.app.CoreComponentFactory”/> 和[com.android.support:support-compat:28.0.0] 清单文件里面的属性冲突了。

注 : \color{red}{注:} : support-compat:28.0.0来自 implementation 'com.android.support:appcompat-v7:28.0.0’的gradle依赖。

建 议 : \color{red}{建议:} :将 ’ tools:replace=“android:appComponentFactory”'属性, 添加到清单文件中的 元素中。

  • 根据As给出的提示加上tools:replace 属性,编译一下,还是报错。

错 误 信 息 : \color{red}{错误信息:} :tools:replace specified at line:9 for attribute android:appComponentFactory, but no new value specified

翻 译 过 来 : \color{red}{翻译过来:} : 没有指定 android:appComponentFactory

  • 加上android:appComponentFactory属性,可以正常编译不报错了。但appComponentFactory属性需要 注 意 \color{red}{注意}

    编译好的apk用模拟器(逍遥安卓版本 7.0)测试,可以安装能正常进入游戏,各项sdk均正常。但是在安卓11的设备adb install 时候出问题了。 Installation did not succeed.The application could not be installed: INSTALL_FAILED_USER_RESTRICTED

    表现的现象:编译apk 没问题,无法安装到设备上。 通过qq直接安装到手机,显示解析软件包时出现问题。

    观察logcat 日志 抓到的有效日志(at Binary XML file line #35): Empty class name in package xxx,定位到appComponentFactory属性没有指定 具体的字符(android:appComponentFactory=" " )

    修改后android:appComponentFactory="111"加上了任意字符后,经测试安装正常。

完整解决方案

划 重 点 : \color{red}{划重点:} :android:appComponentFactory=“任意字符”

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    
    <application
           android:appComponentFactory="111"
            tools:replace="android:appComponentFactory">
    </application>
    
</manifest>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值