Android Gradle7.0 allowInsecureProtocol (true)依然无法引入Maven库的解决方案

Gradle7.0引入了对Maven URL的安全验证,导致http开头的仓库无法正常引入。为解决此问题,可以在build.gradle和settings.gradle中配置allowInsecureProtocol。对于内网Maven仓库,需在settings.gradle的repositories中同样进行配置,以确保内网库的正确解析。

由于Gradle7.0增加了对Maven url的安全验证,传统不安全的以http开头的url,会导致引入仓库失败。

所以依照官方说明可以增加allowInsecureProtocol在自己的Maven{}里。

但是有的时候引入的Maven库url是属于内网,这个时候,仅仅在根目录下的build.gradle下增加这个依然无效,此时还需要拷贝刚才修改的maven{}内容到setting.gradle这个文件中的repositories里。这样引入的库就可以完美解析了。

### 设置 Android Gradle 插件版本为 7.0 或更高并统一模块版本 为了确保 Android Gradle 插件版本为 7.0 或更高,并且所有模块使用一致的插件版本,需在项目结构和构建配置中进行相应调整。 #### 更新 Android Gradle 插件版本 Android Gradle 插件版本与 Gradle 构建工具版本密切相关,必须选择兼容的版本组合。若希望使用插件版本 7.0 或更高,对应的 Gradle 版本应为 7.0 或更高[^1]。更新插件版本的方式是在项目的顶层 `build.gradle` 文件中修改 `classpath` 声明: ```gradle buildscript { ext.kotlin_version = '1.8.0' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.4.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ``` #### 确保所有模块使用相同插件版本 在模块级 `build.gradle` 文件中,确保所有模块都使用相同的 Android Gradle 插件。例如,对于应用模块,应使用 `com.android.application`,而模块应使用 `com.android.library`,并且所有模块的 `compileSdkVersion` 和 `buildToolsVersion` 应保持一致: ```gradle android { namespace 'com.example.myapp' compileSdk 34 defaultConfig { applicationId "com.example.myapp" minSdk 24 targetSdk 34 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } ``` #### 使用 Gradle 封装容器统一 Gradle 版本 使用 Gradle 封装容器(Gradle Wrapper)可以确保所有开发者和 CI 服务器使用相同的 Gradle 版本。更新 `gradle-wrapper.properties` 文件中的 `distributionUrl` 字段以指定新版本: ``` distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip ``` 此外,可以通过命令行更新 Gradle 和封装容器本身: ```bash ./gradlew wrapper --gradle-version 8.0 ``` 该命令会更新 `gradlew` 脚本和封装容器配置,确保项目使用指定版本的 Gradle 进行构建[^3]。 #### 检查并同步模块插件版本 在多模块项目中,确保每个模块的插件版本一致非常重要。例如,所有模块应使用相同的 `compileSdkVersion` 和 `buildToolsVersion`,以避免构建错误或运行时异常。可以在项目设置中统一这些配置,或者通过 CI 环境进行版本检查。 #### 示例:统一模块配置 ```gradle // Module-level build.gradle android { namespace 'com.example.myapp.feature' compileSdk 34 defaultConfig { minSdk 24 targetSdk 34 } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } ``` 通过统一模块的构建配置和插件版本,可以确保整个项目在构建时具有一致的行为和兼容性。 ---
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值