Error:程序包android.support.v4.app不存在;Error:找不到类FragmentActivity

本文介绍如何解决从Eclipse迁移到Android Studio时遇到的缺失包问题,特别是针对android.support.v4.app及com.baidu.mapapi等依赖项的处理方法。
最近把在eclipse中开发的android项目导入到AS中,出现了一点小错误。用的是以非gradle方式将 Eclipse 项目导入Android Studio,具体方法参考http://blog.youkuaiyun.com/sddyljsx/article/details/45047565,该方法很方便快捷,这里不作赘述。在AS中首先build该项目(养成build的习惯非常有好处),messages中提示:

根据提示就是缺少android.support.v4.app包,FragmentActivity类以及程序包com.baidu.mapapi,在eclipse中解决该方法很简单,添加缺少的包就行了。由于很多人不是太熟悉AS,所以遇到这种问题有点恼火(当然对于大神来说是另一回事啦),AS不支持汉化,全英文的界面让英文不是太好的朋友对该IDE望而却步,但是如果尝试用了AS后,你会慢慢爱上它,至少笔者是这样,哈哈。
遇到这种问题,解决起来不是很难,以下是外国朋友给出了解决问题的方法http://stackoverflow.com/questions/20386331/android-studio-and-android-support-v4-app-fragment-cannot-resolve-symbol(found a shortcut: File - Project Structure - Tab:Dependencies Click on the green + sign, select support-v4 (or any other you need), click OK.)
下面来添加吧:



此时build一下,问题已解决。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29876893/viewspace-1974139/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29876893/viewspace-1974139/

