1 Android Module的概念
http://stormzhang.com/devtools/2014/11/28/android-studio-tutorial2/
1、Studio中有Project和Module的概念,前面说到Studio中一个窗口只能有一个项目,即Project,代表一个workspace,但是一个Project可以包含多个Module,比如你项目引用的Android Library, Java Library等,这些都可以看做是一个Module;
2、上述目录中将java代码和资源文件(图片、布局文件等)全部归结为src,在src目录下有一个main的分组,同时划分出java和res两个文件夹,java文件夹则相当于Eclipse下的src文件夹,res目录结构则一样.
============ ========== ========== ========== ========== ==========
2. 9GAG/settings.gradle
这个文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module,我们来看看9GAG该文件的内容:
include ':app', ':extras:ShimmerAndroid'
文件中的 app, extras:ShimmerAndroid 都是module,如果还有其他module都需要按照如上格式加进去。
============ ========== ========== ========== ========== ==========
3 Gradle command 常用命令
http://stormzhang.com/devtools/2015/01/05/android-studio-tutorial5/
1、切换到 项目的根目录,执行 ./gradlew -v 来查看下项目所用的Gradle版本
terminal: error info
./gradlew: Permission denied
reslove:
chmod +x gradlew
2、接着执行 ./gradlew clean
执行这个命令会去下载Gradle的一些依赖,下载成功并编译通过
3、最后执行 ./gradlew build
这个命令会直接编译并生成相应的apk文件,如果看到如下字样就代表build成功了
总结:
./gradlew -v 检查gradlew 检查版本 一次就可以了
./gradlew clean 检查项目的依赖, 主要是扫描 settings.gradle build.gradle dependences
依赖包
./gradlew build 构建项目的任务
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 清除 项目名字/app目录下的build文件夹
./gradlew build 检查依赖并编译打包
这里注意的是 ./gradlew build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 **assemble**, 如
./gradlew assembleDebug 编译并打Debug包
./gradlew assembleRelease 编译并打Release的包
除此之外,assemble还可以和productFlavors结合使用,具体在下一篇多渠道打包进一步解释。
./gradlew installRelease Release模式打包并安装
./gradlew uninstallRelease 卸载Release模式包
============ ========== ========== ========== ========== ==========
4 Gradle多渠道打包
多渠道打包的问题,相比我不说大家也应该知道的,很是蛋疼 的问题,我在上家公司的时候,我使用的是Eclipse + ANT 打包,过程是非常的痛苦的问题。蛋疼呀,而且打包的过程中报错的问题也是非常的难以找到。 所以我建议使用Android + gradle 打包, 简单方便。中国有多少市场? 少说也有几百多吧。但是真正有用的也就只有那么是十几个,可是运营并不会这没想的。 往常打个包需要2分钟,如果一个一个的打包是很蛋疼的。配置了gradle 是非常方便!
十几分钟 二十几个包吧!
下面让我们一起来:
友盟多渠道打包
Android studio 打包会存放在:
\app\build\outputs\apk
查看Key SSH Keytool:
如果你照着上面的博客写的话:
会遇到下面的问题:
Could not find method releaseTime() for arguments [] on com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@50fe0eed.
因为我们没有在 Gradle 写 releaseTime() 之后的代码就识别了, 去掉 releaseTime() 就OK了。
但是这个时候我们只能打印 debug 的包:
打包的Command:
assemble结合Build Variants来创建task
上一篇博客介绍了 assemble 这个命令,会结合 Build Type 创建自己的task,如:
./gradlew assembleDebug
./gradlew assembleRelease
除此之外 assemble 还能和 Product Flavor 结合创建新的任务,其实 assemble 是和 Build Variants 一起结合使用的,而 Build Variants = Build Type + Product Flavor , 举个例子大家就明白了:
如果我们想打包wandoujia渠道的release版本,执行如下命令就好了:
./gradlew assembleWandoujiaRelease
如果我们只打wandoujia渠道版本,则:
./gradlew assembleWandoujia
此命令会生成wandoujia渠道的Release和Debug版本
同理我想打全部Release版本:
./gradlew assembleRelease
这条命令会把Product Flavor下的所有渠道的Release版本都打出来。
总之,assemble 命令创建task有如下用法:
**assemble**: 允许直接构建一个Variant版本,例如assembleFlavor1Debug。
**assemble**: 允许构建指定Build Type的所有APK,例如assembleDebug将会构建Flavor1Debug和Flavor2Debug两个Variant版本。
**assemble**: 允许构建指定flavor的所有APK,例如assembleFlavor1将会构建Flavor1Debug和Flavor1Release两个Variant版本。
============ ========== ========== ========== ========== ==========
5 代码混淆之道
下面开始我们的代码混淆:
如何进行代码的混淆呢?
代码的混淆prugard 可以 压缩我们代码,减小包的大小, 优化我们的代码,最主要的代码混淆,保护我们的智慧的财产。不让别人不劳而获!
http://developer.android.com/tools/help/proguard.html
Umeng:
============ ========== ========== ========== ========== ==========
reference:
1 Gradle基础
http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/
2 Android studio info
http://stormzhang.com/devtools/2014/11/28/android-studio-tutorial2/
3 http://stormzhang.com/devtools/2015/01/05/android-studio-tutorial5/
4 http://stackoverflow.com/questions/17668265/gradlew-permission-denied
5 http://developer.android.com/tools/help/proguard.html
No comments:
Post a Comment