扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、Make Project:编译Project下所有Module,一般是自上次编译后Project下有更新的文件,不生成apk。
创新互联建站成立于2013年,我们提供高端成都网站建设、成都网站制作公司、网站设计、网站定制、全网营销推广、微信平台小程序开发、微信公众号开发、成都网站营销服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为咖啡厅设计企业提供源源不断的流量和订单咨询。
2、Make Selected Modules:编译指定的Module,一般是自上次编译后Module下有更新的文件,不生成apk。
3、Clean Project:删除之前编译后的编译文件,并重新编译整个Project,比较花费时间,不生成apk。
4、Rebuild Project:先执行Clean操作,删除之前编译的编译文件和可执行文件,然后重新编译新的编译文件,不生成apk,这里效果其实跟Clean Project一样。
5、Build APK:前面4个选项都是编译,没有生成apk文件,如果想生成apk,需要点击Build APK。6、Generate Signed APK:生成有签名的apk。
为了更清楚的知道clean和rebuild到底有什么区别,我把自己的一个小项目执行了一下这两个操作,并用对比软件对比了一下,红色部分是执行build操作的时候多出来的步骤。
大概意思:
:app:incrementalDebugJavaCompilationSafeguard
在incremental-safeguard目录下生成tag.txt,标识已经执行过task
:app:compileDebugJavaWithJavac
intermediates下生成classes文件夹,以及对应的dependency-cache文件夹,classes文件夹中包含之前已经解压的各个aar文件中的类,但是不包含libs下的jar包中的内容;同时还会生成一个tmp文件夹,内容为空;目录下不包括libs下的jar包内容
compile Debug Ndk UP-TO-DATE
编译调试NDK更新
:app:compileDebugSources
:app:incrementalDebugUnitTestJavaCompilationSafeguard UP-TO-DATE
编译调试单元测试的更新
:app:compileDebugUnitTestJavaWithJavac
:app:processDebugJavaRes UP-TO-DATE
res资源更新
:app:processDebugUnitTestJavaRes UP-TO-DATE
单元测试中res资源的更新
:app:compileDebugUnitTestSources
:app:incrementalDebugAndroidTestJavaCompilationSafeguard
:app:compileDebugAndroidTestJavaWithJavac
:app:compileDebugAndroidTestNdk UP-TO-DATE
单元测试NDK更新
:app:compileDebugAndroidTestSources
基本上build比clean多的就是会把NDK重新编译一遍,有更新的话就更新。以及一些资源文件的更新。基本上差不多。
这样看来,clean项目一般已经够用了,如果NDK以及资源文件有更改的话建议rebuild。
说的不对的地方,还希望大家包含。(不服来打)
首先说一下Android studio如何进行打包:
博主测试新建了一个packaging的工程
还是先看一下目录结构,因为打包的时候和Eclipse不一样,可以自选的,最好不要用默认的目录结构
好,下面来看看如何进行打包
签名文件所要放的位置,帐号密码,以及别名
这里说一下,签名最好放在工程的根目录下,一个人开发的话,或者不是很保密的,其他的按照实际情况来
这里因为是新建的key,不能进行第二个选项
下面附图说明
没有的话是ok选项是不能点击的
点击create,会出现如下界面,英语不难,大家按照相应的填写就可以了
这里路径选择按照上面说的根目录就可以了
as貌似默认的是jks格式的,但是Eclipse貌似默认的keystore格式的,只是加密方式不一样,其他的不影响
确认后返回原来界面相应的都会进行自动补充
这里为了以后简便可以选择记录密码
到了这我要着重说一下,上面是apk包存放的位置,第二个是打包方式,第三个博主没用过
这个是默认的目录结构,大家可以对照第一张图片,就知道这个目录结构在哪了,它在as中是会进行加载的,不会隐藏,如果少的话还好,要是多的话这个会占目录结构的很大一部分,所以最好不要选择这个目录结构,那么选在哪呢?
其实as早就替你想到了,而且目录机构都给你构建好了
直接选在apk这就可以可,至于打包方式大家就按照默认的,release就可以,下面说为什么
好,选择ok,继续下一步,看出现的结果
这里出现了两个安装包,直接就是英文翻译就可以,一个是签名的一个是未签名的,未签名的话打包是不能进行使用的,然后就是说上面选择打包方式release,为什么不选择debug,debug默认不签名,而且对一些文件图片的格式校验比较松,还有就是一些string.xml文件或其他xml文件命名校验不是很严格,不必进行强制编译
反过来,看一下现在的目录结构
因为签名过了,并且博主记录了密码,以后打包就会方便了,来看看as比ec强大的地方
这里面很全,clean,debug,release等等,以后包多的话就知道好处了,现在就一个,但是相对也是比较方便的
双击release,打包,build successful打包完成
下面看一下如何获取签名,博主为了方便,把签名文件放在了根目录下了
这里要输入密码,而且没有光标显示
所有签名信息都可以查到了
Android Studio下的编译工具gradle的安装路径在:
磁盘路径\Android Studio\gradle\m2repository\com\android\tools\build\gradle
而不是:
磁盘路径\Android Studio\gradle\
项目中配置gradle的位置是:项目目录下build.gradle文件中:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
allprojects {
repositories {
jcenter()
}
}
dependencies {
}
为什么要用Gradle?
Gradle是比较先进的构建系统,也是一个很好的构建工具,允许通过插件自定义构建逻辑
以下是为什么Android Studio选择Gradle的主要原因:
使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(以下简称DSL)
基于Groovy。DSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。
支持已有的Maven或者Ivy仓库基础建设
非常灵活,允许使用best practices,并不强制让你遵照它的原则来。
其它插件时可以暴露自己的DSL和API来让Gradle构建文件使用。
允许IDE集成,是很好的API工具
需要准备:
Gradle 1.6 or 1.7
SDK with Build Tools 17.0.0 (released 5/16/2013)
Basic Project
在Gradle项目的根目录下,有个叫build.gradle的文件,它描述了这个项目的整体构建基础。
build文件
最基本的java程序,它的build.gradle文件就一句话:
apply plugin: 'java'
最基本的Android项目,它的build.gradle如下:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.6'
}
}
apply plugin: 'android'
android {
compileSdkVersion 17
}
我们一步步来分析一下上面三部分的内容。
buildscript{...} 配置了驱动build的代码,它声明将在Maven中央仓库,取一个classpath dependency,也就是Android plugin for Gradle v0.5.6
apply plugin 指明了用到的plugin是android,就像前面java程序中,用的plugin是java一样
android{...} 中配置了所有android构建的参数,这里也就是Android DSL的入口点。
默认的,只有目标编译环境是必要的,也就是compileSdkVersion这个属性。这和以前在project.properties中的target属性类似。
值得注意的是,如果你在Android项目中写 apply plugin:java 而不是apply plugin:android的话,将会build失败。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流