zoukankan      html  css  js  c++  java
  • 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 消息。

  • 相关阅读:
    BZOJ1316——树上的询问(点分治)
    BZOJ2152——聪聪可可(点分治)
    POJ1741(点分治)
    POJ2104——K-th Number (主席树模板)
    USACO Training Section 5.1 Fencing the Cows 圈奶牛(凸包)
    POJ1269(直线之间的关系)
    NOIP2016——换教室(floyd+期望dp)
    POJ2187(旋转卡壳)
    POJ3348——Cows(求凸包)
    ZOJ1081(射线法判断点是否在多边形内部)
  • 原文地址:https://www.cnblogs.com/bluestorm/p/6641083.html
Copyright © 2011-2022 走看看