要执行命令行,首先,在环境变量里面进行配置。
1、手动安装Gradle,bin-->gradle.bat,这个目录配置到环境变量path里面,这样才能在变量里面进行运行。
2、Android studio 里面有Gradle。这里也有Gradle
每个工程下面都有一个Gradlew.bat这个批处理。有如下命令:
gradle tasks 列出所有命令。如果build.gradle是比较复杂的、我们可以对比一下
gradle build 编译所有的任务
gradle assembleRelease 只编译Release
gradle clean 命令清楚了APP下的这个包。
Android 在Terminal 里面也提供了个shell环境。也可以在这里进行编译
理论上,只有 apply plugin 和android{}就可以进行编译了,如果工程比较复杂,可以用dependencies{}引进依赖包,进行编译
尽管已经在一个文件夹里面了,但是这里,我们的APP并没有引入library里面的包
写一些配置,知道在哪些模块下
在Eclipse 里面也可以进行,我们可以指定某一个类型的文件存在某一个目录下面,可以用gradle脚本来编译
android { //这是一个Android模块 compileSdkVersion 19 buildToolsVersion "20.0.0" sourceSets { //这里是区别。 main { manifest.srcFile ‘AndroidManifest.xml‘ java.srcDirs = [‘src‘] resources.srcDirs = [‘src‘] aidl.srcDirs = [‘src‘] renderscript.srcDirs = [‘src‘] res.srcDirs = [‘res‘] assets.srcDirs = [‘assets‘] } instrumentTest.setRoot(‘tests‘) debug.setRoot(‘build-types/debug‘) release.setRoot(‘build-types/release‘) }
依赖项目设置
1、引入架包
右键属性,Open Module Settings F4 ,点击+号,第二项。引入gson.jar和gcm.jar 之后,脚本里面的文件多了两行
dependencies { compile fileTree(dir: ‘libs‘, include: [‘*.jar‘]) compile ‘com.android.support:appcompat-v7:22.2.1‘ compile files(‘libs/gcm.jar‘) compile files(‘libs/gson-2.3.1.jar‘) 当然,在我们修改了gson的版本之后,还是要来改这里的名称的,麻痹,不会自动改。用下面的一行代码解决。以后只要有新的架包扔到libs里面去,我们就直接引用了,不需要再写代码了 compile fileTree(include:‘*.jar‘,dir:‘libs‘) }
2、引入本地项目,引入的刚才新建的moudle (library,)
右键属性,Open Module Settings F4 ,点击+号,第三项。
dependencies { compile fileTree(dir: ‘libs‘, include: [‘*.jar‘]) compile ‘com.android.support:appcompat-v7:22.2.1‘ compile project(‘:library:mylibrary‘) }
表示引用的是个模块。
引用 v4包,v7包。
右键属性,Open Module Settings F4 ,点击+号,第一项。
compile ‘com.android.support:appcompat-v7:22.2.1‘
defaultConfig { applicationId "com.example.administrator.turnplatemenu" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" }
这个,如果不写,manifast里面会覆盖它
3、引入远程库
右键属性,Open Module Settings F4 ,点击+号,第一项。搜索gson库,导入之后,在APP下面的lib里面是没有的。只是会通过脚本去远程下载这个库。
编译时候修改包信息
真正强大的地方在于编译时还能修改定义,包名,versionCode versionName,
签名文件的设置
signingConfigs{//下面两个名字可以自定义 releasekey{ storeFile file(‘MYKEY‘) storePassword ‘123456‘ keyAlias ‘androidrelease‘ 修改为--->andoridkey keyPassword(‘123456‘) } debugkey{ storeFile file(‘MYKEY.debug‘) storePassword ‘android‘ keyAlias ‘androidbugkey‘ keyPassword android } }
有了这个结点,如何使用?
defaultConfig { applicationId "com.example.administrator.turnplatemenu" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" signingConfig signingConfigs.releasekey }
在defaultConfig里面加上最后一个结点,指定的签名文档。但是defaultConfig 必须定义在signingConfigs的下方。 这是脚本语言,和类不一样。
Failed to read key from keystore
这里说我们的密码有问题,这里修改为Androidkey
编译类型:buildType
用于编译出来的包是用于做什么的。一般系统默认就两种,一种release 一种debug,但是下面自己定义了两个。
buildTypes{ forrelease{ debuggable false } fordebug{ applicationIdSuffix ‘.debug‘ } fordailybuild{ //然后还有一个扩展,可持续继承, applicationIdSuffix ‘.db‘ } formonkeytest{ //用monkey跑用的 applicationIdSuffix ‘.monkey‘ }}
productFlavors { phone{ applicationID ‘com.win16.nyapplicaiton‘ signingConfig signingConfigs.releasekey } pad{ applicationId ‘con.win16.myapplication.hd‘ signingConfig singingConfigs.debugkey } default_channel{} wandoujia{} _360{} yingyongbao{} xiaomi{} baidu{} huawei{} jifeng{} }
所谓ProductFlavors其实就是可定义的产品特性,配合 manifest merger
使用的时候就可以达成在一次编译过程中产生多个具有自己特性配置的版本。
上面这个配置的作用就是,为每个渠道包产生不同的 UMENG_CHANNEL_VALUE
的值。