Android studio gradle配置完整版
https://my.oschina.net/u/1471093/blog/539075

Android studio 自定义打包apk名 - petercao - 博客园
http://www.cnblogs.com/bluestorm/p/6228085.html

gradle升级更新,有些方法已经过时,在此重新更新一下gradle配置。上代码,先睹为快。

一、build.gradle文件

apply plugin: 'com.android.application'
//设置编译android项目的参数
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
// applicationId "默认包名"
minSdkVersion 9
targetSdkVersion 22
//versionCode 229
//versionName "2.2.9"
}
/**
*Android默认配置,建议不写,直接用系统默认的配置
*/
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
/**
*如果.so文件跟Eclipse一样放在了libs文件夹下就需要加上这一行代码
*/
jniLibs.srcDirs = ['libs']
}
//测试所在的路径,这里假设是tests文件夹,没有可以不写这一行
instrumentTest.setRoot('tests')
}
/*** 签名设置*/
signingConfigs {
myConfig {
storeFile file("F:\\123.keystore");
keyAlias "123"
keyPassword "123456"
storePassword "123456"
}
}
/**
*调用本地aar文件
*/
repositories {
//mavenLocal()
//mavenCentral()
flatDir {
dirs 'libs'
}
}
/*** 渠道打包*/
productFlavors {
xxx {//渠道名
applicationId "修改的包名"
versionName "2.2.9"
versionCode 229
}
xxx1 {//渠道名
applicationId "修改的包名"
versionName "2.2.9"
versionCode 229
}
}
/**
* 替换AndroidManifest.xml的BaiduMobAd_CHANNEL_VALUE字符串为渠道名称格式
* <meta-data
* android:name="BaiduMobAd_CHANNEL"
* android:value="${BaiduMobAd_CHANNEL_VALUE}" />
*/
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [BaiduMobAd_CHANNEL_VALUE: name]
}
/**
* 混淆设置
*/
buildTypes {
release {
signingConfig signingConfigs.myConfig
minifyEnabled true//是否混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.myConfig
minifyEnabled true//是否混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.1'
compile(name: 'pulltorefresh', ext: 'aar')
}

在此需要说明的是需要注意build文件里面方法的顺序。如果在在方法体中用到我们书写的方法的话,该方法必须放在用到的方法的后面。

二、.so文件的处理

(1)在此推翻以前我们写的那个so文件的引用,其实so文件的地址也可以通过下面的代码来配置:

 //Android默认配置
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
/**
*如果.so文件跟Eclipse一样放在了libs文件夹下就需要加上这一行代码
*/
jniLibs.srcDirs = ['libs']
}
//测试所在的路径,这里假设是tests文件夹,没有可以不写这一行
instrumentTest.setRoot('tests')
}

  (2)android studio的默认配置为:

1.在“src/main”目录中新建名为“jniLibs”的目录;

2.将so文件复制、粘贴到“jniLibs”目录内。

三、aar文件与jar文件

对于项目依赖 android library的话,就不是依赖一个jar,那么简单了,在这里需要使用gradle mulit project 机制。在过去,android library并没有一个很好的包管理方式,简单来说,在gradle出现以前,官方并没有一种用于管理android library 依赖包的方式,一般我们都是直接下载别人的android library project 源码进行集成,而对于第三方的android-maven-plugin 用的是apklib 格式。

而现在,官方终于推出一种android library的打包格式,扩展名为*.aar。前面提到,目前android gradle插件并不支持本地直接使用*.aar文件,不过,支持包管理库的引用方式,下面,我为大家说一下,怎么对android library 发布使用。

打包android library

对android library 进行打包直接在library项目下面使用gradle build 即可,然后,你就会在 build/outputs/aar 目录下看到两个*.aar文件,一个debug包用的,一个是release 下用的,看个人需求使用,这里我们用的是release 版本的 .aar 文件。

引用脚本跟前面讲的依赖库相似

dependencies {
compile(name: 'pulltorefresh', ext: 'aar')
}

pulltorefresh为我们library生成aar文件的名字。关于library的创建和添加,在此不做赘述。

(1)aar与jar的区别

*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。

*.aar:包含所有资源,class以及res资源文件全部包含

*.aar:有两种方式,分别为本地加载以及网络加载,由于网络加载涉及到发布到mavenCentral托管的问题这里不做讨论;在这里给大家说一种本地加载的方式,简单快捷。

这里演示的aar文件为:”pulltorefresh.aar“

aar需要拷贝到“libs”文件夹下,gradle配置为

/**
*调用本地aar文件
*/
repositories {
//mavenLocal()
//mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'pulltorefresh', ext:'aar')
}

  

四、打包

现在,终于到了最后一步,自动多渠道修改包名打包(听着就高大上【偷笑】)。现在自动打包也有两种方法。

(1)手动触发

跟普通打包一样,最后选择渠道时,按住“shift”点击全部选中,确定,你就可以关闭屏幕,下班了。第二天早晨来收获结果。

(2)代码自动运行
        点击studio面板上的“Terminal”或者“cmd”进入到当前工程的根目录下执行gradlew assembleRelease命令自动进行多渠道打包。还有一个类似的命令:gradlew assembleDebug想必通过名字,就能到猜测出。

注意:第一次执行打包命令的时候,会自动下载一些与打包相关的文件。

最后,打包完成的apk在哪呢?这也是我们最关注的问题。在当前Module的build->outputs->apk文件夹下。

