使用gradle编译安卓APK
一、安装JDK
在安装Gradle之前需要先安装JDK,由于安装的是Gradle是4.4所以需要安装JDK1.8。
之前编译总是提示如下错误就是由于先安装的jdk1.7然后安装的1.8造成的,在Gradle启动文件中使用了JAVAHOME并且写成了1.7的目录,所以无论怎么配置都是最后脚本中的生效,所以提示版本不对。
- java.lang.UnsupportedClassVersionError: com/android/build/gradle/LibraryPlugin : Unsupported major.minor version 52.0
1、安装jdk
2、设置环境变量
设置 JAVA_HOME
- JAVA_HOME=C:\Program Files\Java\jdk1.8.0_171
设置path
- Path=%PATH%;%JAVA_HOME%\bin
3、测试配置是否正确
执行如下命令后提示java1.8即表示成功
- java -version
二、安装Gradle
1、下载Gradle
Gradle下载网址:http://services.gradle.org/distributions/
由于项目使用4.4编译所以下载4.4:http://services.gradle.org/distributions/gradle-4.4.1-all.zip
2、解压缩
创建如下目录:
lrs : 是当前用户目录,需要根据实际修改;
.gradle : 在资源管理器中无法创建请使用dos命令创建 mkdir .gradle
- C:\Users\lrs\.gradle\wrapper\dists
将下载的zip文件存放到上边创建的目录中,将zip解压缩,解完后类似如下目录
- C:\Users\lrs\.gradle\wrapper\dists\gradle-4.4-all\gradle-4.4
3、设置环境变量(目录需要根据你的实际情况修改)
设置 GRADLE_HOME
- GRADLE_HOME=C:\Users\lrs\.gradle\wrapper\dists\gradle-4.4-all\gradle-4.4
设置PATH
- Path=%PATH%;%GRADLE_HOME%\bin
4、测试配置是否正确
在cmd中执行如下命令如果显示当前版本为4.4即安装正确
- gradle -v
三、安装Android SDK
1、下载安装包
官网,需翻墙:http://developer.android.com/sdk/index.html
不需翻墙:http://www.androiddevtools.cn/
根据你的平台选择相应下载
2、解压缩、安装
将下载的压缩包解压缩到此目录中
- C:\Users\lrs\AppData\Local\Android\Sdk\sdk-tools
3、允许协议
在cmd中进入此目录
- C:\Users\lrs\AppData\Local\Android\Sdk\sdk-tools\bin
运行如下命令,所有都回答Y接受协议
- sdkmanager.bat --licenses
4、设置环境变量
设置 ANDROID_HOME
- ANDROID_HOME=C:\Users\lrs\AppData\Local\Android\Sdk
注意 ANDROID_HOME 指到解压缩目录的上一级,也就是这个 sdkmanager.bat 往上的两级目录
5、安装 Android SDK Build-Tools 26.0.2
再次进入如下目录
- C:\Users\lrs\AppData\Local\Android\Sdk\sdk-tools\bin
执行如下命令显示所有sdk,相应的 sdkmanager 可以参见 https://developer.android.com/studio/command-line/sdkmanager
- sdkmanager --list
根据list的内容安装 build-tools;26.0.2,如下命令
在linux上不需要安装此库,直接运行步骤7即可
- sdkmanager build-tools;26.0.2
6、下载源代码
7、clean
在cmd中进入源码目录执行如下命令,安装过程中会下载一些需要的sdk
- gradlew clean
由于墙的问题可能运行上面命令很慢卡在哪里,可以设置国内的一个代理服务器方法如下:
创建 gradle.properties 文件这个目录在当前用户下
- vi /root/.gradle/gradle.properties
插入如下内容保存即可,重新执行编译命令。
- # http代理
- systemProp.http.proxyHost=www.somehost.org
- systemProp.http.proxyPort=8080
- systemProp.http.proxyUser=userid
- systemProp.http.proxyPassword=password
- systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost
- # https代理
- systemProp.https.proxyHost=www.somehost.org
- systemProp.https.proxyPort=8080
- systemProp.https.proxyUser=userid
- systemProp.https.proxyPassword=password
- systemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhost
注:有的时候代理上也下不来更换代理或者将代理去掉再试一次。
8、编译
执行类似如下命令编译,需要根据你的工程改app的内容
编译过程中gradlew会根据需要下载需要的sdk,由于网络问题可以会提示连接超时错误,多试几次即可,或者根据步骤9配置一个代理
- gradlew :app:assembleDebug # 编译 debug 包,当前用的是多渠道编译所以没有使用参数的话会编译所有渠道的debug包
- gradlew :app:assembleRelease # 编译 release 包,当前用的是多渠道编译所以没有使用参数的话会编译所有渠道的release包
- gradlew :app:assembleBaiduDebug # debug包,指定编译百度渠道的debug包
- gradlew :app:assembleYingyongbaoDebug # debug包,指定编译应用宝渠道的debug包
- gradlew :app:assembleBaiduRelease # # release包,指定编译百度渠道的release包
- gradlew :app:assembleDebugRelease # release包,指定编译应用宝渠道的release包
多渠道配置在build.gradle文件中如下:
- flavorDimensions "default"
- productFlavors {
- kuan { dimension "default" }
- xiaomi { dimension "default" }
- qh360 { dimension "default" }
- baidu { dimension "default" }
- wandoujia { dimension "default" }
- yingyongbao { dimension "default" }
- }
9、设置使用代理下载sdk
执行如下命令设置代理服务器地址,其它参数也可参见 https://developer.android.com/studio/command-line/sdkmanager
- sdkmanager.bat --proxy={ubuntu.buct.edu.cn | 80}
代理服务器见下表
- 1、北京化工大学镜像服务器地址:
- IPv4: ubuntu.buct.edu.cn/ 端口:80
- IPv4: ubuntu.buct.cn/ 端口:80
- IPv6: ubuntu.buct6.edu.cn/ 端口:80
- 2、大连东软信息学院镜像服务器地址:
- mirrors.neusoft.edu.cn 端口:80
- 3、郑州大学开源镜像站:
- mirrors.zzu.edu.cn 端口:80
参见文档:
https://blog.csdn.net/love4399/article/details/77164500
https://blog.csdn.net/strangenightmare/article/details/52233395
使用gradle编译安卓APK的更多相关文章
- centos 下 gradle 编译打包 apk
由于Jenkins 装在centos环境下,想实现Android程序的编译,只能通过gradle 命令去打包版本apk,以下记录了如何在centos下使用gradle 打包apk 一.安装 gradl ...
- apktool 在mac下的使用 -反编译安卓apk文件
1.下载apktool 点击这里下载 ,里面有两个文件,一个是.jar,一个是自己写的脚本.sh 注:最新的apktool.jar 文件可以点击这里下载 .sh脚本是自写脚本可不用更新最新,下载的ja ...
- 使用Gradle编译release apk报错:Please correct the above warnings first
在开发SDK的过程中,遇到了一个研发,使用了自己的SDK之后遇到了各种问题,于是我们自己帮忙接入. 所有代码都接入完成之后,准备export出一个release包,但是此时却报错: 此时出现了很多的w ...
- 反编译安卓apk以及jar包
https://www.jianshu.com/p/c9b553cf2b51 https://blog.csdn.net/bzlj2912009596/article/details/78268896
- [COCOS2DX]交叉编译实践+速度优化(vs2012修改win32代码+修改makefile+编译安卓项目包+部署安卓项目包到Eclipse+运行apk)
通过前面的部署过程可以知道cocos2dx的开发过程如下: 1.VS2012完成修改 2.因为指定了CPP文件位置,ndk可以通过jni方式完成C++文件的编译,运行以下命令完成proj.androi ...
- 专注于C#.Net WPF软件开发-软件反编译-软件破解-逆向-靖芯科技-包括安卓APK反编译
靖芯科技提供.Net软件开发,软件修改定制二次开发,软件破解,反编译,逆向等各项优质服务: 包括安卓APK软件反编译. 包括但不限于C#,WPF,Surface,Winform,Asp.net.JAV ...
- 安卓apk反编译
在win环境反编译安卓APP的.apk文件 安卓apk 反编译为 Java源码图文教程 Android安全攻防战,反编译与混淆技术完全解析(上)
- 安卓---apk反编译
转自:http://blog.csdn.net/vipzjyno1/article/details/21039349 在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮 ...
- 【转】安卓apk反编译、修改、重新打包、签名全过程
首先明确,反编译别人apk是一件不厚道的事情.代码是程序员辛苦工作的成果,想通过这种手段不劳而获,是不对的.这也说明,代码混淆是非常重要的.本文抱着学习的态度,研究在一些特殊的情况下如果有需要,该怎么 ...
随机推荐
- 洛谷 P4292 [WC2010]重建计划 解题报告
P4292 [WC2010]重建计划 题目描述 \(X\)国遭受了地震的重创, 导致全国的交通近乎瘫痪,重建家园的计划迫在眉睫.\(X\)国由\(N\)个城市组成, 重建小组提出,仅需建立\(N-1\ ...
- 洛谷 P2389 电脑班的裁员 解题报告
题意: 给定一段长为N的序列,选取其中的至多M段使这些子段和最大. 当N=1000时,我们可以采用动态规划解法 令\(dp[i][j][k]\)代表当前选至位置\(i\)处于第\(j\)段当前是否选取 ...
- Android Studio aidl文件路径自定义问题
1.aidl旧文件夹中添加的内容无法编译 sourceSets中主要是把把src/main/aidl文件也作为java.srcDirs, resources.srcDirs,这样当编译程序时,AIDL ...
- Git6:Git简单远程仓库部署
目录 一.服务端操作 二.客户端操作 一.服务端操作 1.安装git yum install -y git 2.创建git用户 useradd git 3.创建客户端登录证书 收集所有需要登录的用户的 ...
- Ubuntu 搭建svn服务器 ,以及常见错误解决方案
一.安装命令: 1)以root身份登录.执行:sudo su -命令 2)执行安装命令:apt-get install subversion 二.创建项目目录 1)mkdir /home/svn ...
- angularJS__v1.5.6点击同一个菜单刷新
针对angularjs的1.0版本,点击菜单不刷新问题,只需在配置路由时,路由路径添加“/”,如,点击 标签时,就会刷新,
- c# 判断一个数是不是质数或者求一个数的公约数的算法
一个数是不是质数,就是判断一个数除了1和它本身还有没有其他的约数,如果有则是合数,否则是质数.其实本质都是求公约数. 求公约数是什么思路呢,就是找比它小的数不断尝试,能被整除则是其约数,否则继续尝试, ...
- Linux下编译Phantomjs
1.安装依赖的库 <pre> sudo apt-get install g++ flex bison gperf ruby perl \ libsqlite3-dev libfontcon ...
- .NET 定时器类及使用方法
Timer类实现定时任务 //2秒后开启该线程,然后每隔4s调用一次 System.Threading.Timer timer = new System.Threading.Timer((n) =&g ...
- div+css+jQuery简单实现投票功能
昨天看到C#群里有人问一个投票功能如何实现... 我对此很感兴趣,为了练习一下,就有了以下代码. 投票功能使用jQuery实现..纯html代码...数据通过json字符串传递,通过 eval转换为j ...