Live Templates 之Config

caseConfig代码如下:(其他的配置)

<templateSet group="CASE-CONFIG">
  <template name="caseGitnore" value="# Built application files&#10;#.apk&#10;*.ap_&#10;*.aab&#10;&#10;# Files for the ART/Dalvik VM&#10;*.dex&#10;&#10;# Java class files&#10;*.class&#10;&#10;# Generated files&#10;bin/&#10;gen/&#10;out/&#10;&#10;# Gradle files&#10;.gradle/&#10;build/&#10;&#10;# Local configuration file (sdk path, etc)&#10;local.properties&#10;&#10;# Proguard folder generated by Eclipse&#10;proguard/&#10;&#10;# Log Files&#10;*.log&#10;&#10;# Android Studio Navigation editor temp files&#10;.navigation/&#10;&#10;# Android Studio captures folder&#10;captures/&#10;&#10;# IntelliJ&#10;*.iml&#10;.idea/workspace.xml&#10;.idea/tasks.xml&#10;.idea/gradle.xml&#10;.idea/assetWizardSettings.xml&#10;.idea/dictionaries&#10;.idea/libraries&#10;.idea/caches&#10;.idea/misc.xml&#10;.idea/codeStyles/Project.xml&#10;# Android Studio 3 in .gitignore file.&#10;.idea/caches/build_file_checksums.ser&#10;.idea/modules.xml&#10;.idea/misc.xml&#10;.idea/codeStyles/&#10;&#10;# Keystore files&#10;# Uncomment the following lines if you do not want to check your keystore files in.&#10;*.jks&#10;#*.keystore&#10;&#10;# External native build folder generated in Android Studio 2.2 and later&#10;.externalNativeBuild&#10;&#10;# Google Services (e.g. APIs or Firebase)&#10;# google-services.json&#10;&#10;# Freeline&#10;freeline.py&#10;freeline/&#10;freeline_project_description.json&#10;&#10;# fastlane&#10;fastlane/report.xml&#10;fastlane/Preview.html&#10;fastlane/screenshots&#10;fastlane/test_output&#10;fastlane/readme.md&#10;&#10;# Version control&#10;vcs.xml&#10;&#10;# lint&#10;lint/intermediates/&#10;lint/generated/&#10;lint/outputs/&#10;lint/tmp/&#10;# lint/reports/&#10;class_files.txt" description="忽略文件" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="GROOVY" value="false" />
      <option name="HTML" value="false" />
      <option name="JAVA_CODE" value="false" />
      <option name="JSON" value="false" />
      <option name="KOTLIN" value="false" />
      <option name="OTHER" value="true" />
      <option name="XML" value="false" />
      <option name="c" value="false" />
      <option name="cpp" value="false" />
    </context>
  </template>
  <template name="caseProguard" value="#-------1.基本指令-------&#10;# 设置混淆的压缩比率 0 ~ 7&#10;-optimizationpasses 5&#10;# 混淆时不使用大小写混合,混淆后的类名为小写&#10;-dontusemixedcaseclassnames&#10;# 指定不去忽略非公共库的类&#10;-dontskipnonpubliclibraryclasses&#10;# 指定不去忽略非公共库的成员&#10;-dontskipnonpubliclibraryclassmembers&#10;# 混淆时不做预校验&#10;-dontpreverify&#10;# 混淆时不记录日志&#10;-verbose&#10;# 忽略警告&#10;-ignorewarning&#10;# 代码优化&#10;-dontshrink&#10;# 不优化输入的类文件&#10;-dontoptimize&#10;# 保留注解不混淆&#10;-keepattributes *Annotation*,InnerClasses&#10;# 避免混淆泛型&#10;-keepattributes Signature&#10;# 保留代码行号,方便异常信息的追踪&#10;-keepattributes SourceFile,LineNumberTable&#10;# 混淆采用的算法&#10;-optimizations !code/simplification/cast,!field/*,!class/merging/*&#10;# dump.txt文件列出apk包内所有class的内部结构&#10;-dump class_files.txt&#10;# seeds.txt文件列出未混淆的类和成员&#10;-printseeds seeds.txt&#10;# usage.txt文件列出从apk中删除的代码&#10;-printusage unused.txt&#10;# mapping.txt文件列出混淆前后的映射&#10;-printmapping mapping.txt&#10;#-------2.不需混淆的Android类-------&#10;-keep public class * extends android.app.Fragment&#10;-keep public class * extends android.app.Activity&#10;-keep public class * extends android.app.Application&#10;-keep public class * extends android.app.Service&#10;-keep public class * extends android.content.BroadcastReceiver&#10;-keep public class * extends android.preference.Preference&#10;-keep public class * extends android.content.ContentProvider&#10;-keep public class * extends android.support.v4.**&#10;-keep public class * extends android.support.annotation.**&#10;-keep public class * extends android.support.v7.**&#10;-keep public class * extends android.app.backup.BackupAgentHelper&#10;-keep public class * extends android.preference.Preference&#10;-keep public class * extends android.view.View&#10;-keep public class com.android.vending.licensing.ILicensingService&#10;-keep class android.support.** {*;}&#10;#-------3.support-v4包-------&#10;-dontwarn android.support.v4.**&#10;-keep class android.support.v4.app.** { *; }&#10;-keep interface android.support.v4.app.** { *; }&#10;-keep class android.support.v4.** { *; }&#10;#-------4.support-v7包-------&#10;-dontwarn android.support.v7.**&#10;-keep class android.support.v7.internal.** { *; }&#10;-keep interface android.support.v7.internal.** { *; }&#10;-keep class android.support.v7.** { *; }&#10;#-------5.support design-------&#10;-dontwarn android.support.design.**&#10;-keep class android.support.design.** { *; }&#10;-keep interface android.support.design.** { *; }&#10;-keep public class android.support.design.R$* { *; }&#10;#-------6.避免混淆自定义控件类的 get/set 方法和构造函数-------&#10;-keep public class * extends android.view.View{&#10;    *** get*();&#10;    void set*(***);&#10;    public &lt;init&gt;(android.content.Context);&#10;    public &lt;init&gt;(android.content.Context, android.util.AttributeSet);&#10;    public &lt;init&gt;(android.content.Context, android.util.AttributeSet, int);&#10;}&#10;#-------7.关闭Log日志-------&#10;-assumenosideeffects class android.util.Log {&#10;    public static *** d(...);&#10;    public static *** v(...);&#10;    public static *** i(...);&#10;    public static *** e(...);&#10;    public static *** w(...);&#10;}&#10;#-------8.避免资源混淆-------&#10;-keep class **.R$* {*;}&#10;#-------9.layout中onclick方法(android:onclick=&quot;onClick&quot;)混淆-------&#10;-keepclassmembers class * extends android.app.Activity{&#10;    public void *(android.view.View);&#10;}&#10;#-------10.onXXEvent 混淆-------&#10;-keepclassmembers class * {&#10;    void *(*Event);&#10;}&#10;#-------11.避免混淆枚举类-------&#10;-keepclassmembers enum * {&#10;    public static **[] values();&#10;    public static ** valueOf(java.lang.String);&#10;}&#10;#-------12.Natvie方法不混淆-------&#10;-keepclasseswithmembernames class * {&#10;    native &lt;methods&gt;;&#10;}&#10;#-------13.避免Parcelable混淆-------&#10;-keep class * implements android.os.Parcelable {&#10;  public static final android.os.Parcelable$Creator *;&#10;}&#10;#-------14.Serializable接口的子类中指定的某些成员变量和方法混淆-------&#10;-keepclassmembers class * implements java.io.Serializable {&#10;    static final long serialVersionUID;&#10;    private static final java.io.ObjectStreamField[] serialPersistentFields;&#10;    !static !transient &lt;fields&gt;;&#10;    private void writeObject(java.io.ObjectOutputStream);&#10;    private void readObject(java.io.ObjectInputStream);&#10;    java.lang.Object writeReplace();&#10;    java.lang.Object readResolve();&#10;}&#10;#-------15.WebView混淆配置-------&#10;-keepclassmembers class fqcn.of.javascript.interface.for.webview {&#10;    public *;&#10;}&#10;-keepclassmembers class * extends android.webkit.webViewClient {&#10;    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);&#10;    public boolean *(android.webkit.WebView, java.lang.String);&#10;}&#10;-keepclassmembers class * extends android.webkit.webViewClient {&#10;    public void *(android.webkit.webView, jav.lang.String);&#10;}&#10;#############################################&#10;#            项目中特殊处理部分               #&#10;#############################################&#10;&#10;#内部成员和方法不混淆&#10;&#10;#内部类不混淆&#10;&#10;#############################################&#10;&#10;#-----------处理反射类---------------&#10;&#10;#......&#10;&#10;#-----------处理js交互---------------&#10;&#10;#......&#10;&#10;#-----------处理实体类---------------&#10;&#10;#......&#10;&#10;#-----------处理第三方依赖库---------" description="通用混淆" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="GROOVY" value="false" />
      <option name="HTML" value="false" />
      <option name="JAVA_CODE" value="false" />
      <option name="JSON" value="false" />
      <option name="KOTLIN" value="false" />
      <option name="OTHER" value="true" />
      <option name="XML" value="false" />
      <option name="c" value="false" />
      <option name="cpp" value="false" />
    </context>
  </template>
  <template name="caseProperties" value="# Project-wide Gradle settings.&#10;# IDE (e.g. Android Studio) users:&#10;# Gradle settings configured through the IDE *will override*&#10;# any settings specified in this file.&#10;# For more details on how to configure your build environment visit&#10;# http://www.gradle.org/docs/current/userguide/build_environment.html&#10;# Specifies the JVM arguments used for the daemon process.&#10;# The setting is particularly useful for tweaking memory settings.&#10;org.gradle.daemon=true  // 开启线程守护,第一次编译时开线程,之后就不会再开了&#10;org.gradle.jvmargs=-Xmx2048m&#10;org.gradle.parallel=true  // 开启并行编译,相当于多条线程再走&#10;org.gradle.configureondemand=true   启用新的孵化模式&#10;android.injected.testOnly=false&#10;# When configured, Gradle will run in incubating parallel mode.&#10;# This option should only be used with decoupled projects. More details, visit&#10;# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects&#10;# org.gradle.parallel=true&#10;# Kotlin code style for this project: &quot;official&quot; or &quot;obsolete&quot;:&#10;PROP_APP_ABI=armeabi-v7a&#10;kotlin.code.style=official&#10;KEY_PASSWORD_QRCODE=qrcode&#10;KEY_ALIAS_QRCODE=qrcode&#10;STORE_PASSWORD_QRCODE=qrcode&#10;STORE_FILE_QRCODE=../qrcode20190328.jks" description="签名配置" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="GROOVY" value="false" />
      <option name="HTML" value="false" />
      <option name="JAVA_CODE" value="false" />
      <option name="JSON" value="false" />
      <option name="KOTLIN" value="false" />
      <option name="OTHER" value="true" />
      <option name="XML" value="false" />
      <option name="c" value="false" />
      <option name="cpp" value="false" />
    </context>
  </template>
  <template name="caseBintray" value="//☆☆☆第一句放到Project目录的dependencies中☆☆☆&#10;classpath 'com.novoda:bintray-release:0.9' //Bintray ①引用&#10;&#10;apply plugin: 'com.novoda.bintray-release' //Bintray ②引用&#10;android {&#10;  //Bintray ③忽略错误&#10;  lintOptions {&#10;    abortOnError false&#10;  }&#10;}&#10;//Bintray ④中文注释处理&#10;tasks.withType(Javadoc).all {&#10;  enabled = false&#10;}&#10;//Bintray ⑤上传配置&#10;publish {&#10;  userOrg = 'case' //账户显示名称&#10;  repoName = 'android' //账户建的Repository(不填写这个参数默认上传到Maven)&#10;  uploadName = &quot;QRCode&quot; //项目在Maven中显示的名称&#10;  groupId = 'com.cc' //项目所在组&#10;  artifactId = 'qrcode' //项目名称&#10;  publishVersion = '1.0.0' //项目版本&#10;  desc = 'this is a library for easy user qrcode create and scan' //uploadName对应的描述,中文会乱码&#10;  website = 'https://github.com/caiyoufei/CCQrcode' //网址,随意&#10;  licences = ['Apache-2.0'] //固定&#10;}&#10;&#10;//Bintary ⑥执行上传  BINTRAY_USERNAME和BINTRAY_KEY需要改为自己的账户信息&#10;//gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false" description="发布到Jcenter" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="HTML" value="false" />
      <option name="JAVA_CODE" value="false" />
      <option name="JSON" value="false" />
      <option name="KOTLIN" value="false" />
      <option name="OTHER" value="true" />
      <option name="XML" value="false" />
      <option name="c" value="false" />
      <option name="cpp" value="false" />
    </context>
  </template>
  <template name="caseConfig" value="//★修改version后需要将versionCode重置为从1开始★&#10;def version_Name = &quot;1.0.0&quot;&#10;//只能是X.X.X格式,X为数字&#10;//build版本从1开始:偶数测试版、奇数正式版&#10;def version_Build = 1&#10;//只能是1-999的数字(预想999次build应该可以发版)&#10;&#10;/**********************************************************************打包后续事项**********************************************************************&#10; 1.打包(使用V1签名)完毕后,需要使用360加固助手进行加固和多渠道操作&#10; 2.设置签名:选择应用加固-签名设置-添加签名后勾选启用自动签名&#10; 3.加固助手多渠道配置:将Channel_Info.txt文件中的Channel信息复制到txt文件中,选择应用加固-多渠道设置-导入摸板-勾选启用多渠道打包&#10; 4.设置生成包的地址:选择应用加固-基础设置-选择加固包的输出路径&#10; 5.加固和多渠道:选择应用加固-添加应用-等待加固和多渠道整个流程完成&#10; 6.查看加固情况:选择应用加固-右键加固包-选择任务详情-即可查看加固情况&#10; 7.手动设置渠道和签名(当遇到有加固失败的情况,就需要手动设置渠道和签名):&#10; ①选择失败的渠道,将Channel_Info.txt文件中对应的Channel信息复制到新的txt文件中&#10; ②选择工具包-渠道打包-自己选择APK和输出路径(选择加固后没有渠道的包,结尾为_jiagu_sign.apk)-使用多渠道配置文件(刚才自己新建的txt)-生成渠道包&#10; ③选择工具包-签名APK-自己选择APK和输出路径(选择第②步生成的渠道包)-使用已配置的签名(V1)-开始签名--&gt;完成失败APK的签名&#10; *******************************************************************************************************************************************************/&#10;&#10;//默认显示的version_Code信息为:三位之前表示版本号、后三位表示当前版本的build次数&#10;def version_Code = (version_Name.replace(&quot;.&quot;, &quot;&quot;)).toInteger() * 1000 + version_Build&#10;ext {&#10;  android = [&#10;      applicationId: &quot;com.aimycode.android&quot;,&#10;      compileSdkVersion: 28,&#10;      minSdkVersion: 21,&#10;      targetSdkVersion: 21,&#10;      versionName: version_Name,&#10;      versionCode: version_Code,&#10;      buildTime: new Date().format(&quot;yyyyMMdd&quot;), //编译日期&#10;      computer: Math.abs((System.getProperty(&quot;user.name&quot;) + &quot;@&quot;&#10;          + InetAddress.localHost.hostName).hashCode()),&#10;  ]&#10;}&#10;" description="全局配置" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="GROOVY" value="true" />
    </context>
  </template>
  <template name="caseAndRes" value="apply plugin: 'AndResGuard'&#10;andResGuard {&#10;  mappingFile = null&#10;  use7zip = true&#10;  useSign = true&#10;  keepRoot = false&#10;  compressFilePattern = [&#10;      &quot;*.png&quot;,&#10;      &quot;*.jpg&quot;,&#10;      &quot;*.jpeg&quot;,&#10;      &quot;*.gif&quot;,&#10;      &quot;resources.arsc&quot;&#10;  ]&#10;  whiteList = [&#10;      // your icon&#10;      &quot;R.mipmap.ic_launcher&quot;,&#10;      // for fabric&#10;      &quot;R.string.com.crashlytics.*&quot;,&#10;      // for umeng update&#10;      &quot;R.string.tb_*&quot;,&#10;      &quot;R.layout.tb_*&quot;,&#10;      &quot;R.drawable.tb_*&quot;,&#10;      &quot;R.drawable.u1*&quot;,&#10;      &quot;R.drawable.u2*&quot;,&#10;      &quot;R.color.tb_*&quot;,&#10;      // umeng share for sina&#10;      &quot;R.drawable.sina*&quot;,&#10;      // for google-services.json&#10;      &quot;R.string.google_app_id&quot;,&#10;      &quot;R.string.gcm_defaultSenderId&quot;,&#10;      &quot;R.string.default_web_client_id&quot;,&#10;      &quot;R.string.ga_trackingId&quot;,&#10;      &quot;R.string.firebase_database_url&quot;,&#10;      &quot;R.string.google_api_key&quot;,&#10;      &quot;R.string.google_crash_reporting_api_key&quot;,&#10;&#10;      //友盟&#10;      &quot;R.anim.umeng*&quot;,&#10;      &quot;R.string.umeng*&quot;,&#10;      &quot;R.string.UM*&quot;,&#10;      &quot;R.string.tb_*&quot;,&#10;      &quot;R.layout.umeng*&quot;,&#10;      &quot;R.layout.socialize_*&quot;,&#10;      &quot;R.layout.*messager*&quot;,&#10;      &quot;R.layout.tb_*&quot;,&#10;      &quot;R.color.umeng*&quot;,&#10;      &quot;R.color.tb_*&quot;,&#10;      &quot;R.style.*UM*&quot;,&#10;      &quot;R.style.umeng*&quot;,&#10;      &quot;R.drawable.umeng*&quot;,&#10;      &quot;R.drawable.tb_*&quot;,&#10;      &quot;R.drawable.sina*&quot;,&#10;      &quot;R.drawable.qq_*&quot;,&#10;      &quot;R.drawable.tb_*&quot;,&#10;      &quot;R.id.umeng*&quot;,&#10;      &quot;R.id.*messager*&quot;,&#10;      &quot;R.id.progress_bar_parent&quot;,&#10;      &quot;R.id.socialize_*&quot;,&#10;      &quot;R.id.webView&quot;,&#10;&#10;      //融云&#10;      &quot;R.drawable.u*&quot;,&#10;      &quot;R.drawable.rc_*&quot;,&#10;      &quot;R.string.rc_*&quot;,&#10;      &quot;R.layout.rc_*&quot;,&#10;      &quot;R.color.rc_*&quot;,&#10;      &quot;R.id.rc_*&quot;,&#10;      &quot;R.style.rc_*&quot;,&#10;      &quot;R.dimen.rc_*&quot;,&#10;      &quot;R.array.rc_*&quot;,&#10;&#10;      //Huawei push&#10;      &quot;R.string.hms_update_title&quot;,&#10;&#10;      //getIdentifier&#10;      &quot;R.dimen.status_bar_height&quot;,&#10;      &quot;R.dimen.navigation_bar_height&quot;,&#10;      &quot;R.array.message_rc_emoji_*&quot;,&#10;      &quot;R.string.VideoView_error_*&quot;,&#10;  ]&#10;  compressFilePattern = [&#10;      &quot;*.png&quot;,&#10;      &quot;*.jpg&quot;,&#10;      &quot;*.jpeg&quot;,&#10;      &quot;*.gif&quot;,&#10;      &quot;resources.arsc&quot;&#10;  ]&#10;  sevenzip {&#10;    artifact = 'com.tencent.mm:SevenZip:1.2.15'&#10;    //path = &quot;/usr/local/bin/7za&quot;&#10;  }&#10;  /**&#10;   * 可选: 如果不设置则会默认覆盖assemble输出的apk&#10;   **/&#10;  //  System.out.print(variant)&#10;  finalApkBackupPath = &quot;${project.rootDir}/APK/精简扫码&quot; +&#10;      &quot;_build${String.valueOf(rootProject.ext.android.versionCode)}&quot; +&#10;      &quot;_${String.valueOf(rootProject.ext.android.buildTime)}&quot; +&#10;      &quot;.apk&quot;&#10;}" description="资源压缩配置" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="GROOVY" value="true" />
    </context>
  </template>
  <template name="caseAppGradle" value="apply plugin: 'com.android.application'&#10;&#10;apply plugin: 'kotlin-android'&#10;&#10;apply plugin: 'kotlin-android-extensions'&#10;&#10;apply from: 'and_res_guard.gradle'&#10;&#10;android {&#10;  compileSdkVersion rootProject.ext.android.compileSdkVersion&#10;  defaultConfig {&#10;    applicationId rootProject.ext.android.applicationId&#10;    minSdkVersion rootProject.ext.android.minSdkVersion&#10;    targetSdkVersion rootProject.ext.android.targetSdkVersion&#10;    versionCode rootProject.ext.android.versionCode&#10;    versionName rootProject.ext.android.versionName&#10;    multiDexEnabled true&#10;    resConfigs &quot;zh&quot;, &quot;en&quot; //保留中文和英文资源&#10;    ndk {&#10;      abiFilters 'armeabi-v7a' //, 'arm64-v8a'&#10;    }&#10;  }&#10;  flavorDimensions &quot;default&quot;&#10;  //公开发布商店渠道配置&#10;  productFlavors {&#10;    //程序员本地跑的包(只直接在AS中跑,不打包给其他人)&#10;    Developer {&#10;      dimension &quot;default&quot;&#10;    }&#10;    //打包后★必须使用多渠道设置渠道★(不直接跑包,打包时使用)&#10;    Package {&#10;      dimension &quot;default&quot;&#10;    }&#10;  }&#10;  //配置不同版本的keystore&#10;  signingConfigs {&#10;    debug {&#10;      storeFile file(STORE_FILE_QRCODE)&#10;      storePassword STORE_PASSWORD_QRCODE&#10;      keyAlias KEY_ALIAS_QRCODE&#10;      keyPassword KEY_PASSWORD_QRCODE&#10;    }&#10;    release {&#10;      storeFile file(STORE_FILE_QRCODE)&#10;      storePassword STORE_PASSWORD_QRCODE&#10;      keyAlias KEY_ALIAS_QRCODE&#10;      keyPassword KEY_PASSWORD_QRCODE&#10;    }&#10;  }&#10;  buildTypes {&#10;    debug {&#10;      zipAlignEnabled true&#10;      shrinkResources true&#10;      minifyEnabled true&#10;      signingConfig signingConfigs.debug&#10;      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'&#10;    }&#10;    release {&#10;      zipAlignEnabled true&#10;      shrinkResources true&#10;      minifyEnabled true&#10;      signingConfig signingConfigs.release&#10;      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'&#10;    }&#10;  }&#10;}&#10;&#10;android.applicationVariants.all { variant -&gt;&#10;  variant.outputs.all {&#10;    //名称&#10;    String appName = &quot;&quot;&#10;    String path = getProjectDir().getPath() + &quot;/src/main/res/values/strings.xml&quot;&#10;    new XmlSlurper().parse(path).&quot;string&quot;.find { name -&gt;&#10;      if (name.&quot;@name&quot; == &quot;app_name&quot;) {&#10;        appName = name&#10;        return true&#10;      }&#10;    }&#10;    //正式版还是测试版&#10;    String typeName = buildType.name&#10;    typeName = typeName.substring(0, 1).toUpperCase() + typeName.substring(1).toLowerCase()&#10;    //build名称&#10;    String buildVer = String.valueOf(rootProject.ext.android.versionCode)&#10;    String buildName = &quot;_build&quot; + buildVer&#10;    //编译日期&#10;    String buildTime = &quot;_&quot; + String.valueOf(rootProject.ext.android.buildTime)&#10;    //打包的电脑&#10;    String computer = &quot;_&quot; + String.valueOf(rootProject.ext.android.computer)&#10;    //后缀名&#10;    String suffix = &quot;.apk&quot;&#10;    //生成输出文件名称&#10;    outputFileName = &quot;${appName}${typeName}${buildName}${buildTime}${computer}${suffix}&quot;&#10;  }&#10;}&#10;&#10;dependencies {&#10;  implementation fileTree(dir: 'libs', include: ['*.jar'])&#10;  implementation &quot;org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version&quot;&#10;}" description="APP的Gradle配置" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="GROOVY" value="true" />
    </context>
  </template>
  <template name="caseCodeStyle" value="&lt;component name=&quot;ProjectCodeStyleConfiguration&quot;&gt;&#10;  &lt;code_scheme name=&quot;Project&quot; version=&quot;173&quot;&gt;&#10;    &lt;option name=&quot;USE_SAME_INDENTS&quot; value=&quot;true&quot; /&gt;&#10;    &lt;option name=&quot;IGNORE_SAME_INDENTS_FOR_LANGUAGES&quot; value=&quot;true&quot; /&gt;&#10;    &lt;option name=&quot;OTHER_INDENT_OPTIONS&quot;&gt;&#10;      &lt;value&gt;&#10;        &lt;option name=&quot;INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;        &lt;option name=&quot;CONTINUATION_INDENT_SIZE&quot; value=&quot;4&quot; /&gt;&#10;        &lt;option name=&quot;TAB_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;/value&gt;&#10;    &lt;/option&gt;&#10;    &lt;option name=&quot;RIGHT_MARGIN&quot; value=&quot;100&quot; /&gt;&#10;    &lt;AndroidXmlCodeStyleSettings&gt;&#10;      &lt;option name=&quot;USE_CUSTOM_SETTINGS&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;LAYOUT_SETTINGS&quot;&gt;&#10;        &lt;value&gt;&#10;          &lt;option name=&quot;INSERT_BLANK_LINE_BEFORE_TAG&quot; value=&quot;false&quot; /&gt;&#10;          &lt;option name=&quot;INSERT_LINE_BREAK_AFTER_LAST_ATTRIBUTE&quot; value=&quot;true&quot; /&gt;&#10;        &lt;/value&gt;&#10;      &lt;/option&gt;&#10;    &lt;/AndroidXmlCodeStyleSettings&gt;&#10;    &lt;GroovyCodeStyleSettings&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_LIST_OR_MAP&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_NAMED_ARGS_IN_MAP&quot; value=&quot;false&quot; /&gt;&#10;    &lt;/GroovyCodeStyleSettings&gt;&#10;    &lt;JavaCodeStyleSettings&gt;&#10;      &lt;option name=&quot;FIELD_NAME_PREFIX&quot; value=&quot;m&quot; /&gt;&#10;      &lt;option name=&quot;STATIC_FIELD_NAME_PREFIX&quot; value=&quot;s&quot; /&gt;&#10;      &lt;option name=&quot;CLASS_NAMES_IN_JAVADOC&quot; value=&quot;3&quot; /&gt;&#10;      &lt;option name=&quot;CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND&quot; value=&quot;3&quot; /&gt;&#10;      &lt;option name=&quot;PACKAGES_TO_USE_IMPORT_ON_DEMAND&quot;&gt;&#10;        &lt;value /&gt;&#10;      &lt;/option&gt;&#10;      &lt;option name=&quot;IMPORT_LAYOUT_TABLE&quot;&gt;&#10;        &lt;value&gt;&#10;          &lt;package name=&quot;&quot; withSubpackages=&quot;true&quot; static=&quot;false&quot; /&gt;&#10;          &lt;emptyLine /&gt;&#10;          &lt;package name=&quot;&quot; withSubpackages=&quot;true&quot; static=&quot;true&quot; /&gt;&#10;        &lt;/value&gt;&#10;      &lt;/option&gt;&#10;      &lt;option name=&quot;JD_ALIGN_PARAM_COMMENTS&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;JD_ALIGN_EXCEPTION_COMMENTS&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;JD_P_AT_EMPTY_LINES&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;JD_DO_NOT_WRAP_ONE_LINE_COMMENTS&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;JD_KEEP_EMPTY_PARAMETER&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;JD_KEEP_EMPTY_RETURN&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;JD_PRESERVE_LINE_FEEDS&quot; value=&quot;true&quot; /&gt;&#10;    &lt;/JavaCodeStyleSettings&gt;&#10;    &lt;JetCodeStyleSettings&gt;&#10;      &lt;option name=&quot;PACKAGES_TO_USE_STAR_IMPORTS&quot;&gt;&#10;        &lt;value /&gt;&#10;      &lt;/option&gt;&#10;      &lt;option name=&quot;NAME_COUNT_TO_USE_STAR_IMPORT&quot; value=&quot;3&quot; /&gt;&#10;      &lt;option name=&quot;NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS&quot; value=&quot;2147483647&quot; /&gt;&#10;      &lt;option name=&quot;IMPORT_NESTED_CLASSES&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;CONTINUATION_INDENT_IN_PARAMETER_LISTS&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;CONTINUATION_INDENT_FOR_EXPRESSION_BODIES&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;WRAP_EXPRESSION_BODY_FUNCTIONS&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;IF_RPAREN_ON_NEW_LINE&quot; value=&quot;true&quot; /&gt;&#10;    &lt;/JetCodeStyleSettings&gt;&#10;    &lt;XML&gt;&#10;      &lt;option name=&quot;XML_ALIGN_ATTRIBUTES&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;XML_LEGACY_SETTINGS_IMPORTED&quot; value=&quot;true&quot; /&gt;&#10;    &lt;/XML&gt;&#10;    &lt;ADDITIONAL_INDENT_OPTIONS fileType=&quot;php&quot;&gt;&#10;      &lt;option name=&quot;INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;option name=&quot;CONTINUATION_INDENT_SIZE&quot; value=&quot;4&quot; /&gt;&#10;      &lt;option name=&quot;TAB_SIZE&quot; value=&quot;2&quot; /&gt;&#10;    &lt;/ADDITIONAL_INDENT_OPTIONS&gt;&#10;    &lt;ADDITIONAL_INDENT_OPTIONS fileType=&quot;scala&quot;&gt;&#10;      &lt;option name=&quot;INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;option name=&quot;CONTINUATION_INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;option name=&quot;TAB_SIZE&quot; value=&quot;2&quot; /&gt;&#10;    &lt;/ADDITIONAL_INDENT_OPTIONS&gt;&#10;    &lt;codeStyleSettings language=&quot;CSS&quot;&gt;&#10;      &lt;indentOptions&gt;&#10;        &lt;option name=&quot;INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;        &lt;option name=&quot;CONTINUATION_INDENT_SIZE&quot; value=&quot;4&quot; /&gt;&#10;        &lt;option name=&quot;TAB_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;/indentOptions&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;    &lt;codeStyleSettings language=&quot;CoffeeScript&quot;&gt;&#10;      &lt;option name=&quot;KEEP_FIRST_COLUMN_COMMENT&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_CODE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_PARAMETERS&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;    &lt;codeStyleSettings language=&quot;Groovy&quot;&gt;&#10;      &lt;option name=&quot;KEEP_FIRST_COLUMN_COMMENT&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_DECLARATIONS&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_CODE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_BEFORE_RBRACE&quot; value=&quot;0&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_PARAMETERS&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_FOR&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;CALL_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;EXTENDS_LIST_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;THROWS_LIST_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;EXTENDS_KEYWORD_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;THROWS_KEYWORD_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_CALL_CHAIN_WRAP&quot; value=&quot;5&quot; /&gt;&#10;      &lt;option name=&quot;BINARY_OPERATION_WRAP&quot; value=&quot;5&quot; /&gt;&#10;      &lt;option name=&quot;TERNARY_OPERATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;FOR_STATEMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ASSIGNMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ASSERT_STATEMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;IF_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;WHILE_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;CLASS_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;FIELD_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;PARAMETER_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;VARIABLE_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;indentOptions&gt;&#10;        &lt;option name=&quot;INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;        &lt;option name=&quot;CONTINUATION_INDENT_SIZE&quot; value=&quot;4&quot; /&gt;&#10;        &lt;option name=&quot;TAB_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;/indentOptions&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;    &lt;codeStyleSettings language=&quot;JAVA&quot;&gt;&#10;      &lt;option name=&quot;LINE_COMMENT_AT_FIRST_COLUMN&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;BLOCK_COMMENT_AT_FIRST_COLUMN&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_FIRST_COLUMN_COMMENT&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_DECLARATIONS&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_CODE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_BEFORE_RBRACE&quot; value=&quot;0&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_PARAMETERS&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_FOR&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;SPACE_WITHIN_ARRAY_INITIALIZER_BRACES&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;CALL_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;RESOURCE_LIST_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;EXTENDS_LIST_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;THROWS_LIST_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;EXTENDS_KEYWORD_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;THROWS_KEYWORD_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_CALL_CHAIN_WRAP&quot; value=&quot;5&quot; /&gt;&#10;      &lt;option name=&quot;BINARY_OPERATION_WRAP&quot; value=&quot;5&quot; /&gt;&#10;      &lt;option name=&quot;BINARY_OPERATION_SIGN_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;TERNARY_OPERATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;TERNARY_OPERATION_SIGNS_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;FOR_STATEMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ARRAY_INITIALIZER_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;ASSIGNMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;WRAP_COMMENTS&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;ASSERT_STATEMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;IF_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;DOWHILE_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;WHILE_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;CLASS_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;FIELD_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;PARAMETER_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;VARIABLE_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;indentOptions&gt;&#10;        &lt;option name=&quot;INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;        &lt;option name=&quot;CONTINUATION_INDENT_SIZE&quot; value=&quot;4&quot; /&gt;&#10;        &lt;option name=&quot;TAB_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;/indentOptions&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;    &lt;codeStyleSettings language=&quot;JSON&quot;&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_CODE&quot; value=&quot;1&quot; /&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;    &lt;codeStyleSettings language=&quot;JavaScript&quot;&gt;&#10;      &lt;option name=&quot;KEEP_FIRST_COLUMN_COMMENT&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_CODE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_PARAMETERS&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_FOR&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;CALL_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;BINARY_OPERATION_WRAP&quot; value=&quot;5&quot; /&gt;&#10;      &lt;option name=&quot;BINARY_OPERATION_SIGN_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;TERNARY_OPERATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;TERNARY_OPERATION_SIGNS_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;FOR_STATEMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ARRAY_INITIALIZER_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ASSIGNMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;IF_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;DOWHILE_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;WHILE_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;indentOptions&gt;&#10;        &lt;option name=&quot;INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;        &lt;option name=&quot;TAB_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;/indentOptions&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;    &lt;codeStyleSettings language=&quot;SQL&quot;&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_CODE&quot; value=&quot;1&quot; /&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;    &lt;codeStyleSettings language=&quot;TypeScript&quot;&gt;&#10;      &lt;option name=&quot;KEEP_FIRST_COLUMN_COMMENT&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_CODE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_PARAMETERS&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_FOR&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;CALL_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;EXTENDS_LIST_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;EXTENDS_KEYWORD_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;BINARY_OPERATION_WRAP&quot; value=&quot;5&quot; /&gt;&#10;      &lt;option name=&quot;BINARY_OPERATION_SIGN_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;TERNARY_OPERATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;TERNARY_OPERATION_SIGNS_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;FOR_STATEMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ARRAY_INITIALIZER_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ASSIGNMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;WRAP_COMMENTS&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;IF_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;DOWHILE_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;WHILE_BRACE_FORCE&quot; value=&quot;1&quot; /&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;    &lt;codeStyleSettings language=&quot;XML&quot;&gt;&#10;      &lt;indentOptions&gt;&#10;        &lt;option name=&quot;INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;        &lt;option name=&quot;CONTINUATION_INDENT_SIZE&quot; value=&quot;4&quot; /&gt;&#10;        &lt;option name=&quot;TAB_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;/indentOptions&gt;&#10;      &lt;arrangement&gt;&#10;        &lt;rules&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;NAME&gt;class&lt;/NAME&gt;&#10;              &lt;/match&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;NAME&gt;layout&lt;/NAME&gt;&#10;              &lt;/match&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;NAME&gt;xmlns:android&lt;/NAME&gt;&#10;              &lt;/match&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;NAME&gt;xmlns:.*&lt;/NAME&gt;&#10;              &lt;/match&gt;&#10;              &lt;order&gt;BY_NAME&lt;/order&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;AND&gt;&#10;                  &lt;NAME&gt;.*:id&lt;/NAME&gt;&#10;                  &lt;XML_NAMESPACE&gt;http://schemas.android.com/apk/res/android&lt;/XML_NAMESPACE&gt;&#10;                &lt;/AND&gt;&#10;              &lt;/match&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;AND&gt;&#10;                  &lt;NAME&gt;.*:name&lt;/NAME&gt;&#10;                  &lt;XML_NAMESPACE&gt;http://schemas.android.com/apk/res/android&lt;/XML_NAMESPACE&gt;&#10;                &lt;/AND&gt;&#10;              &lt;/match&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;AND&gt;&#10;                  &lt;NAME&gt;.*:layout_width&lt;/NAME&gt;&#10;                  &lt;XML_NAMESPACE&gt;http://schemas.android.com/apk/res/android&lt;/XML_NAMESPACE&gt;&#10;                &lt;/AND&gt;&#10;              &lt;/match&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;AND&gt;&#10;                  &lt;NAME&gt;.*:layout_height&lt;/NAME&gt;&#10;                  &lt;XML_NAMESPACE&gt;http://schemas.android.com/apk/res/android&lt;/XML_NAMESPACE&gt;&#10;                &lt;/AND&gt;&#10;              &lt;/match&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;AND&gt;&#10;                  &lt;NAME&gt;.*:layout_.*&lt;/NAME&gt;&#10;                  &lt;XML_NAMESPACE&gt;http://schemas.android.com/apk/res/android&lt;/XML_NAMESPACE&gt;&#10;                &lt;/AND&gt;&#10;              &lt;/match&gt;&#10;              &lt;order&gt;BY_NAME&lt;/order&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;AND&gt;&#10;                  &lt;NAME&gt;.*&lt;/NAME&gt;&#10;                  &lt;XML_NAMESPACE&gt;http://schemas.android.com/apk/res/android&lt;/XML_NAMESPACE&gt;&#10;                &lt;/AND&gt;&#10;              &lt;/match&gt;&#10;              &lt;order&gt;BY_NAME&lt;/order&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;AND&gt;&#10;                  &lt;NAME&gt;app:layout_.*&lt;/NAME&gt;&#10;                  &lt;XML_NAMESPACE&gt;http://schemas.android.com/apk/res-auto&lt;/XML_NAMESPACE&gt;&#10;                &lt;/AND&gt;&#10;              &lt;/match&gt;&#10;              &lt;order&gt;BY_NAME&lt;/order&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;NAME&gt;.*(?&amp;lt;!style)$&lt;/NAME&gt;&#10;              &lt;/match&gt;&#10;              &lt;order&gt;BY_NAME&lt;/order&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;          &lt;section&gt;&#10;            &lt;rule&gt;&#10;              &lt;match&gt;&#10;                &lt;NAME&gt;style&lt;/NAME&gt;&#10;              &lt;/match&gt;&#10;            &lt;/rule&gt;&#10;          &lt;/section&gt;&#10;        &lt;/rules&gt;&#10;      &lt;/arrangement&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;    &lt;codeStyleSettings language=&quot;kotlin&quot;&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_DECLARATIONS&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_IN_CODE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;KEEP_BLANK_LINES_BEFORE_RBRACE&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ALIGN_MULTILINE_PARAMETERS&quot; value=&quot;false&quot; /&gt;&#10;      &lt;option name=&quot;CALL_PARAMETERS_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;CALL_PARAMETERS_LPAREN_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;CALL_PARAMETERS_RPAREN_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_PARAMETERS_WRAP&quot; value=&quot;2&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE&quot; value=&quot;true&quot; /&gt;&#10;      &lt;option name=&quot;EXTENDS_LIST_WRAP&quot; value=&quot;5&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_CALL_CHAIN_WRAP&quot; value=&quot;2&quot; /&gt;&#10;      &lt;option name=&quot;ASSIGNMENT_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;METHOD_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;FIELD_ANNOTATION_WRAP&quot; value=&quot;1&quot; /&gt;&#10;      &lt;option name=&quot;ENUM_CONSTANTS_WRAP&quot; value=&quot;2&quot; /&gt;&#10;      &lt;indentOptions&gt;&#10;        &lt;option name=&quot;INDENT_SIZE&quot; value=&quot;2&quot; /&gt;&#10;        &lt;option name=&quot;CONTINUATION_INDENT_SIZE&quot; value=&quot;4&quot; /&gt;&#10;        &lt;option name=&quot;TAB_SIZE&quot; value=&quot;2&quot; /&gt;&#10;      &lt;/indentOptions&gt;&#10;    &lt;/codeStyleSettings&gt;&#10;  &lt;/code_scheme&gt;&#10;&lt;/component&gt;" description="Project代码风格" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="XML" value="true" />
    </context>
  </template>
</templateSet>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352