快速打包app:gradlew assembleRelease --console plain (好使)

下边的方法暂时不好使,可以用的兄弟请教下哈!

Android Studio + Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看、编译并导入第三方开源项目的方法。

Sublime + Terminal编译并查看源码

首先来给大家介绍一种简便并且个人最喜欢的一种办法。很多时候我们在GitHub上看到一个不错的开源项目,一般有两种需求,阅读源码和查看运行效果,如果是单纯的查看源码我更喜欢用一些轻量级编辑器,如vim,sublime等,vim不是很熟练,所以个人一种都习惯用sublime来查看并阅读源码(实际开发还是Android Studio、Eclipse等IDE更有效率);至于查看运行效果首先得需要apk,对于一些开源项目已提供apk下载,那就好办,直接安装到手机即可。 而对于一些没有提供apk下载的,则需要自己手动编译打包。

下面以9GAG为例来讲解下命令行Gradle编译的过程。

  • 1、切换到9GAG项目的根目录,执行 ./gradlew -v 来查看下项目所用的Gradle版本

如果你是第一次执行会去下载Gradle,这个过程如果不翻墙非常慢,建议翻墙

紧接着下载成功会看到如下信息:

------------------------------------------------------------
Gradle 2.2.1
------------------------------------------------------------ Build time: 2014-11-24 09:45:35 UTC
Build number: none
Revision: 6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_60 (Oracle Corporation 24.60-b09)
OS: Mac OS X 10.9.5 x86_64
  • 2、接着执行 ./gradlew clean

执行这个命令会去下载Gradle的一些依赖,下载成功并编译通过时会看到如下信息:

:app:clean UP-TO-DATE
:extras:ShimmerAndroid:clean UP-TO-DATE BUILD SUCCESSFUL
  • 3、最后执行 ./gradlew build

这个命令会直接编译并生成相应的apk文件,如果看到如下字样就代表build成功了

BUILD SUCCESSFUL

Total time: 31.456 secs

紧接着在 9GAG/app/build/outputs/apk 目录下会看到类似于app-debug-unaligned.apk, app-release-unsigned.apk等,看名字应该能理解意思,unaligned代表没有进行zip优化的,unsigned代表没有签名的。然后就可以直接安装apk查看运行效果了。

以上是我个人习惯的一种阅读第三方源码的习惯,关于上面提到的一些gradle命令大家应该还不理解,后面会一一进行说明的。

导入Android Studio

但是如果你还是想导入Android Studio的话,下面就来简单介绍下导入Studio的方法以及一些注意事项。

  • 1、选择File->Import Project, 选择本地9GAG项目的目录

  • 2、第一次依然会下载Gradle,其实自己在命令行已经下载过了,但是这次依然还要下载一次(依然要翻墙),可能是个bug

  • 3、导入之后你需要注意以下几个地方
  1. 每个Module下的 build.gradle 下的buildToolsVersion,即9GAG/app/build.gradle 和9GAG/extras/ShimmerAndroid/build.gradle , 可以打开 SDK Manager 查看本地你安装的 SDK Build-tools, 如下图,如果相应版本没有安装请先下载。

  1. 项目根目录下的 build.gradle 下gradle插件的版本,如 9GAG/build.gradle 的内容:

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

Android Studio 1.0必须指定gradle插件1.0的版本

  1. Gradle Wrapper的版本,在 9GAG/gradle/wrapper/gralde-wrapper.properties 文件里有如下内容:

    Thu Dec 18 16:02:24 CST 2014

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https://services.gradle.org/distributions/gradle-2.2.1-all.zip

上述内容制定了gradle的版本使用2.2.1,在Studio中如果你手动改了gradle插件的版本会有提示要不要更新Gradle Wrapper的版本。

如果以上几个地方确定版本是ok的,那么导入Android Studio应该没有问题,有些老的项目可能gradle版本比较老,仍然在使用一些老的语法,如果编译还通不过参考Android Studio系列教程四--Gradle基础更改成最新的语法。

Gradle常用命令

上面大家接触了一些命令如 ./gradlew -v ./gradlew clean ./gradlew build, 这里注意是./gradlew./代表当前目录,gradlew代表 gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就封装了gradle,即gradle wrapper, 在9GAG/gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本。只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。

理解了gradle wrapper的概念,下面一些常用命令也就容易理解了。

  • ./gradlew -v 版本号

  • ./gradlew clean 清除9GAG/app目录下的build文件夹

  • ./gradlew build 检查依赖并编译打包

这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如

  • ./gradlew assembleDebug 编译并打Debug包

  • ./gradlew assembleRelease 编译并打Release的包

