由于内网无法连接到外部网络,在使用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内网配置的更多相关文章

  1. Android studio下gradle Robolectric单元测试配置

    android studio下gradle Robolectric单元测试配置 1.Robolectric Robolectric是一个基于junit之上的单元测试框架.它并不依赖于Android提供 ...

  2. 在内网使用Gradle构建Android Studio项目

    在Android Studio项目中,默认的远程仓库为jcenter,如果在项目引用了一些类库,Gradle构建程序的时候会将这些依赖类库从jcenter网站下载到本地,如我们在 build.grad ...

  3. Android studio 使用Gradle发布Android开源项目到JCenter 总结

    1.注册账号 先到https://bintray.com注册一个账号.  这个网站支持 github 账户直接登录的 2.获取  bintray.user  和 bintray.apikey      ...

  4. Android 项目利用 Android Studio 和 Gradle 打包多版本APK

    在项目开发过程中,经常会有需要打包不同版本的 APK 的需求. 比如 debug版,release版,dev版等等. 有时候不同的版本中使用到的不同的服务端api域名也不相同. 比如 debug_ap ...

  5. Android Studio :Android Studio 与 Gradle 深入【二】

    转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=255063&extra=page%3D2%26filter%3Dautho ...

  6. 快速掌握 Android Studio 中 Gradle 的使用方法

    快速掌握 Android Studio 中 Gradle 的使用方法 Gradle是可以用于Android开发的新一代的 Build System, 也是 Android Studio默认的build ...

  7. android studio 使用gradle 导出jar包,并打包assets目录

    警告:本文年久失修. 随着android studio的升级 ,gradle的升级,严格按照本文的代码去做可能不会成功,希望依然可以作为解决问题的思路. 最近项目在做一个sdk,供别的开发者使用,所以 ...

  8. Android Studio项目转Eclipse项目

    Android Studio项目的目录结构和Eclipse项目不同.如何转换? 以FloatingAction 项目为例:实现向上滑动隐藏悬浮按钮,向上滑动显示悬浮按钮. GitHub 地址:http ...

  9. Android Studio项目结构

    我们创建了一个Android Project,打开就如下图所示:  我们选择Project视图,就会有以下的项目文档结构:  上面笔者标注的数字是接下来要讲解的内容. 我们先来看1: 我们创建Appl ...

随机推荐

  1. Neutron :默认通过 dnsmasq 实现 DHCP 功能----Namespace

    Neutron 提供 DHCP 服务的组件是 DHCP agent. DHCP agent 在网络节点运行上,默认通过 dnsmasq 实现 DHCP 功能.   配置 DHCP agent DHCP ...

  2. 微信JSSDK使用步骤(用于在微信浏览器中自定义分享,分享到朋友圈,拍照,扫一扫等功能)

    一.使用JSSDK需要一个公众号(需要认证!): (1).把自己项目的服务器地址输入. (2).把MP_verify_m7Qp93BAuIGDWRVO.txt  文件下载下来,放到该服务器域名指向的根 ...

  3. python 支付宝SDK

    python 支付宝SDK代码如下 from datetime import datetime from Crypto.PublicKey import RSA from Crypto.Signatu ...

  4. Linux程序宕掉后如何通过gdb查看出错信息

    我们在编写服务端程序的时候,由于多线程并且环境复杂,程序可能在不确定条件的情况下宕掉,还不好重新,这是我们如何获取程序的出错信息,一种方法通过打日志,有时候一些错误日志也不能体现出来,这时就用到我们的 ...

  5. js变速动画函数封装 回调函数及层级还有透明度

    //点击按钮,改变宽度到达一个目标值,高度到达一个目标值 //获取任意一个元素的任意一个属性的当前的值---当前属性的位置值 function getStyle(element, attr) { re ...

  6. Django之ContentType组件

    一.理想表结构设计 1.初始构建 1. 场景刚过去的双12,很多电商平台都会对他们的商品进行打折促销活动的,那么我们如果要实现这样的一个场景,改如何设计我们的表? 2. 初始表设计 注释很重要,看看吧 ...

  7. Spring MVC 使用介绍(六)—— 注解式控制器(二):请求映射与参数绑定

    一.概述 注解式控制器支持: 请求的映射和限定 参数的自动绑定 参数的注解绑定 二.请求的映射和限定 http请求信息包含六部分信息: ①请求方法: ②URL: ③协议及版本: ④请求头信息(包括Co ...

  8. Element UI——本地引入iconfont不显示

    前言 前面因为本地引入Element UI导致了iconfont不显示,所以只好再去Element UI官网去扒下iconfot 步骤 进入官网 组件 | Element UI F12进入控制台,找到 ...

  9. 帝国cms打开慢

    发现有个站(http://www.953239.com/)打开很慢,改了php版本后,快了一倍

  10. google vimium插件的一些简单命令

    j: 向下滑动 k: 向上滑动 d: 向下一页 u: 向上一页 x: 关闭页面 r: 刷新页面 gg: 回到顶部 yy: 复制网址 t: 打开新标签 f: 显示页内指令 yt: 复制当前网址并打开 o ...