<think>我们注意到用户的问题是在构建Android项目时遇到了资源链接失败的问题,具体错误信息涉及QMUI库相关的资源不到(如style/QMUI.Compat.NoActionBar, attr/QMUITopBarStyle, color/qmui_config_color_white等)。同时,用户之前的问题是关于添加ButterKnife,但根据引用[1]中的错误信息,这似乎是一个Flutter项目(路径中有Flutter Projects),但错误是Android资源链接失败,可能是Flutter项目中的Android模块(如插件或原生代码)出现了问题。 然而,用户最后的问题描述是Android项目(非Flutter)中QMUI资源不到,可能是在添加ButterKnife后出现的。因此,我们重点解决Android项目(非Flutter)中QMUI资源链接失败的问题。 问题分析: 1. 错误信息中提到的资源(如QMUI.Compat.NoActionBar, QMUITopBarStyle, qmui_config_color_white)都属于QMUI库。 2. 出现这些错误的原因可能是: a) QMUI库没有正确添加到项目中。 b) 项目依赖的QMUI库版本与当前使用的Android Gradle插件版本或编译版本兼容。 c) 资源冲突导致QMUI资源被其他库覆盖或丢失。 d) 项目使用了正确的主题或样式。 解决方案: 步骤1:确保QMUI库已正确添加 在app/build.gradle文件中,检查是否添加了QMUI库的依赖。例如: ```groovy dependencies { // QMUI库 implementation 'com.qmuiteam:qmui:2.0.0' // 请使用最新版本,比如2.0.0或更高 } ``` 步骤2:检查QMUI库的版本兼容性 确保使用的QMUI库版本与项目的compileSdkVersion和targetSdkVersion兼容。可以查看QMUI库的官方文档或GitHub仓库获取版本要求。 步骤3:清理和重建项目 在Android Studio中,执行以下操作: - 选择菜单栏的 "Build" -> "Clean Project" - 然后选择 "Build" -> "Rebuild Project" 步骤4:检查资源冲突 如果项目中多个依赖库有相同的资源名称,可能会导致资源被覆盖。可以尝试在build.gradle文件中添加资源前缀(但注意,这只能解决应用程序模块的资源,能解决库模块): ```groovy android { resourcePrefix "qmui_" // 为应用程序模块的资源添加前缀,避免与库模块冲突(但QMUI库内部资源已经带有qmui前缀,所以这里主要是防止其他库使用了相同的资源名) } ``` 步骤5:检查主题和样式 在res/values/styles.xml文件中,检查是否使用了正确的主题。例如: ```xml <style name="AppTheme" parent="QMUI.Compat.NoActionBar"> <!-- 其他属性 --> </style> ``` 如果这里使用了QMUI的主题,那么必须确保QMUI库已经被正确添加。 步骤6:检查依赖传递冲突 如果项目中同时存在ButterKnife和QMUI,并且它们依赖了同版本的support库或androidx库,可能会导致资源链接失败。可以通过以下方式查看依赖树并解决冲突: - 在终端运行:`./gradlew app:dependencies`(Windows使用`gradlew app:dependencies`) - 查看是否有多个版本的support库或androidx库,如果有,可以强制使用统一版本。 例如,在app/build.gradle文件中添加: ```groovy configurations.all { resolutionStrategy { // 强制使用特定版本的support库(如果使用的是androidx,则替换为对应的androidx库) // 注意:根据实际情况替换版本号 force 'com.android.support:appcompat-v7:28.0.0' force 'com.android.support:support-v4:28.0.0' // ... 其他冲突的库 } } ``` 但是,如果项目已经迁移到androidx,则QMUI库也应该使用支持androidx的版本(如1.4.0以上版本)。在QMUI的GitHub上,1.4.0版本开始支持androidx。 步骤7:如果使用androidx,确保QMUI库版本支持androidx 在QMUI的GitHub发布页上,1.4.0及以上版本支持androidx。因此,请使用: ```groovy implementation 'com.qmuiteam:qmui:2.0.0' // 2.0.0版本支持androidx ``` 步骤8:检查是否开启了AndroidX 在gradle.properties文件中,确保有以下配置: ```properties android.useAndroidX=true android.enableJetifier=true ``` 步骤9:如果问题仍然存在,尝试升级Android Gradle插件版本和Gradle版本 在项目根目录的build.gradle文件中,检查classpath的Android Gradle插件版本,确保是比较新的版本(如3.6.0以上)。 步骤10:如果以上步骤都无法解决,可能是QMUI库本身的问题,可以尝试在GitHub上搜索相关问题,或者考虑使用其他UI库。 由于用户的问题描述中同时出现了ButterKnife和QMUI,我们还需要注意ButterKnife是否与QMUI存在冲突。ButterKnife本身只是一个视图绑定库,通常会影响资源,但ButterKnife依赖的support库版本可能与QMUI依赖的版本一致,从而引起冲突。因此,步骤6中的依赖统一非常重要。 最后,如果用户是在Flutter项目中遇到这个问题(根据引用[1]的路径),那么应该检查Flutter项目中android/app/build.gradle文件,确保QMUI库被正确添加,并且执行上述的依赖冲突解决步骤。 注意:由于引用[1]中的错误信息出现在Flutter项目路径下,但用户当前问题描述是Android项目,我们以用户当前问题(QMUI资源不到)为准,提供解决方案。 如果用户确认是Flutter项目中的Android模块出现问题,那么解决方案相同,但需要修改Flutter项目中的android/app/build.gradle文件。 生成的相关问题: §§相关问题§§ 1. 如何解决QMUI库在Android项目中的资源链接失败问题? 2.Android项目中如何正确添加QMUI库依赖? 3. 如何解决Android项目中的资源冲突? 4. 如何升级QMUI库到最新版本? 5. 在Flutter项目中如何解决Android资源链接失败的问题?</think>### 解决 Android 资源链接失败问题(QMUI 资源缺失) 根据您遇到的资源链接错误,以下是完整的解决方案: #### 1. **检查 QMUI 依赖配置** 在 `app/build.gradle` 中添加最新版 QMUI 依赖: ```gradle dependencies { // 确保使用最新版 QMUI implementation 'com.qmuiteam:qmui:2.1.0' implementation 'com.qmuiteam:qmui-arch:2.1.0' // ButterKnife 依赖 (与 QMUI 兼容) implementation 'com.jakewharton:butterknife:10.2.3' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3' } ``` #### 2. **解决资源冲突** 在 `gradle.properties` 中添加配置: ```properties # 强制使用 AndroidX 并启用资源合并 android.useAndroidX=true android.enableJetifier=true android.enableResourceOptimizations=true ``` #### 3. **检查主题配置** 在 `styles.xml` 中修正主题引用: ```xml <!-- 使用正确的主题继承链 --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- 确保使用存在的 QMUI 主题 --> <!-- 错误示例: parent="QMUI.Compat.NoActionBar" --> <!-- 正确引用 QMUI 属性 --> <item name="QMUITopBarStyle">@style/MyTopBarStyle</item> </style> ``` #### 4. **资源前缀冲突解决方案** 在 `app/build.gradle` 中添加资源前缀: ```gradle android { // 防止资源命名冲突 resourcePrefix "qmui_" // 必须启用 dataBinding buildFeatures { dataBinding true viewBinding true } } ``` #### 5. **清理构建缓存** 执行以下终端命令: ```bash # 清理构建缓存 ./gradlew cleanBuildCache # 重新生成资源 ./gradlew clean ./gradlew :app:mergeDebugResources --stacktrace ``` #### 6. **检查依赖冲突** 在终端运行依赖检查: ```bash ./gradlew :app:dependencies --configuration debugRuntimeClasspath ``` 查看输出中是否有多个版本的 support 库或 androidx 库冲突,如有则添加排除规则: ```gradle implementation ('com.qmuiteam:qmui:2.1.0') { exclude group: 'com.android.support', module: 'support-compat' } ``` #### 7. **验证资源存在性** 检查 QMUI 资源是否实际包含在库中: 1. 打开项目视图:`Project > External Libraries > QMUI` 2. 验证路径:`/res/values/colors.xml` 中应包含 `qmui_config_color_white` 3. 验证路径:`/res/values/attrs.xml` 中应包含 `QMUITopBarStyle` #### 8. **替代方案(若问题持续)** 如果仍无法解决,考虑迁移到官方视图绑定: ```gradle android { buildFeatures { viewBinding true } } ``` 在 Activity 中使用: ```java // 替代 ButterKnife private ActivityMainBinding binding; protected void onCreate(Bundle savedInstanceState) { binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); binding.textView.setText("Hello ViewBinding!"); } ``` > **关键提示**:QMUI 2.0+ 需要 AndroidX[^3],请确保项目已完成 AndroidX 迁移。如果从旧项目升级,执行 `Refactor > Migrate to AndroidX` 并检查所有 XML 文件中的资源引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值