将Eclipse安卓KitKat项目迁移至Android Studio 3.0.1遇私有属性错误求助
android:attr/preserveIconSpacing私有属性错误 我来帮你搞定这个迁移踩坑的问题~这个错误的核心原因是preserveIconSpacing是Android系统的私有属性,你的旧Eclipse项目里大概率直接引用了它,而Android Studio的Gradle构建系统在处理时会严格校验这类私有属性的使用,导致构建卡壳。
给你几个针对性的解决步骤:
全局排查并移除私有属性引用
先在Android Studio里用全局搜索(快捷键Ctrl+Shift+F)找preserveIconSpacing,定位到所有用到这个属性的地方——可能是布局xml文件,甚至是AndroidManifest.xml里。直接删掉这个属性就行,它是旧版本系统里控制图标间距的,现在已经不公开支持了,删掉不会影响核心功能。调整项目的SDK编译版本
你的项目原本是针对KitKat(API 19)开发的,Android Studio 3.0.1对新SDK的兼容性更好。打开模块级的build.gradle文件(就是app目录下的那个),修改如下配置:android { compileSdkVersion 28 // 选28或者更高的稳定版本,适配3.0.1的Gradle插件 defaultConfig { targetSdkVersion 28 // 其他原有配置保留... } }如果改完出现其他兼容性问题,可以考虑引入AppCompat库来兼容旧代码,比如在dependencies里加
implementation 'com.android.support:appcompat-v7:28.0.0'(对应compileSdkVersion 28的版本)。清理缓存并重新构建
做完上面的修改后,别忘了解决缓存问题:- 点击顶部菜单栏
Build->Clean Project - 接着选
Build->Rebuild Project - 如果还是不行,试试
File->Invalidate Caches / Restart,选择Invalidate and Restart彻底清缓存重启。
- 点击顶部菜单栏
另外,如果是第三方依赖库引用了这个私有属性,那你得检查依赖的版本,升级到移除该属性的版本,或者用Gradle的exclude规则排除掉相关模块。
内容的提问来源于stack exchange,提问作者Wan999

