Android studio gradle配置完整版(转)
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配置完整版(转)的更多相关文章
- Android Studio Gradle配置工具开发
by 蔡建良 2019-3-9 QQ: 304125648 Android Studio导入项目经常出现卡死的情况.针对Gradle更新配置的问题,网上已经有详细的方法,但也很烦索,步骤也很多. 因此 ...
- Android Studio gradle配置详解
android gradle配置详解 AppExtension类及其属性 可能大部分人看到AppExtension类会感觉到非常的陌生,其实我们在app中的build.gradle中填写配置信息的时候 ...
- Android studio gradle配置!!!【转】
转自:http://www.open-open.com/lib/view/open1415793464648.html Gradle 基本概念 首先我们学习几个gradle 的脚本语法,掌握了这几个语 ...
- Android studio gradle配置
什么是Gradle? Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言. gr ...
- Android studio gradle 打包 那些事
总结了一下 目前觉得比较好用的gradle 和一些打包 经验.放在这里. 首先说下 渠道号 这个概念,我们经常会统计我们的api 访问来源 是来自于那个app store,这有利于 我们针对性的推广. ...
- 浅谈Kotlin(一):简介及Android Studio中配置
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...
- Android Studio最新配置教程2016
http://blog.csdn.net/wen_demo 一.Android studio 基本简单介绍 1.Android studio和Eclipse的差别: 1.Studio中有Project ...
- [转]加速Android Studio/Gradle构建
加速Android Studio/Gradle构建 android android studio gradle 已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多, ...
- Android Studio Gradle Build Running 特别慢的问题探讨
本文的本本win7 64bit 6G android studio2.1 在运行程序的时候Gradle Build Running 特别慢,一个helloworld都快2min了 1.开启gradle ...
随机推荐
- ActiveMQ笔记:管理和监控
ActiveMQ提供了比较丰富的监控和管理工具.在ActiveMQ的网页里(http://activemq.apache.org/how-can-i-monitor-activemq.html)提到了 ...
- [转载]GBK 汉字内码扩展规范编码表(1.0 版)
编码表源地址:http://ff.163.com/newflyff/gbk-list/ 编码在线查询:http://www.qqxiuzi.cn/bianma/zifuji.php GBK 汉字内码扩 ...
- Daily Scrum4 11.6
昨天的任务按时完成了,但是通过不到两周的时间,我们的工作依旧停留在修改上届学长代码中.今天上课和老师提出了这样的问题,助教在TFS上重新加载了10级学长的代码. 从上届学长代码那里我们发现,他们没有实 ...
- Linux 目录结构及文件基本操作
Linux 目录结构及文件基本操作 实验介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux ...
- 20162325 金立清 S2 W7 C16
20162325 2017-2018-2 <程序设计与数据结构>第7周学习总结 教材学习内容概要 树是非线性结构,其元素组织为一个层次结构 树的度表示树种任意结点的最大子结点数 有m个元素 ...
- 05慕课网《进击Node.js基础(一)》HTTP概念进阶(同步/异步)
HTTP模块介绍 支持http协议的更多特性 不缓存请求和响应 API比较底层处理流相关,信息解析 HTTP相关概念 回调 将函数作为参数传到执行函数中,参数函数在执行函数中嵌套执行 function ...
- EF三种编程方式详细图文教程(C#+EF)之Code First
Code First Code First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能.使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的 ...
- <<梦断代码>>读后感
<梦断代码>中对软件工程所面临的种种困难与艰难的描述,即便再过5年读也许都不过时.因为正如原作者所说,书中描写的是一队人马并肩扛起代码大石,虽历经磨难仍欲将其推上山顶的故事,而正是这种故事 ...
- Software-Defined Networking A Comprehensive Survey(一)
传统网络:1 复杂,难于管理 2 很难实现根据之前定义的方案进行配置,3 对于缺陷.变化不能够再次进行配置 4 控制和数据平面绑定在一起,使许多缺陷难于解决 SDN网络:通过打破传统网络垂直整合,从底 ...
- 51单片机RAM 数据存储区学习笔记
转自:http://www.eepw.com.cn/article/216237_2.htm 1.RAM keil C语言编程 RAM是程序运行中存放随机变量的数据空间.在keil中编写程序,如果当前 ...