移除完整support-v4后ActivityCompat导入语句未变的原因咨询
这完全是预期现象,放心就好!
没错,你遇到的情况是Google拆分support-v4库时特意设计的向后兼容机制,完全正常。
为什么导入语句不用变?
Google在Support Library 24.2.0版本拆分v4库时,刻意保留了所有类的原有包路径。比如ActivityCompat原本就在android.support.v4.app包下,拆分后这个类被迁移到了support-compat模块中,但包名一点都没改。这样做的核心目的就是让开发者不用修改任何业务代码,只需要调整Gradle依赖就能实现APK瘦身,完美兼容旧项目。
补充下拆分的背景
在Support Library 24.2.0之前,仅存在单个v4支持库。为提升效率,该库被拆分为多个模块。为保持向后兼容性,若Gradle脚本中声明support-v4,APK会包含所有v4模块。但为减小APK体积,建议仅列出应用所需的特定模块。
所以你现在只依赖com.android.support:support-compat:27.0.0,但依然可以用原来的导入语句引用ActivityCompat,代码完全不需要改动,同时APK体积会因为只打包了必要模块而减小,这正是你想要的效果。
看你贴的代码示例:
import android.support.v4.app.ActivityCompat; // 无论依赖完整库还是单个模块,这个导入都有效
这个导入语句完全没问题,放心用就行。
内容的提问来源于stack exchange,提问作者Albertano Santacruz
相关产品推荐
相关产品推荐

