Android Studio项目Gradle内网配置
由于内网无法连接到外部网络,在使用Gradle编译Android Studio项目时就会面临一些问题:
1.Gradle安装文件无法下载
2.Gradle Android插件无法下载
3.项目依赖文件无法下载
苦心人天不负,通过摸索,找到了一些解决方法,与大家分享
开发机器信息:
操作系统:Windows
服务器的信息:
IP地址:192.68.121.130
操作系统: SUSE Linux Enterprise Server 11 SP4 (x86_64)
Java版本: 1.8.0_144
Tomcat版本: 7.0.70
Gradle安装文件存放目录为:/home/jack/Desktop/jack/software/gradle
Android APP信息:
Gradle Android插件版本:2.3.3
Gradle Wrapper版本:3.3
依赖文件:
junit:4.12
butterknife:8.4.0
打包命令:gradlew build
解决内网环境下Gradle安装文件无法下载的问题
1. 在服务器上安装Tomcat
1.1 从Tomcat网站下载Tomcat 7.0.70,地址:
https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.70/bin/apache-tomcat-7.0.70.tar.gz
1.2 解压Tomcat,执行以下命令
tar zxvf apache-tomcat-7.0.70.tar.gz
如解压后Tomcat对应的目录为:
/home/jack/Desktop/jack/software/apache-tomcat-7.0.70
1.3 设置环境变量TOMCAT_HOME为:
/home/jack/Desktop/jack/software/apache-tomcat-7.0.70
1.4 启动Tomcat,执行以下命令:
cd $TOMCAT_HOME
sh bin/startup.sh
2. 建立软链接:
cd $TOMCAT_HOME/webapps
ln -s /home/jack/Desktop/jack/software/gradle gradle
3. 将gradle-3.3-all.zip上传到服务器/home/jack/Desktop/jack/software/gradle目录下

此时访问 http://192.168.121.130:8080/gradle/gradle-3.3-all.zip,如可以下载文件,则配置成功
4. 替换项目中gradle-wrapper.properties文件的distributionUrl
5. 在项目根目录下执行gradlew –v,如果本地没有缓存3.3版本则先会从服务器下载gradle-3.3-all.zip并缓存到本地(默认本地缓存目录为C:\Users\xxx\.gradle\wrapper\dists),然后再执行命令


解决内网环境下Gradle Android插件无法下载的问题
1.在服务器上使用Nexus架设Maven私服
1.1 下载Nexus,地址:https://www.sonatype.com/download-oss-sonatype
本人使用的是Nexus版本为Nexus Repository Manager OSS 2.14.4-03,使用的安装文件为nexus-2.14.4-03-bundle.tar.gz
1.2 解压Nexus
tar zxvf nexus-2.14.4-03-bundle.tar.gz
如解压后Nexus对应的目录为:
/home/jack/Desktop/jack/software/nexus

1.3 启动nexus
cd /home/jack/Desktop/jack/software/nexus
cd nexus-2.14.4-03/bin
./nexus start
1.4 此时在浏览器中输入地址http://192.168.121.130:8081/nexus,如果能打开页面,则nexus配置成功了

Nexus启动默认的端口为8081,可以通过修改nexus-2.14.4-03/conf/ nexus.properties文件改变端口,上下文等信息

