ローカライズされたAndroidのGradleのビルドスキル

カスタムのGradleのプロフィール

config.gradle

新しいconfig.gradleのルートディレクトリに

ここに画像を挿入説明
次のようにconfig.gradleを読み取ります。

ext {
    //Android 配置
    android = [
            compileSdkVersion: 29,
            buildToolsVersion: "29.0.1",
            applicationId    : "com.xx.xx",
            minSdkVersion    : 21,
            targetSdkVersion : 29,
            versionCode      : 8,
            versionName      : "1.7"
    ]
    //依赖 配置
    dependencies = [
            "httpclient"     : 'org.apache.http.legacy',
            "appcompat"      : 'androidx.appcompat:appcompat:1.0.2',
            "bmobsdk"        : 'cn.bmob.android:bmob-sdk:3.7.3-rc1',
            "rxjava2"        : "io.reactivex.rxjava2:rxjava:2.2.2",
            "rxandroid2"     : 'io.reactivex.rxjava2:rxandroid:2.1.0',
            "okio"           : 'com.squareup.okio:okio:2.1.0',
            "gson"           : 'com.google.code.gson:gson:2.8.5',
            "okhttp3"        : 'com.squareup.okhttp3:okhttp:3.12.0',
            "tagcloud"       : 'com.moxun:tagcloudlib:1.2.0',
            "circleimageview": 'de.hdodenhof:circleimageview:3.0.0',
            "glide"          : 'com.github.bumptech.glide:glide:4.9.0',
            "recyclerview"   : 'androidx.recyclerview:recyclerview:1.0.0',
            "datepicker"     : 'cn.aigestudio.datepicker:DatePicker:2.2.0',
            "litepal"        : 'org.litepal.android:java:3.0.0',
            "eventbus"       : 'org.greenrobot:eventbus:3.1.1',
            "tablayout"      : 'com.google.android.material:material:1.0.0',
            "photoview"      : 'com.github.chrisbanes:PhotoView:2.3.0',
            "3dmap"          : 'com.amap.api:3dmap:5.0.0',
            "location"       : 'com.amap.api:location:3.3.0',
            "search"         : 'com.amap.api:search:5.0.0',
            "bugly"          : 'com.tencent.bugly:crashreport:2.1.9',
            "buglyndk"       : 'com.tencent.bugly:nativecrashreport:3.0',
            "zxing"          : 'cn.yipianfengye.android:zxing-library:2.2',
            "videoplayer"    : 'cn.jzvd:jiaozivideoplayer:7.0.5'
    ]
    //仓库
    maven = [
            "bmobUrl": "https://raw.github.com/bmob/bmob-android-sdk/master",
            "jitpack": "https://jitpack.io"
    ]
}

カスタムのGradleの導入

Gradleのプロジェクトbuild.gradleルートでカスタム設定ファイルの導入

//引入自定义Gradle配置文件
apply from: "config.gradle"

データのニーズが変更する場合は、アプリモジュールと他のモジュールは、config.gradleで定義された使用済みのbuild.gradleパラメータすることができ、唯一のbuild.gradle内のすべてのモジュールは変更を加える必要がない、config.gradleを変更する必要があります。

利点:

  • 1.ユニティ
  • 2.管理可能
  • 3.バージョン管理

アプリ的build.gradle

アプリのbuild.gradleは次のとおりです。

android {
    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
    buildToolsVersion rootProject.ext.android["buildToolsVersion"]

    //默认配置
    defaultConfig {
        applicationId rootProject.ext.android["applicationId"]
        minSdkVersion rootProject.ext.android["minSdkVersion"]
        targetSdkVersion rootProject.ext.android["targetSdkVersion"]
        versionCode rootProject.ext.android["versionCode"]
        versionName rootProject.ext.android["versionName"]
    }
...
}

基本的build.gradle

