Flutter爬坑记 - jetified-BaiduLBS_Android.jar重复定义

在使用Flutter开发时,遇到了jetified-BaiduLBS_Android.jar重复定义的问题,尝试了修改gradle版本、混淆设置、排除文件等方法无效。最终发现是百度地图插件版本更新,新版本与旧版本存在冲突。解决方案是将所有相关插件升级到最新版本,避免版本不一致导致的冲突,成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


去年用Flutter做了一个APP,有百度地图及其定位功能,Flutter是1.2.2版本的,很久么有更新SDK了。这两天突然新血来潮flutter upgrade了一下,顺便把右下角凡人的gradle upgradle也点了,接下来,舒服了。。。。。工程挂了,各种报错。
报错:
AGPBI: {“kind”:“error”,“text”:"Type com.baidu.a.a.a.a.a is defined
Execution failed for task ‘:app:mergeDebugNativeLibs’.
Could not initialize class org.codehaus.groovy.runtime.InvokerHelper
jetified-BaiduLBS_Android.jar重复定义。。。
等等。。。

最初,以为是升级flutter sdk和gradle之后把混淆打开了,开始研究gradle的机制。弄了半天,无论打开和关闭混淆代码,都无法解决;gradle的版本跟jdk的版本要对应,直接拉满用gradle和jdk最新的版本,Android Studio也搞到最新版本,不行。。。
然后,百度搜到optionConfig里面要exclude一些东西,一边编译一遍根据错误排除各种so文件,asset/xxx.png文件,还是无法解决;
gradle搞到新版本后,用android工程模式可以看到正常的中文build提示了(之前用flutter build都是乱码提示)。搞出jetified-BaiduLBS_Android.jar有两处重复引用导致冲突,又按百度搜到的解决办法,把build.gradle中的dependencies下,加入compileOnly files(‘libs/BaiduLBS_Android.jar’),还是吐了。。。。不行;
快绝望放弃的时候,仔细观察百度地图的插件版本,发现我之前用的是1.0.2版本的,去库里面用同样的关键字搜索,发现最新版本依旧是1.0.2,但有一个红红的uncontinue。难道百度官方放弃flutter插件了?不科学啊,现在flutt

android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便。定位一般分为三种发方案:即GPS定位、Google网络定位以及基站定位 最简单的手机定位方式当然是通过GPS模块(现在大部分的智能机应该都有了)。GPS方式准确度是最高的,但是它的缺点也非常明显:1,比较耗电;2,绝大部分用户默认不开启GPS模块;3,从GPS模块启动到获取第一次定位数据,可能需要比较长的时间;4,室内几乎无法使用。这其中,缺点2,3都是比较致命的。需要指出的是,GPS走的是卫星通信的通道,在没有网络连接的情况下也能用。 另外一种常见的定位方式是基站定位。大致思路就是采集到手机上的基站ID号(cellid)和其它的一些信息(MNC,MCC,LAC等等),然后通过网络访问一些定位服务,获取并返回对应的经纬度坐标。基站定位的精确度不如GPS,但好处是能够在室内用,只要网络通畅就行。 还有Wifi定位。和基站定位类似,这种方式是通过获取当前所用的wifi的一些信息,然后访问网络上的定位服务以获得经纬度坐标。因为它和基站定位其实都需要使用网络,所以在Android也统称为Network方式。 最后需要解释一点的是AGPS方式。很多人将它和基站定位混为一谈,但其实AGPS的本质仍然是GPS,只是它会使用基站信息对获取GPS进行辅助,然后还能对获取到的GPS结果进行修正,所以AGPS要比传统的GPS更快,准确度略高。
<think>好的,用户遇到了一个问题:在运行`flutter doctor --android-licenses`时提示“Unable to locate Android SDK”。我需要帮他们解决这个问题。首先,我得分析可能的原因。 首先,用户可能没有安装Android SDK,或者安装的位置没有被正确识别。Flutter通常依赖环境变量来定位Android SDK,比如`ANDROID_HOME`或者`ANDROID_SDK_ROOT`是否正确设置。如果用户通过Android Studio安装的SDK,可能需要手动设置这些变量。 其次,用户可能没有接受Android的许可证,导致无法生成必要的文件。但在这个问题中,错误信息是关于找不到SDK,所以可能许可证问题不是首要的,而是SDK路径的问题。 接下来,我应该考虑如何指导用户检查他们的环境变量。对于不同的操作系统,路径可能不同。用户使用的是Mac,因为命令提示符中有“qijideMacBook-Air”,所以需要给出Mac上的路径设置方法。通常,Android SDK默认安装在`~/Library/Android/sdk`,用户需要确认这个路径是否存在,并设置相应的环境变量。 另外,用户可能没有安装Android SDK Tools,或者安装不完整。建议用户通过Android Studio的SDK Manager安装必要的组件,比如Android SDK Command-line Tools。 还需要提醒用户,在设置环境变量后,需要重启终端或者运行`source`命令使变量生效,否则Flutter可能还是找不到路径。 可能的解决方案步骤包括:检查SDK安装位置,设置环境变量,安装缺失的SDK组件,然后再次运行命令。如果用户没有安装Android Studio,可能需要指导他们安装,或者手动下载SDK。 另外,用户可能需要安装Java,因为Android工具链可能依赖Java环境。不过,错误信息中没有提到Java的问题,可能暂时不需要处理这点,但可以提及作为潜在问题。 最后,确保用户运行了`flutter doctor`来检查其他可能的配置问题,可能还有其他依赖项需要处理。</think>你遇到的 `Unable to locate Android SDK` 错误表明 Flutter 无法找到 Android SDK 的路径。这个问题通常是由于 Android SDK 未安装、路径未正确配置,或缺少必要组件导致的。以下是解决步骤: --- ### **1. 确认 Android SDK 是否安装** - **通过 Android Studio 安装**(推荐): 1. 下载并安装 [Android Studio](https://developer.android.com/studio)。 2. 打开 Android Studio,进入 `Tools > SDK Manager`。 3. 确保以下组件已安装: - **Android SDK** - **Android SDK Platform-Tools** - **Android SDK Command-line Tools**(重要!) - **手动安装 SDK**: - 如果你不想安装 Android Studio,可以手动下载 [Command-line Tools](https://developer.android.com/studio#command-tools),并解压到指定目录(如 `~/Library/Android/sdk`)。 --- ### **2. 配置环境变量** Flutter 需要知道 Android SDK 的路径,需设置 `ANDROID_HOME` 或 `ANDROID_SDK_ROOT`。 - **Mac 用户**: 1. 打开终端,编辑配置文件(如 `~/.zshrc` 或 `~/.bash_profile`): ```bash nano ~/.zshrc ``` 2. 添加以下内容(路径根据实际安装位置调整): ```bash export ANDROID_HOME=$HOME/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/platform-tools export PATH=$ANDROID_HOME/cmdline-tools/latest/bin ``` 3. 保存后运行: ```bash source ~/.zshrc ``` - **验证路径**: ```bash echo $ANDROID_HOME ``` 应输出类似 `/Users/你的用户名/Library/Android/sdk`。 --- ### **3. 接受 Android 许可证** - 确保路径正确后,运行以下命令接受所有 Android 协议: ```bash flutter doctor --android-licenses ``` 遇到提示时输入 `y` 确认。 --- ### **4. 检查 Flutter 配置** - 运行 `flutter doctor` 查看是否还有其他问题,例如缺少 Android Studio 或模拟器配置: ```bash flutter doctor ``` 根据提示修复其他依赖项(如安装 Xcode、同意 Xcode 许可协议等)。 --- ### **常见问题** - **路径错误**:如果 SDK 不在默认路径,需根据实际安装位置修改 `ANDROID_HOME`。 - **未安装命令行工具**:在 Android Studio 的 `SDK Manager > SDK Tools` 中勾选 `Android SDK Command-line Tools`。 - **权限问题**:确保你有权限访问 SDK 目录(可尝试 `chmod` 命令)。 如果仍有问题,请提供 `flutter doctor -v` 的完整输出,以便进一步排查!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值