项目中遇到的Android Studio:Default Activity not found的问题起因与解决

起因是项目想要更新友盟统计的最新版本(友盟核心9.3.7),结果友盟说需要同时将分享也更新到最新(7.1.4),而此版本的分享QQ、微博、微信不但要使用友盟相关的完整sdk,还要使用各软件官方的sdk。

但在集成新浪微博的官方sdk(10.10.0)后,项目出现了Default Activity not found的问题。

网上搜了一下,大多都是清理缓存等针对studio的操作,个人感觉并不合适,于是开始自己分析。

首先,注释掉对新浪微博sdk的依赖,问题消失。确定是依赖和原代码产生了冲突。

而默认启动的Activity是在清单文件里定义的,清单文件本身并无错误(注掉新浪可以正常使用),那么一定是清单文件中某些内容与新浪微博中的内容产生了冲突。

想到集成文档里提到了分享需要FileProvider,于是尝试将项目原来清单文件中定义的FileProvider注释掉,果然问题消失了。

至此问题便已经确定,因为新浪微博分享需要使用FileProvider,所以很可能其官方sdk中就已经定义过了,与我们自己在项目中定义的发生了冲突,导致清单文件处于失效的状态,以至于启动时报错,找不到默认Activity。

解决办法:就是定义合并清单的属性node,参数replace表示在合并时使用注解的那一个替换低优先级的声明。

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true"
    tools:node="replace">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>

修改代码后,studio不再报错,试了试项目功能都正常了。

注:这个问题我也是头一次遇到,node也是第一次使用,清单合并相关的内容还有很多,大家可以多去看看,如果发现我的说法有啥错误,还请帮忙指正。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值