除此之外,assemble还可以和productFlavors结合使用,具体在下一篇多渠道打包进一步解释。

  • ./gradlew installRelease Release模式打包并安装

  • ./gradlew uninstallRelease 卸载Release模式包

引用原文:https://segmentfault.com/a/1190000002464822

写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,文章可以转载,无需版权。希望尽自己的努力,做到更好,大家一起努力进步!

如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!

 

Gradle命令详解与导入第三方包--快速打包的更多相关文章

  1. Android Studio系列教程五--Gradle命令详解与导入第三方包

    Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...

  2. Gradle命令详解与导入第三方包

    Android Studio + Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看.编译并导入第三方开源项目的方法. Sublime + Term ...

  3. 【Python打包成exe方法】——已解决导入第三方包无法打包的问题

    ​ 前言 在我们写代码的过程中,我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我们将我们的xx.py文件发给他,他是不能直接用的,他还需要安装python解释器,甚至还要安 ...

  4. android studio学习----gradle命令详解

    首先来给大家介绍一种简便并且个人最喜欢的一种办法.很多时候我们在GitHub上看到一个不错的开源项目,一般有两种需求,阅读源码和查看运行效果,如果是单纯的查看源码我更喜欢用一些轻量级编辑器,如vim, ...

  5. [转] - JAR文件包及jar命令详解 ( MANIFEST.MF的用法 )

    常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像. chm 文档一样双击运行了:而另一种是使用 JET 来进 ...

  6. Sqoop 导入及导出表数据子集命令详解

    Sqoop命令详解 1.import命令 案例1:将mysql表test中的数据导入hive的hivetest表,hive的hivetest表不存在. sqoop import --connect j ...

  7. mysql导入导出命令详解

    mysql导入导出命令详解 该命令适用于临时备份操作. 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): /usr/local/mysql/bin/  ---> ...

  8. 抓包工具:tcpdump抓包命令详解

    抓包工具:tcpdump抓包命令详解 简介: tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以 ...

  9. oracle中imp命令详解 .

    转自http://www.cnblogs.com/songdavid/articles/2435439.html oracle中imp命令详解 Oracle的导入实用程序(Import utility ...

随机推荐

  1. Android无线测试之—UiAutomator UiScrollable API介绍三

    获取列表子元素 一.相关API介绍 返回值 API 描述 UiObject getChildByDescription(UiSelector childPattern, String text, bo ...

  2. uiautomatorviewer.bat使用方法

    在android目录下找到uiautomatorviewer.bat,然后双击,页面的第二个按钮连接设备 D:\Program Files\android-sdk-windows\tools\uiau ...

  3. CentOS firewalld 防火墙操作

    Centos 7 开启端口CentOS 7 默认没有使用iptables,所以通过编辑iptables的配置文件来开启80端口是不可以的 CentOS 7 采用了 firewalld 防火墙 如要查询 ...

  4. 编写高质量代码--改善python程序的建议(七)

    原文发表在我的博客主页,转载请注明出处! 建议三十四:掌握字符串的基本用法 编程有两件事,一件是处理数值,另一件是处理字符串,在商业应用编程来说,处理字符串的代码超过八成,所以需要重点掌握. 首先有个 ...

  5. 160714、解决虚拟机上的tomcat无法被主机访问的问题

    备注:我虚拟机是centos 6.5    在wmware中安装linux后安装好数据库,JDK及tomcat后启动服务,虚拟机中可以访问,但是主机却无法访问,但是同时主机和虚拟机之间可以ping的通 ...

  6. delphi --批量添加

    公共批量添加方法 function BatchSQL(DC : TADOConnection; Qry : TADOQuery; StrSQL : TStrings): Boolean; var i ...

  7. 推荐10 个短小却超实用的 JavaScript 代码段

    1. 判断日期是否有效 JavaScript中自带的日期函数还是太过简单,很难满足真实项目中对不同日期格式进行解析和判断的需要.jQuery也有一些第三方库来使日期相关的处理变得简单,但有时你可能只需 ...

  8. UIButton+Block

    UIButton的一个Category,使用block处理UIControlEvent事件,如常用的TouchUpInside等.代码非原创,也是从网上看到的,用到了实际项目中,目前还没发现什么问题. ...

  9. 处理界面上使用两个jq的报错

    转载:http://www.365mini.com/page/jquery_noconflict.htm <script src="jquery-1.9.1.js">& ...

  10. 在启动MYSQL时出现问题:“ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)”

    1.问题描述 在启动MYSQL时出现问题:"ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)& ...