Build.gradle详细配置说明

//说明module的类型,com.android.application为程序,com.android.library为库
apply plugin: 'com.android.application'

android {
    compileSdkVersion 22//编译的SDK版本
    buildToolsVersion "22.0.1"//编译的Tools版本
    defaultConfig {//默认配置
        applicationId "com.nd.famlink"//应用程序的包名
        minSdkVersion 8//支持的最低版本
        targetSdkVersion 19//支持的目标版本
        versionCode 52//版本号
        versionName "3.0.1"//版本名

         ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "x86_64", "arm64-v8a"
         }
    }

    sourceSets {//目录指向配置
        main {
            manifest.srcFile 'AndroidManifest.xml'//指定AndroidManifest文件
            java.srcDirs = ['src']//指定source目录
            resources.srcDirs = ['src']//指定source目录
            aidl.srcDirs = ['src']//指定source目录
            renderscript.srcDirs = ['src']//指定source目录
            res.srcDirs = ['res']//指定资源目录
            assets.srcDirs = ['assets']//指定assets目录
            jniLibs.srcDirs = ['libs']//指定lib库目录
        }
        debug.setRoot('build-types/debug')//指定debug模式的路径
        release.setRoot('build-types/release')//指定release模式的路径
    }

    signingConfigs {//签名配置
        release {//发布版签名配置
            storeFile file("fk.keystore")//密钥文件路径
            storePassword "123"//密钥文件密码
            keyAlias "fk"//key别名
            keyPassword "123"//key密码
        }
        debug {//debug版签名配置
            storeFile file("fk.keystore")
            storePassword "123"
            keyAlias "fk"
            keyPassword "123"
        }
    }



  /**
   *调用本地aar文件
   */
  repositories {
      //mavenLocal()
      //mavenCentral()
      flatDir {
          dirs 'libs'
      }
  }


  /*** 渠道打包*/
  productFlavors {
      xxx {//渠道名
        applicationId "修改的包名"
        versionName "2.2.9"
        versionCode 229
    }
    xxx1 {//渠道名
        applicationId "修改的包名"
        versionName "2.2.9"
        versionCode 229
      }
  }


   /**
     *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')
    } 





    buildTypes {//build类型
        release {//发布
            minifyEnabled true//混淆开启
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'//指定混淆规则文件
            signingConfig signingConfigs.release//设置签名信息
        }
        debug {//调试
            signingConfig signingConfigs.release
        }   
    }


    //配置IP
    buildTypes {
        release { //发布
            minifyEnabled false //是否混淆
            manifestPlaceholders = [SERVER_IP         : "192.168.25.232",
                                    SERVER_PORT       : "8021",
                                    SERVER_IP_PORT    : "http://192.168.25.232:8021",
                                    SERVER_IP_PORT_URL: "http://192.168.25.232:8021/%s",
                                    SERVER_PUSH_IP    : "192.168.25.221"]
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug { //调试
            minifyEnabled false  //是否混淆
            manifestPlaceholders = [SERVER_IP         : "192.168.25.232",
                                    SERVER_PORT       : "8021",
                                    SERVER_IP_PORT    : "http://192.168.25.232:8021",
                                    SERVER_IP_PORT_URL: "http://192.168.25.232:8021/%s",
                                    SERVER_PUSH_IP    : "192.168.25.221"]
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.debug
        }

        sourceSets {
          main {
                jniLibs.srcDirs = ['libs']
          }
        }
      }



        packagingOptions { //代码混淆
            exclude 'META-INF/ASL2.0'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/MANIFEST.MF'
        }
        lintOptions {
            abortOnError false //lint时候终止错误上报,防止编译的时候莫名的失败
      }


      repositories { //引入aar文件
          flatDir {
               dirs 'libs'
          }
      }


}

dependencies {
    compile fileTree(dir: 'libs', exclude: ['android-support*.jar'], include: ['*.jar'])   //编译lib目录下的.jar文件
    compile project(':Easylink')//编译附加的项目
    compile project(':ImageLibrary')
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'//编译来自Jcenter的第三方开源库

    //引入aar文件
    compile(name: 'arr包的名字', ext: 'aar')

}

  • 在Application中获取接口IP

      String ServerUrl = this.getPackageManager().getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA).metaData.getString("SERVER_IP_PORT");// 测试环境
      String HOST = this.getPackageManager().getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA).metaData.getString("SERVER_IP");
      String API_URL = this.getPackageManager().getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA).metaData.getString("SERVER_IP_PORT_URL");
    

———————————————————————————————————————

  • 远程依赖
    gradle 同时支持maven,ivy,由于ivy我没用过,所以用maven 作为例子,以下为代码块:

    repositories {  
          //从中央库里面获取依赖
          mavenCentral()    
          //或者使用指定的本地maven 库
          maven{
            url "file://F:/githubrepo/releases"
           }    
    
          //或者使用指定的远程maven库
          maven{
            url "远程库地址"
          }
      }
    
      dependencies {    
              //应用格式: packageName:artifactId:version
        compile 'com.google.android:support-v4:r13'
      }
    
      android {
    
         }
    

JNI加载 .so 文件

  • 在java目录下创建相应的目录,在此目录下创建相应的类,在类中创建相应方法

例如若c文件中的方法名为

Java_a_b_c_JniUtils_getStringFormC

那么需要创建的目录为a.b.c

  • 需创建的类及方法:
public class JniUtils {
    static {
        System.loadLibrary("mzs");   //defaultConfig.ndk.moduleName
   }
    public static native String getStringFormC();
}

你可能感兴趣的:(Build.gradle详细配置说明)