android {
    //HttpClient
    useLibrary rootProject.ext.dependencies["httpclient"]
    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
    buildToolsVersion rootProject.ext.android["buildToolsVersion"]
    defaultConfig {
        minSdkVersion rootProject.ext.android["minSdkVersion"]
        targetSdkVersion rootProject.ext.android["targetSdkVersion"]
        versionCode rootProject.ext.android["versionCode"]
        versionName rootProject.ext.android["versionName"]
    }
	...
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //V7
    api rootProject.ext.dependencies["appcompat"]
    api rootProject.ext.dependencies["bmobsdk"]
    api rootProject.ext.dependencies["rxjava2"]
    api rootProject.ext.dependencies["rxandroid2"]
    api rootProject.ext.dependencies["okio"]
    api rootProject.ext.dependencies["gson"]
    api rootProject.ext.dependencies["okhttp3"]
    api rootProject.ext.dependencies["tagcloud"]
    api rootProject.ext.dependencies["circleimageview"]
    api rootProject.ext.dependencies["datepicker"]
    api rootProject.ext.dependencies["glide"]
    api rootProject.ext.dependencies["recyclerview"]
    api rootProject.ext.dependencies["litepal"]
    api rootProject.ext.dependencies["eventbus"]
    api rootProject.ext.dependencies["tablayout"]
    api rootProject.ext.dependencies["photoview"]
    api rootProject.ext.dependencies["3dmap"]
    api rootProject.ext.dependencies["location"]
    api rootProject.ext.dependencies["search"]
    api rootProject.ext.dependencies["bugly"]
    api rootProject.ext.dependencies["buglyndk"]
    api rootProject.ext.dependencies["zxing"]
    api rootProject.ext.dependencies["videoplayer"]
}

Gradleの構成定数

BuildConfig開いているファイル、ビューのGradle定数
ここに画像を挿入説明
buildTypesに次のコードを追加します。
ここに画像を挿入説明

      debug {
            //自定义Gradle常量
            buildConfigField("boolean","LOG_DEBUG","true")
            buildConfigField("String","LOG_TAG","\"YueJian\"")
            buildConfigField("String","SP_NAME","\"Config\"")
        }

BuildConfigファイルの同期化の見直し後
ここに画像を挿入説明
、一定の必要性を構築するために私たちのためになっています

次のようにリリースバージョンでこれらの操作を実行しないのに対し、これらの定数は、そのようなログ出力として、あなたには、いくつかのデバッグビルド操作を行うことができますのでことを、使用されています。
ここに画像を挿入説明

トップ10のヒントの速度を高めるためにGradleのビルド

  • プラグインのGradleの最新バージョンを使用して
  • 古いMultidexを活性化しないでください
  • Multidex APK建物禁止
  • リソースファイルのパッケージを最小化
  • 圧縮PNGを無効にします
  • PNG変換WEBP
  • 推奨インスタントラン
  • 動的なバージョン識別を使用しないでください
  • チューニングメモリ割り当てのGradle
  • オープンGradleでは、キャッシュを構築します

Multidex APK建物禁止

Gradleのビルド3パフォーマンス指標:

  • 全額コンパイル:コンパイルすべて - プロジェクトを開きます
  • コードのインクリメンタル・コンパイル:修正のJava / Kotlinコード以下のコンパイル
  • 資源のインクリメンタル・コンパイル:コンパイルした場合、リソースファイル、次の解像度を変更します。

私たちはコンパイルにいくつかのファイルを禁止することができ、およびデバッグ時間をすることはあまり必要はありません。公開されたアプリケーションは、マルチチャンネルのパッケージとすべてのパッケージアプリケーション市場が必要です。

それをデバッグするときにどのように停止するには?

[設定] - [ビルド - コンパイラPdevBuild

ここに画像を挿入説明

アプリ的build.gradle:
ここに画像を挿入説明

android {
    //调试的时候禁止,加快编译速度
    if(rootProject.hasProperty('devBuild')){
        splits.abi.enable = false
        splits.density.enable = false
        //禁用PNG压缩
        //aaptOptions.cruncherEnabled = false
    }
...

リソースファイルのパッケージを最小化

android {
    //默认配置
    defaultConfig {
        //调试
        resConfigs("zh","xxhdpi")
	...
	}
	...
}

圧縮PNGを無効にします

ここに画像を挿入説明

android {
    //调试的时候禁止,加快编译速度
    if(rootProject.hasProperty('devBuild')){
        splits.abi.enable = false
        splits.density.enable = false
        //禁用PNG压缩
        aaptOptions.cruncherEnabled = false
    }
...

PNG変換WEBP

ここに画像を挿入説明

動的なバージョン識別を使用しないでください

依存関係を追加するときに使用プラス+しないでください

チューニングメモリ割り当てのGradle

ここに画像を挿入説明

オープンGradleでは、キャッシュを構築します

#开启Gradle构建缓存
org.gradle.caching=true

ここに画像を挿入説明

公開された446元の記事 ウォン称賛67 ビュー240 000 +

おすすめ

転載: blog.csdn.net/hongxue8888/article/details/104692385