1.5 登录nexus,点击右上角的Log In进行登录,默认的管理员用户名密码为admin/admin123
1.6 上传Gradle Android插件到Maven私服,此处以上传Gradle Android Plugin 2.3.3版本到3rd party为例
由于gradle插件有很多依赖,层层依赖,因此此处需上传很多jar包,部分目录结构如下:
1.7 修改项目根目录build.gradle的buildscript节点,指定使用Maven私服地址下载插件,如下:
buildscript {
repositories {
maven {
url "http://192.168.121.130:8081/nexus/content/groups/public"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
解决内网环境下项目依赖文件无法下载的问题
1 将junit相关文件上传到Maven私服,需要上传的信息如下:
junit:junit:4.12
org.hamcrest: hamcrest-core:1.3
org.hamcrest: hamcrest-integration:1.3
org.hamcrest: hamcrest-library:1.3
org.hamcrest: hamcrest-parent:1.3
2 将bufferknife相关文件上传到Maven私服,需要上传的信息如下:
com.jakewharton: butterknife:8.4.0
com.jakewharton: butterknife-annotations: 8.4.0
com.jakewharton: butterknife-compiler: 8.4.0
com.google.auto.service: auto-service: 1.0-rc2
com.squareup:javapoet:1.7.0
com.google.auto:auto-common:0.6
com.google.auto:auto-parent:2
com.google.auto:auto-parent:3
3 修改项目根目录的build.gradle,修改节点allprojects,指定使用Maven私服地址下载依赖项,如下:
allprojects {
repositories {
maven {
url "http://192.168.121.130:8081/nexus/content/groups/public"
}
}
}
最后项目根目录的build.gradle如下:
buildscript {
repositories {
maven {
url "http://192.168.121.130:8081/nexus/content/groups/public"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
allprojects {
repositories {
maven {
url "http://192.168.121.130:8081/nexus/content/groups/public"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
我们可以通过定义扩展属性ext简化build.gradle,简化后的build.gradle文件如下:
buildscript {
ext.maven_url = "http://192.168.121.130:8081/nexus/content/groups/public"
ext.android_plugin_version = "2.3.3"
repositories {
maven {
url "$maven_url"
}
}
dependencies {
classpath "com.android.tools.build:gradle:$android_plugin_version"
}
}
allprojects {
repositories {
maven {
url "$maven_url"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
大功告成,至此问题全部解决,输入gradlew build命令愉快编译吧。
总结:
1.使用Tomcat解决内网无法下载Gradle安装文件的问题
2.使用Maven私服解决内网无法下载Gradle Android插件及依赖文件的问题
Android Studio项目Gradle内网配置的更多相关文章
- Android studio下gradle Robolectric单元测试配置
android studio下gradle Robolectric单元测试配置 1.Robolectric Robolectric是一个基于junit之上的单元测试框架.它并不依赖于Android提供 ...
- 在内网使用Gradle构建Android Studio项目
在Android Studio项目中,默认的远程仓库为jcenter,如果在项目引用了一些类库,Gradle构建程序的时候会将这些依赖类库从jcenter网站下载到本地,如我们在 build.grad ...
- Android studio 使用Gradle发布Android开源项目到JCenter 总结
1.注册账号 先到https://bintray.com注册一个账号. 这个网站支持 github 账户直接登录的 2.获取 bintray.user 和 bintray.apikey ...
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK
在项目开发过程中,经常会有需要打包不同版本的 APK 的需求. 比如 debug版,release版,dev版等等. 有时候不同的版本中使用到的不同的服务端api域名也不相同. 比如 debug_ap ...
- Android Studio :Android Studio 与 Gradle 深入【二】
转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=255063&extra=page%3D2%26filter%3Dautho ...
- 快速掌握 Android Studio 中 Gradle 的使用方法
快速掌握 Android Studio 中 Gradle 的使用方法 Gradle是可以用于Android开发的新一代的 Build System, 也是 Android Studio默认的build ...
- android studio 使用gradle 导出jar包,并打包assets目录
警告:本文年久失修. 随着android studio的升级 ,gradle的升级,严格按照本文的代码去做可能不会成功,希望依然可以作为解决问题的思路. 最近项目在做一个sdk,供别的开发者使用,所以 ...
- Android Studio项目转Eclipse项目
Android Studio项目的目录结构和Eclipse项目不同.如何转换? 以FloatingAction 项目为例:实现向上滑动隐藏悬浮按钮,向上滑动显示悬浮按钮. GitHub 地址:http ...
- Android Studio项目结构
我们创建了一个Android Project,打开就如下图所示: 我们选择Project视图,就会有以下的项目文档结构: 上面笔者标注的数字是接下来要讲解的内容. 我们先来看1: 我们创建Appl ...
随机推荐
- docker 搭建 Telegram Messenger MTP
docker hub官方镜像地址如下: https://hub.docker.com/r/telegrammessenger/proxy 拉取镜像 sudo docker pull telegramm ...
- MariaDB第二章:基本增删改查
MariaDB 数据类型 MariaDB数据类型可以分为数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的 常用的数据类型 整数:int, bit 小数:de ...
- Tutorial 01_熟悉常用的Linux操作和Hadoop操作
(一)熟悉常用的Linux 操作cd 命令:切换目录 (1) 切换到目录“/usr/local” (2) 切换到当前目录的上一级目录 (3) 切换到当前登录Linux 系统的用户的自己的主文件夹 ...
- Activiti6事件及监听器配置(学习笔记)
1.事件及监听器原理 当流程引擎启动的时候,我们定义的监听器,就已经注册在一个事件类型上面. 注册的方式有多种,它可以注册在所有的事件类型上面.也可以注册在指定的几个事件类型上面,这样引擎启动的时候就 ...
- golang数据类型与转换
一.数值型int(默认值 0) int 整数 32位系统占4个字节(-2^31~2^31-1).64位系统占8个字节(-2^63~2^63-1)uint 32位系统占4个字节(0~2^32-1).64 ...
- EntityFramework Core笔记:表结构及数据基本操作(2)
1. 表结构操作 1.1 表名 Data Annotations: using System.ComponentModel.DataAnnotations.Schema; [Table("R ...
- [模板] 最近公共祖先/lca
简介 最近公共祖先 \(lca(a,b)\) 指的是a到根的路径和b到n的路径的深度最大的公共点. 定理. 以 \(r\) 为根的树上的路径 \((a,b) = (r,a) + (r,b) - 2 * ...
- Manacher算法详解
问题 什么是回文串,如果一个字符串正着度读和反着读是一样的,这个字符串就被称为回文串. such as noon level aaa bbb 既然有了回文,那就要有关于回文的问题,于是就有了-- 最长 ...
- BZOJ5341[Ctsc2018]暴力写挂——边分治+虚树+树形DP
题目链接: CSTC2018暴力写挂 题目大意:给出n个点结构不同的两棵树,边有边权(有负权边及0边),要求找到一个点对(a,b)满足dep(a)+dep(b)-dep(lca)-dep'(lca)最 ...
- license.json
{"license":{"uid":"5359f3d1-8c8c-462b-a17b-b7eb0c3ddb8f","type&qu ...



