最近一家新公司,由于办公环境都是在内网机上,导致在Unity导出android工程后,gradle离线构建也是第一次搞,花了一天时间也踩了一些坑,最后也终于构建成功了,这里记录下,方便大家少走些弯路。

1.准备版本:AndroidStudio3.5.2,Gradle5.1.1,Gradle插件3.4.0

  AndroidStudio下载链接:https://developer.android.com/studio/archive?hl=zh-cn

  Gradle下载链接:https://services.gradle.org/distributions/

  maven依赖基础包下载链接:https://developer.android.com/studio?hl=zh-cn

2.打开Gradle离线模式

  File>Settings>Build>Gradle,勾选Offline Work,指定C:/Users/xxx/.gradle

  Gradle-wrapper.properties,修改distributionUrl=file:///F:/gradle-5.1.1-all.zip

  注意:1.复制的路径可能会有一场,有问题的话,就不要偷懒,手输吧

     2.指定了url的话,settings里的Use Local Gradle distribution 是可以不用勾的。

3.按照官方提供,指定本地maven依赖库

  maven基础包下载完后,放解压到 C:/Users/xxx/.android/manual-offline-m2/,第一次可能都要手动创建目录结构,

  在C:/Users/xxx/.gradle/init.d/ 目录(可能也要手动创建)下,创建名为offline.gradle的空白文件,编辑内容在第一步解压后的列表中有ReadMe自己赋值就行

4.注释默认build.gradle配置

  buildscripts

  {

    repositories{}

    dependencies

    {

      classpath 'com.android.tools.build:gradle:3.4.0'

    }

  }

5.直接复制外网机下载好的缓存

  最好是把之前有过外网环境下载的缓存拷贝到C:/Users/xxx/.android/manual-offline-m2/目录中。

  一般下载缓存地址: C:/Users/xxx/.gradle/caches/modules-2/files-2.1

6.构建异常踩坑补漏

  有可能还会出现一些新的依赖库丢失,这里提供两个可搜索下载的链接

  https://search.maven.org/artifact

  https://mvnrepository.com/artifact (可能会有验证码环节)

  这里我还出现了一个额外的坑,Unable to load class 'com.sun.xml.bind.v2.model.annotation.annotationreader',去查了下,google上也有大佬给出了答案,这里也把解决方案告诉大家,

这个问题原因还是出现在下载的gradle插件3.4.0上面。在 C:/Users/xxx/.android/manual-offline-m2/gmaven-stable/com/android/tools/build/gradle/3.4.0目录下的gradle-3.4.0.pom文件中最底

下添加三个依赖,再次就编译成功了,基本就这些坑吧。

<dependency>

  <groupId>org.jvnet.jaxb2.maven2</groupId>

  <artifactId>maven-jaxb2-plugin</artifactId>

  <version>0.14.0</version>

  <scope>compile</scope>

</dependency>

<dependency>

  <groupId>com.sun.xml.bind</groupId>

  <artifactId>jaxb-impl</artifactId>

  <version>2.2.11</version>

  <scope>compile</scope>

</dependency>

<dependency>

  <groupId>com.sun.xml.bind</groupId>

  <artifactId>jaxb-core</artifactId>

  <version>2.2.11</version>

  <scope>compile</scope>

</dependency>

