Gradle快速構築(一)ASプロジェクト構築構成進級


GradleでAndroid Studioプロジェクトを構築すると、デフォルトでは基礎構成があります.その上で、変数を集約することで、明瞭で簡潔です.
文書ディレクトリ
  • 一、構成ソースコードコンパイルパス
  • リソースディレクトリ
  • の構成
  • 二、構成コンパイルバージョンと依存バージョンがグローバル変数
  • である
  • 三、パッケージ関連のいくつかの構成
  • 四、Gradleコンパイル互換性構成
  • 1. lintチェック
  • 2. 依存倉庫
  • 一、ソースコードのコンパイルパスの構成
    ASにはデフォルトのソースコードコンパイルパスがあることはよく知られています.例えばjavaはmain/javaの下にあります.soライブラリの参照はmain/jniLibsの下にあり、以下のように参照アドレスを変更します.
    リソースディレクトリの構成
    リソースコンパイルパスの構成を習得し,jniのライブラリやsrcでのコンパイルパス,ベストパッケージのコンパイルなど非常に実用的である.
    android {
        sourceSets.main {
            //   jniLibs,   libs  
            jniLibs.srcDir 'src/main/libs'
            //disable automatic ndk-build call
            //     NDK       
            jni.srcDirs = [] 
            manifest.srcFile 'src/main/AndroidManifest.xml'
            java.srcDirs = ['src/main/java']
            resources.srcDirs = ['src/main/resources']
            aidl.srcDirs = ['src/main/aidl']
            renderscript.srcDirs = ['src/main/renderscript']
            res.srcDirs = ['src/main/res']
            assets.srcDirs = ['src/main/assets']
        }
    }
    

    二、コンパイルバージョンと依存バージョンをグローバル変数に設定する
    通常、オンラインプロジェクトを構築するには、必ず複数のModulesとサードパーティライブラリの依存性が含まれています.バージョンの競合に依存したり、コンパイルしたりする場合、手動で変更するのは面倒です.自動化されたプロジェクトは、必ず統一的な構成が必要です.以下はgradleグローバルの構成によってこの操作を実現します.
  • 私たちはメインプロジェクトディレクトリでApp:build.gradleでグローバルを構成するバージョンパラメータ
      ext {
      	supportLibVersion = '27.0.1'  // variable that can be referenced to keep support libs consistent
      	versionBuildTool = '27.0.3'
      	versionCompiler = 27
      	versionTarget = 27
      	versionNameString = '1.0.0'
      	javaSourceCompatibility = JavaVersion.VERSION_1_8
      	javaTargetCompatibility = JavaVersion.VERSION_1_8
      }
    
  • Modulesのbuild.gradleでは
      android {
      	compileSdkVersion versionCompiler
      	buildToolsVersion versionBuildTool
      	//  java       
      	compileOptions {
      		sourceCompatibility javaSourceCompatibility
      		targetCompatibility javaTargetCompatibility
      	}
      
      	defaultConfig {
      		applicationId "com.xxx.xxx"
      		minSdkVersion 18
      		targetSdkVersion versionTarget
      		versionCode 1
      		versionName versionNameString
      		testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
      	}
      	//----------    
      }
      
      dependencies {
      	api fileTree(dir: 'libs', include: ['*.jar'])
      
      	implementation "com.android.support:support-v4:${supportLibVersion}"
      	implementation "com.android.support:support-annotations:${supportLibVersion}"
      }
    
  • を使用
    三、パッケージ関連のいくつかの構成
  • このうちshrinkResourcesは私のテストでは効果的ではありません.releaseエンジニアリングがリリースされた場合は、「Refactor」オプション「Remove Unused Resources」を使用して、コンパイル前に
      buildTypes {
          release {{// release 
      		shrinkResources true  //        res  ,  apk
      		zipAlignEnabled true  // Zipalign  ,       
              minifyEnabled true   //    
      		//      
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      		debuggable false  //  debug  
      		jniDebuggable true //  jni  debug    
          }
      	debug {// debug 
      	}
      }
    
  • を削除できます.
    四、Gradleコンパイル互換性構成
    1.lintチェック
    lintOptons宣言を追加することで、コンパイルを構成する際に重要でないエラーを報告してコンパイル問題を中断します(個人は追加することをお勧めしません.借金を返すので、規範化されていない場所では爆発する日があります).
    lintOptions {
    	/** Whether lint should set the exit code of the process if errors are found */
        abortOnError false  //        
         /**
    	 * Returns whether lint should check for fatal errors during release builds. Default is true.
    	 * If issues with severity "fatal" are found, the release build is aborted.
    	 */
        checkReleaseBuilds false   //release     
       
    }
    

    2.依存倉庫
    gradleでは依存パッケージを簡単に使用できますが、eclipseでmavenウェアハウスを使用する場合と同様に、gradleを構成する際にもLibウェアハウスを宣言します.
    プロジェクトの下にあるbuild.gradleで宣言:
    buildscript {
        repositories {
            google()
            jcenter()
    		//mavenCentral()    maven    ,     ,    ,     
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.0-alpha13'       
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }