You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入新库后SugarOrm冲突,添加tools:replace="name"失败求助

解决SugarORM与自定义Application的Manifest冲突问题

别着急,这个问题我之前也碰到过,其实就是SugarORM默认要求使用它的SugarApp作为Application类,而你自己定义了MyApplication,导致Manifest里的android:name属性冲突了。下面给你两种靠谱的解决办法:

方法一:让自定义Application继承SugarApp(推荐)

这是最符合SugarORM设计逻辑的方式,不需要修改Manifest的替换规则,直接让你的自定义Application继承SugarApp就行:

public class MyApplication extends SugarApp {
    @Override
    public void onCreate() {
        super.onCreate();
        // 在这里添加你的自定义初始化逻辑,比如第三方库初始化、全局配置等
    }
}

然后在AndroidManifest.xml里把Application的name指向你的自定义类:

<application
    android:name="com.myproject.application.app.MyApplication"
    <!-- 其他属性保持不变 -->
    >

这样既满足了SugarORM对Application的要求,又能保留你自己的自定义逻辑,完美兼容。

方法二:使用tools:replace强制替换(适合不想继承SugarApp的场景)

如果你不想让Application继承SugarApp,可以用tools:replace来强制覆盖冲突的属性,但要注意两个关键细节:

  1. 首先必须在Manifest的根标签manifest里声明tools命名空间,很多人就是漏了这个才报错:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" <!-- 加上这行 -->
    package="com.myproject">
  1. 然后在application标签里使用完整的属性名(带android前缀):
<application
    android:name="com.myproject.application.app.MyApplication"
    tools:replace="android:name" <!-- 这里要写android:name,不是name -->
    <!-- 其他属性保持不变 -->
    >

之前你报错就是因为只写了tools:replace="name",没有带android:前缀,导致Gradle无法识别要替换的属性。

额外检查点

如果还是有问题,不妨检查下你的Gradle依赖,看看是不是重复引入了SugarORM或者其他会修改Application的库,排除重复依赖也能解决不少冲突问题。

内容的提问来源于stack exchange,提问作者Adam Varhegyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:06:56