Gradle AndroidStudio内网离线构建配置踩坑记录的更多相关文章

  1. 在mac版virtual box中安装ubuntu虚拟机的NAT/Host-Only网络配置踩坑记录

    之前用惯了vmware和parallels desktop,网络配置十分智能,基本不用自己配置.由于版权原因,工作电脑上换了免费的virtual box用,四五年都完全在虚拟机里干活的本菜鸡居然在虚拟 ...

  2. XXLJOB2.1.0数据源配置踩坑记录

    最近在看XXLJOB,因为截至到发文时间最新的版本是2.1.0而且需要建立的数据库与Quartz解耦了,所以就用了最新的版本. 首先说一下踩坑过程: 代码开发完成之后,在定时跑的时候第一次跑的多数失败 ...

  3. 记一次 Spring 事务配置踩坑记

    记一次 Spring 事务配置踩坑记 问题描述:(SpringBoot + MyBatisPlus) 业务逻辑伪代码如下.理论上,插入数据 t1 后,xxService.getXxx() 方法的查询条 ...

  4. mybatis-generator:generate 生成代码配置踩坑详解

    mybatis-generator:generate 生成代码配置踩坑不少,在此留下笔记以便后续填坑 一.mysql返回时间问题 错误信息: [ERROR] Failed to execute goa ...

  5. manjaro xfce 18.0 踩坑记录

    manjaro xfce 18.0 踩坑记录 1 简介1.1 Manjaro Linux1.2 开发桌面环境2 自动打开 NumLock3 系统快照3.1 安装timeshift3.2 使用times ...

  6. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  7. 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

    从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负责的模块connector就派上了用场. ...

  8. [技术博客]iview组件样式踩坑记录

    [技术博客]iview组件样式踩坑记录 iview官方文档. 在本次项目开发中,前端项目主要使用vue框架+iview组件构建,其中iview组件在使用过程中遇到了许多官方文档中没有明确说明或是很难注 ...

  9. Spark Ignite踩坑记录

    Ignite spark 踩坑记录 简述 ignite访问数据有两种模式: Thin Jdbc模式: Jdbc 模式和Ignite client模式: shell客户端输出问题,不能输出全列: 针对上 ...

随机推荐

  1. 为什么企业需要CRM系统?CRM的作用及其重要性分析

    客户管理系统(CRM)是企业核心应用软件之一,对于提高企业业绩起着至关重要的作用,现在很多企业都在客户发展方面投入大量的资金,以求获得更好的回报. 关于CRM CRM是一个客户数据中心,在CRM中,你 ...

  2. iOS UITextFeild获取高亮部分的长度

    获取原因: 中英文混输时,会遇到长度统计不准的问题. 获取方法: NSString *toBeString = textField.text; NSString *lang = [[UITextInp ...

  3. 分析一个免杀webshell发现的php特性

    文章首发于t00ls,嫌文章太啰嗦的可以直接看结论 起源 之前看到别人分享的一个免杀webshell: <?php @$GLOBALS{next} = $GLOBALS[$GLOBALS[fun ...

  4. iOS 搜索条使用详解

    在ios开发中搜索条的使用挺常见的,不过之前一直没用到也没细细研究,最近做外包项目的时候刚好用到,在这里记录一下使用的过程,只要理解了原理,其实还是比较简单的!上传的图片有点大,刚好可以看清楚它的使用 ...

  5. 第一次个人作业 - 软件工程与UML

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/f ...

  6. java44

    1.使用封装工具类思想:三种输入模式下的工具类. dateUtils类, StringUtils类(判断字符串值是否为空), 调用工具类: String res = dateUtils.datetoS ...

  7. HTML 和CSS

    1 HTML 介绍1.1 web 服务本质import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080))sk.lis ...

  8. DockerFile理解与应用

    1.DockerFile是什么? DockerFile是用来构建Docker镜像的构建文件,一般分为四部分:基础镜像信息.维护者信息.镜像操作指令和容器启动时执行指令,'#' 为 Dockerfile ...

  9. 记一次MySQL出现Waiting for table metadata lock的原因、排查过程与解决方法

    任务背景:将sql文件通过shell直接导入到mysql中执行(还原) bug表现:导入后java项目卡死 过程: 1.网上乱搜一通,无意间看到一篇文章,这篇文章说明了如何开启mysql的genera ...

  10. PyQt(Python+Qt)学习随笔:QListWidget插入多项的insertItems方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 除了insertItem方法能插入项外,QListWidget支持一次插入多个项,对应的方法就是in ...