Maven离线依赖库

QuibblerQuibbler 2020-07-11 约 5 分钟 2063 次阅读

Maven离线依赖库

AndroidStudio使用Gradle构建项目,但是最近Gradle频繁出现下载依赖失败,各种404/403网络异常,即便使用国内阿里的镜像仓库也无济于事(参考依赖库下载慢的解决办法)。

这几天不知道什么情况,突然project编译不了,gradle一直显示在download,等了很长时间之后最后还是失败。解决问题三件法宝都用上了:重启、卸载重装、清除缓存。不就是网络不能访问吗,重金购了一个“梯子”过“墙”,还是不行,真的玄学了。

1、下载离线依赖包

最后在Google开发者网站上找到了终极操作:提供下载最新版本的Android Gradle插件和Google Maven依赖项以离线构建项目。竟然把构建项目所需依赖全部一次性打包,下载到本地,免去gradle龟速下载过程。


下载地址:Offline components

2、本地配置

①新建目录并解压下载的zip包(如果之前已配置过,删除重新更新)

Windows上:%USER_HOME%/.android/manual-offline-m2/

macOS 和 Linux 上:~/.android/manual-offline-m2/

②创建Gradle脚本文件

Windows 上:%USER_HOME%/.gradle/init.d/offline.gradle

macOS 和 Linux 上:~/.gradle/init.d/offline.gradle

③复制以下内容保存到offline.gradle脚本文件中

def reposDir = new File(System.properties['user.home'], ".android/manual-offline-m2")
    def repos = new ArrayList()
    reposDir.eachDir {repos.add(it) }
    repos.sort()
    allprojects {
      buildscript {
        repositories {
          for (repo in repos) {
            maven {
              name = "injected_offline_${repo.name}"
              url = repo.toURI().toURL()
            }
          }
        }
      }
      repositories {
        for (repo in repos) {
          maven {
            name = "injected_offline_${repo.name}"
            url = repo.toURI().toURL()
          }
        }
      }
    }

④构建AndroidStudio项目即自动从本地离线依赖库中加载

⑤如果还会从在线依赖库中加载,可以注释屏蔽build.gradle中的google()和jcenter()

buildscript {
        repositories {
            // Hide these repositories to test your build against
            // the offline components. You can include them again after
            // you've confirmed that your project builds ‘offline’.
            // google()
            // jcenter()
        }
        ...
    }
    allprojects {
        repositories {
            // google()
            // jcenter()
        }
        ...
    }

参考资料:

        配置AndroidStudio

        AndroidStudio Offline components

相关推荐

精选
Airbnb开源项目
开源

Airbnb开源项目

Airbnb Engineering & Data ScienceAirflow Use Apache Airflow (incubating) to author workflows as directed acyclic graphs (DAGs) of tasks12,263Airpal Web UI for PrestoDB2,502Aerosolve A machine learning

1.8k
OkHttp线程池和连接池
开源

OkHttp线程池和连接池

OkHttp线程池和连接池了解了OkHttp的网络请求流程以及拦截器实现原理,再关注OkHttp中两个重要的:OkHttp的线程池和连接池。1、OkHttp线程池在OkHttp网络请求流程一文中,我们分析了OkHttp异步和同步请求流程。请求最后都在Dispatcher中分发调度处理,最后被ExecutorService执行。1.1、DispatcherDispatcher中执行任务的执行器是ex

5.2k
优美的开源动效库:Lottie
开源

优美的开源动效库:Lottie

优美的开源动效库:Lottie1、强大的动效LottieLottie是一个适用于Android,iOS,Web和Windows的库,它可以使用Bodymovin解析以json格式导出的Adobe After Effects动画,并在移动设备和Web上原生渲染它们!GitHub:https://github.com/airbnb/lottie-androidLottie官网:http://airbn

4.3k