最近搞了一个小工具,UI界面使用了android.support.v4.app.Fragment,然后同事从服务器下载代码后编译报错无法找到android.support.v4.app.Fragment。
从网上找各种文章,国内国外都看了一遍,大部分解决方案原因都是说Android 9之后默认导入了Androidx,Android Studio较新版本默认使用androidx的包,摒弃了以前的support包。
使用的时候会自动导入androidx的import androidx.fragment.app.Fragment;,从依赖库中删除即可。
告诉的方法都是:
1. 在Android Studio-file->Project Structure-Dependencies->app + 添加库, 即可在build.gradle中添加
dependencies {
implementation 'com.android.support:support-v4:28.0.0' // 确保版本号是你项目兼容的版本
}
2. 删除Androidx库,但是我的项目中删除依然解决不了。
解决方法
取消默认使用androidx包
把gradle.prooerties里
android.useAndroidX=true
android.enableJetifier=true
改为,依然不行
android.useAndroidX=false
android.enableJetifier=fals
3. clean build,然后file->sync Project with Gradle Files,rebuild依然不行。
4.删除.ide文件夹重新编译依然不行
按照网上大神各种修改,本地删除文件,始终无法解决,但是知道肯定是编译环境的问题,这样就一个一个的从菜单项找设置,最终。。。。。
终极解决方法:
File->Settings->Build .....->Build Tools->Gradle
此刻有一个General settings
Gradle user home:
此处如果已经有一个过去使用的gradle文件,这里是根源。好,你重新新建一个文件夹保存你现在工程的gradle,好了此刻android Studio 会自动下载新的gradle, 下载完成后重新生成gradle,重新编译代码PASS。
你终于解决了。
根源就是隐藏很深的Gradle文件,如果每一个工程使用自己的gradle,这样很多环境编译的问题也就迎刃而解了。