// 声明是Android程序  //apply plugin是最新gradle版本的写法,以前的写法是apply plugin: 'android', 如果还是以前的写法,请改正过来  apply plugin: 'com.android.application'  //自定义函数 用于在打包时 命名APK 生成当前日期字符串  def releaseTime() {      return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))  }  android {      //说明要运行该源码,你必选已经安装了android API 23      compileSdkVersion 23      // 说明要运行该源码,你必须已经安装了 android sdk build-tools 23.0.3      buildToolsVersion "23.0.3"      //动态的在build时配置AndroidManifest.xml里的项目      // defaultConfig里的配置可以覆盖manifest里的配置      defaultConfig {          applicationId "test.com.yu"          //表示向下低至android API 14,即androd 4.0和4.0以上的版本都可以运行该工程          minSdkVersion 14          //表示采用的目标android API是 API 23即 android 5.0          targetSdkVersion 23          versionCode 1          versionName "1.0"          //dex突破65535的限制 突破64k需要的设置          //需要compile 'com.android.support:multidex:'          //需要Application中相关配置          multiDexEnabled true          // 默认是umeng的渠道  UMENG_CHANNEL_VALUE需要与AndroidManifest中的对应位置的命名一致          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]      }      // java版本      compileOptions {          sourceCompatibility JavaVersion.VERSION_1_7          targetCompatibility JavaVersion.VERSION_1_7      }      //签名文件配置      signingConfigs {          debug {              // No debug config              //storeFile file("C:/Users/Administrator/.android/debug.keystore")          }          release {              storeFile file("../yourapp.keystore")              storePassword "your password"              keyAlias "your alias"              keyPassword "your password"          }      }      //配置如何构建和打包你的App,默认有debug和release两个类型。      // debug类型包含调试时的信息,并且有debug key签名。release默认是不含签名的      buildTypes {          //调试版本          debug {              // 显示Log              buildConfigField "boolean", "LOG_DEBUG", "true"              //混淆配置              minifyEnabled false              signingConfig signingConfigs.debug              versionNameSuffix "-debug"              zipAlignEnabled false              shrinkResources false          }          //发布版本          release {              // 不显示Log              buildConfigField "boolean", "LOG_DEBUG", "false"              /*是否开启混淆,新版本是minifyEnabled不再是 runProguard true             * ProGuard的作用是在byte级别对你的app进行分析优化,使得你的App变得更小,更快             * 设置minifyEnabled true,就会在打包的时候进行代码混淆处理.              * 其中proguard-android.txt不用管,在sdk目录里面,主要是配置了proguard.cfg文件。              * 直接在android studio创建项目不会有这个文件,而是 proguard-rules.pro文件              * 其实一样的,因为项目是从eclipse迁移过来的,之前在eclipse上混淆是 proguard.cfg文件*/              minifyEnabled false              /*加载默认混淆配置文件及自定义混淆的配置             * proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事             * 这个文件的目录在 /tools/proguard/proguard-android.txt              * 后一部分是我们项目里的自定义的混淆文件,目录就在 app/proguard-rules.txt ,              * 如果你用Studio 1.0创建的新项目默认生成的文件名是 proguard-rules.pro              * 这个名字没关系,在这个文件里你可以声明一些第三方依赖的一些混淆规则*/              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'              //配置发布版本的签名文件              signingConfig signingConfigs.release              zipAlignEnabled true              shrinkResources true  // 移除无用的resource文件,这个东西依赖于minifyEnabled,所以minifyEnabled也要为true才行。有可能导致android.content.res.Resources$NotFoundException: File              applicationVariants.all { variant ->                  variant.outputs.each { output ->                      def outputFile = output.outputFile                      if (outputFile != null && outputFile.name.endsWith('.apk')) {                          // 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk                          def fileName = "boohee_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"                          output.outputFile = new File(outputFile.parent, fileName)                      }                  }              }          }      }      // 友盟多渠道打包      productFlavors {          wandoujia {}          _360 {}          baidu {}          xiaomi {}          tencent {}          taobao {}      }      // 友盟多渠道打包 UMENG_CHANNEL_VALUE需要与AndroidManifest中的对应位置的命名一致      productFlavors.all { flavor ->          flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]      }      //执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。      lintOptions {          abortOnError false          disable "ignore", "IgnoreResLayout", "InvalidPackage", "MissingRegistered"      }      dexOptions {          preDexLibraries = false //似乎和构建加速有关          //Out of memory 问题 Error:Execution failed for task ':app:dexDebug'.  java.lang.OutOfMemoryError: GC overhead limit exceeded          incremental = true;          javaMaxHeapSize "2g"      }      //dex突破65535的限制 突破64k需要的设置  遇到java.lang.NoClassDefFoundError      android.applicationVariants.all { variant ->          task "fix${variant.name.capitalize()}TestMultiDexList" << {              logger.info "Fixing keep manifest for $variant.name"              def keepManifest = new File("$buildDir/intermediates/multi-dex/test/$variant.flavorName/$variant.buildType.name/manifest_keep.txt")              keepManifest.append '\n-keep class *.** { *; }\n'              logger.debug "Updated keepManifest for ${keepManifest.getAbsolutePath()}\n$keepManifest.text"          }      }      tasks.whenTaskAdded { task ->          android.applicationVariants.all { variant ->              if (task.name == "collect${variant.name.capitalize()}TestMultiDexComponents") {                  task.finalizedBy "fix${variant.name.capitalize()}TestMultiDexList"              }          }      }  }  //dependencies里指明的就是一些需要用到的第三方库  dependencies {      compile fileTree(include: ['*.jar'], dir: 'libs')      testCompile 'junit:junit:4.12'      compile 'com.android.support:gridlayout-v7:21.0.2'      compile 'com.android.support:appcompat-v7:21.0.2'      compile 'com.android.support:multidex:1.0.0'      compile 'com.google.code.gson:gson:2.3.1'      //ORM  对象型数据库框架  操作本地db      compile 'com.google.code.gson:gson:2.3.1'      //json解析      compile 'com.nineoldandroids:library:2.4.0'      //      compile 'com.android.support:recyclerview-v7:23.0.1'      //RecyclerView引入  /*    compile project(path: ':moalib')     //自定义module  包含一些列控件     compile project(path: ':jni')     //本地Jni     compile project(path: ':myjni')//自己定义的jni*/      //aar包:【复制aar到libs】      // 【build.gradle repositories flatDir{ dirs 'libs' }】 【dependencies { compile (name:'XXXXXXX', ext:'aar') }】      compile(name: 'ormlite4.8', ext: 'aar')      compile(name:'jni', ext:'aar')      compile(name:'moalib', ext:'aar')      compile(name:'myjni', ext:'aar')      compile files('libs/conceal_android.jar')      //第三方加密解密      compile files('libs/libconceal.jar')      //第三方加密解密      compile files('libs/umeng-analytics-v5.2.4.jar')      //Umeng分析  }  

更多相关文章

  1. 反编译介绍
  2. Android应用正确使用扩展SD卡
  3. Android(安卓)开发——'Android(安卓)Pre Compiler'空指针问题的
  4. android使用http协议上传文件
  5. 【Flutter】修改图标、应用名称、包名等
  6. 【漫漫安卓路之承】android tips
  7. Android多媒体学习三:实现自己的Camera
  8. android studio 新建 activity 失败
  9. Activity切换动画无效(android:windowIsTranslucent)影响(androi

随机推荐

  1. 获取联系人信息和删除联系人
  2. android中的保存数据方法
  3. Android访问权限总结
  4. Android中使用Spinner改变字体,颜色等
  5. Android(安卓)如何修改默认输入法
  6. Android动画之一:Drawable Animation
  7. 安装android sdk22.2.1 应对错误 Error :
  8. day4.12总结_view Animation和Property A
  9. Android菜鸟的成长笔记——RadioGroup +
  10. android ellipsize的使用及实现跑马灯效