大家也可以看一下,以前我关于对gradle的配置,在此附上地址:Android studio gradle配置android studio gradle 配置修改

另外:在开发Android应用时,通常情况下是通过USB数据线连接设备和计算机,但对于一些需要使用USB设备的应用,这种方法就碰到了麻烦,手机的USB接口已经和外接的USB设备连接,无法再连数据线,此时可以通过网络TCPIP的方法来进行。也就是然ADB 通过网络来连接设备,而无需USB数据线。

具体方法如下:

1. 使用USB数据线连接设备。

2. 在命令行输入adb tcpip 5555 ( 5555为端口号,可以自由指定)。

3. 断开 USB数据,此时可以连接你需要连接的|USB设备。

4. 再计算机命令行输入 adb connect <设备的IP地址>:5555

后面就可以使用ADB ,DDMS 来调试Android应用或显示Logcat 消息。

Android studio gradle配置完整版(转)的更多相关文章

  1. Android Studio Gradle配置工具开发

    by 蔡建良 2019-3-9 QQ: 304125648 Android Studio导入项目经常出现卡死的情况.针对Gradle更新配置的问题,网上已经有详细的方法,但也很烦索,步骤也很多. 因此 ...

  2. Android Studio gradle配置详解

    android gradle配置详解 AppExtension类及其属性 可能大部分人看到AppExtension类会感觉到非常的陌生,其实我们在app中的build.gradle中填写配置信息的时候 ...

  3. Android studio gradle配置!!!【转】

    转自:http://www.open-open.com/lib/view/open1415793464648.html Gradle 基本概念 首先我们学习几个gradle 的脚本语法,掌握了这几个语 ...

  4. Android studio gradle配置

    什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. gr ...

  5. Android studio gradle 打包 那些事

    总结了一下 目前觉得比较好用的gradle 和一些打包 经验.放在这里. 首先说下 渠道号 这个概念,我们经常会统计我们的api 访问来源 是来自于那个app store,这有利于 我们针对性的推广. ...

  6. 浅谈Kotlin(一):简介及Android Studio中配置

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...

  7. Android Studio最新配置教程2016

    http://blog.csdn.net/wen_demo 一.Android studio 基本简单介绍 1.Android studio和Eclipse的差别: 1.Studio中有Project ...

  8. [转]加速Android Studio/Gradle构建

    加速Android Studio/Gradle构建 android android studio gradle   已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多, ...

  9. Android Studio Gradle Build Running 特别慢的问题探讨

    本文的本本win7 64bit 6G android studio2.1 在运行程序的时候Gradle Build Running 特别慢,一个helloworld都快2min了 1.开启gradle ...

随机推荐

  1. truffle Dapp 搭建

    安装truffle $ npm install -g truffle 依赖环境 NodeJS 访问https://nodejs.org 官方网站下载安装 系统:Windows, Linux or Ma ...

  2. Sqlmap常用命令大全

    1 Options(选项) -h,--help 显示帮助消息-hh 显示详细帮助-version -v VERBOSE 详细级别 0-6 默认12 Target 目标-u URL--url=URL-g ...

  3. Daily Scrum6 11.10

    今日任务: 徐钧鸿:codingcook的sql相关内容,并在进行复查张艺:继续用户管理部分代码黄可嵩:学习搜索的知识,继续进行搜索的移植和响应徐方宇:动态控件和页面间信息传递以及页面响应事件机制试验 ...

  4. Scrum Meeting 11.10

    成员 今日任务 明日计划 用时 徐越  调试前端代码 协助重构UI,完善前端逻辑  2h  赵庶宏 调出不能显示回答列表的bug,是后端数据库建库问题 与前一组进行数据库统一  3h  薄霖 UI代码 ...

  5. do...while和while...do的两种场景比较

    场景:脚本每5分钟执行一次,从数据库中每次查询1000数据进行处理,直到处理结束.两种用while和do...while两种方式实现的伪代码如下: 1. while...do $count = mys ...

  6. 20162328蔡文琛week08

    学号 20162328 <程序设计与数据结构>第X周学习总结 教材学习内容总结 错误和异常代表不常见的或不正确处理的对象. 抛出异常时输出的消息提供了方法调用栈的轨迹. 每个catch子句 ...

  7. EDK_II环境搭建与测试

    一. 环境准备 Windows 10 (64位)专业版 Visual Studio 2010旗舰版(默认路径安装) Mscrosoft SDKs 7.0A BIOS综合包里的EDK开发环境 二. 实验 ...

  8. 超级迷宫之NABCD

    模式之一:双人模式 N:基于双人之间的竞争与协作,朋友之间可以有一个竞争比赛,一决高下,男女朋友之间适合双人协作模式,共同完成游戏. A:双人竞争模式为双人同起点或不同起点来进行游戏,在竞争的紧张压力 ...

  9. 增加ubuntu的内存——设置Swap增加内存

    1.查看一下当前Swap分区的状态: $cat /proc/meminfo SwapTotal: 0 kB SwapFree: 0 kB 如果上面二项目都为0,说明没有Swap分区:如果不为0,则说明 ...

  10. UVA - 11021 Tribles 概率dp

    题目链接: http://vjudge.net/problem/UVA-11021 Tribles Time Limit: 3000MS 题意 有k只麻球,每只活一天就会死亡,临死之前可能会出生一些新 ...