Gradleの詳細とマルチチャネルパッケージ
8210 ワード
いくつかの悟りでしょう
2015年の7月からAndroidに接触してちょうど2年になりました.2年は長くて短いです.技術は絶えず更新されているので、プログラマーの私たちも絶えず勉強しなければならない.そうしないと、すぐに淘汰されるだろう.久しぶりにブログを更新して、主にやはり仕事が忙しくて、996のリズムの仕事も耐えられません.週末に時間を割いてGradleという知識点をまとめましょう.
Gradle使用の詳細
1.gradle構築システムの目標リソースの再利用をより容易にする により、複数のapkパブリケーションバージョンでも、同じアプリケーションの異なるカスタムバージョンでも、同じアプリケーションの異なるバージョンの作成が容易になります. は、構築プロセスを構成、拡張、カスタマイズしやすくします.
2.いくつかの役に立つGradleコマンド-./gradlew-vバージョン番号-./gradlew clean app/ディレクトリのbuildフォルダをクリア-./gradlew check依存性のチェック-./gradlew build依存性をチェックしてパッケージをコンパイルし、debug、release環境のパッケージをすべて書き出します-./gradlew assembleDebugコンパイルしてDebugパッケージを打つ-./gradlew assembleReleaseコンパイルしてReleaseのパッケージを打つ-./gradlew–stopコンパイルを停止
3.gradleファイルの詳細
(1)主工事のbuild.gradleファイル
(2)gradle.properties(グローバルプロファイル)#バックグラウンドプロセス構築org.gradle.daemon=true org.gradle.jvmargs=-Xmx1536m org.gradle.parallel=true
(3)app/build.gradle(module)
マルチチャネルパッケージ:
gradleファイルのカスタムproductFlavors:
AndroidManifest.xml :
このマルチチャネルパッケージ方式の利点は便利で簡単で、欠点は時間がかかることです.
Aarファイル##
(0)aarファイルの役割aarはjarパッケージの利点に比べて:リソースファイルを含めて再コンパイルする必要がなく、コンパイル速度を速める
(1)aarファイルを生成するMouduleプロジェクトのコンパイル後に自動的にaarパッケージが生成され、パッケージのパスはMoudule->build->outputs->aarディレクトリ(2)使用①aarパッケージをlibsディレクトリにコピーする②buildを構成する.gradleファイルrepositories{flatDir{dirs‘libs’}
2015年の7月からAndroidに接触してちょうど2年になりました.2年は長くて短いです.技術は絶えず更新されているので、プログラマーの私たちも絶えず勉強しなければならない.そうしないと、すぐに淘汰されるだろう.久しぶりにブログを更新して、主にやはり仕事が忙しくて、996のリズムの仕事も耐えられません.週末に時間を割いてGradleという知識点をまとめましょう.
Gradle使用の詳細
1.gradle構築システムの目標
2.いくつかの役に立つGradleコマンド-./gradlew-vバージョン番号-./gradlew clean app/ディレクトリのbuildフォルダをクリア-./gradlew check依存性のチェック-./gradlew build依存性をチェックしてパッケージをコンパイルし、debug、release環境のパッケージをすべて書き出します-./gradlew assembleDebugコンパイルしてDebugパッケージを打つ-./gradlew assembleReleaseコンパイルしてReleaseのパッケージを打つ-./gradlew–stopコンパイルを停止
3.gradleファイルの詳細
(1)主工事のbuild.gradleファイル
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}
}
allprojects {
repositories {
jcenter()//
maven{url MAVEN_URL}// maven
}
}
project.ext.set("android_support_version", "25.3.1")
project.ext.set("junit_version", "4.12")
project.ext.set("compileSdkVersion", "25")
project.ext.set("buildToolsVersion", "25.0.2")
(2)gradle.properties(グローバルプロファイル)#バックグラウンドプロセス構築org.gradle.daemon=true org.gradle.jvmargs=-Xmx1536m org.gradle.parallel=true
# maven
MAVEN_URL= http://xxx.xx.1.147:8081/nexus/content/repositories/thirdparty/
COMPILE_SDK_VERSION=25
BUILD_TOOLS_VERSION=25.0.2
MIN_SDK_VERSION=15
TARGET_SDK_VERSION=23
ANDROID_SUPPORT_VERSION=25.3.1
VERSION_CODE=31405
VERSION_NAME=3.1.4.05
(3)app/build.gradle(module)
// Android , Android
// moudle apply plugin:'com.android.library'
apply plugin: 'com.android.application'
//
apply plugin: 'com.google.gms.google-services'
allprojects {
repositories {
jcenter()
}
}
repositories {
flatDir {
// library aar
dirs project(':network_api').file('aars')
}
maven { url 'https://maven.fabric.io/public' }
mavenCentral()
}
//android :
android {
// SDK , ,
compileSdkVersion Integer.parseInt(project.COMPILE_SDK_VERSION)
// , aapt
buildToolsVersion project.BUILD_TOOLS_VERSION
// Android Studio PNG
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
//
defaultConfig {
applicationId "com.webull.liujian.webull_tv_show"
//
minSdkVersion project.MIN_SDK_VERSION
//>=23 6.0
targetSdkVersion project.TARGET_SDK_VERSION
versionCode Integer.parseInt(project.VERSION_CODE)
versionName project.VERSION_NAME
// 65535 dex
multiDexEnabled true
//Android Test
testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
//
resConfigs "en", "zh-rCN", "zh-rTW", "de", "fr", "hi"
}
// , ./gradlew assembleRelease release
signingConfigs{
debug{
// No config
}
release{
storeFile file("../tv.keystore.jks")
storePassword "liujian"
keyAlias "liujian"
keyPassword "liujian"
}
}
// ,Android Plugin debug release 。
// , APK 。
//buildTypes debug release
buildTypes {
debug{
//debug .debug debug release apk。
applicationIdSuffix ".debug"
// log
buildConfigField "boolean","LOG_DEBUG","true"
//
versionNameSuffix "-debug"
minifyEnabled false
zipAlignEnabled false
shrinkResources false
signingConfig signingConfigs.debug
}
release {
//buildConfigField , ,
// BuildConfig.LOG_DEBUG
buildConfigField "boolean","LOG_DEBUG","false"
zipAlignEnabled true //zipAlign
shrinkResources true //
minifyEnabled true //
// proguard-rules.pro
proguardFiles 'proguard.cfg'
signingConfig signingConfigs.release
}
}
// , ,
productFlavors {
home {
manifestPlaceholders = [ CHANNEL:”0"]
minSdkVersion 21
}
abroad {
manifestPlaceholders = [ CHANNEL:”1"]
minSdkVersion 14
}
}
// ,
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
// theme color style, res/theme
res.srcDirs = ['res','res/theme',]
assets.srcDirs = ['assets']
// src jniLibs , so
jniLibs.srcDirs = ['libs']
}
// tests (src )
instrumentTest.setRoot('tests')
androidTest.setRoot('tests')
//
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
lintOptions{
//build release lint
checkReleaseBuilds true
//lint error
abortOnError false
}
//multiDex ,
dexOptions {
preDexLibraries = false
// Lib preDexing
incremental true
// incremental dexing, , android studio 。
javaMaxHeapSize "4g" // java , OOM
}
}
dependencies {
def android_support_version = project.ANDROID_SUPPORT_VERSION
// libs jar
compile fileTree(include: ['*.jar'], dir: 'libs')
//
compile project(':network_api')
compile "com.android.support:appcompat-v7:$android_support_version"
compile "com.android.support:gridlayout-v7:$android_support_version"
compile "com.android.support:recyclerview-v7:$android_support_version"
compile "com.android.support:design:$android_support_version"
compile 'io.reactivex:rxandroid:1.2.1'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0'
compile 'com.android.support:appcompat-v7:24.0.0'
compile project(':MPChartLib')
compile 'com.github.PhilJay:MPAndroidChart-Realm:v1.1.0@aar'
compile(name:'camerascan-1.0', ext:'aar')
}
マルチチャネルパッケージ:
gradleファイルのカスタムproductFlavors:
// , ,
productFlavors {
home {
manifestPlaceholders = [ CHANNEL:”0"]
minSdkVersion 21
}
abroad {
manifestPlaceholders = [ CHANNEL:”1"]
minSdkVersion 14
}
}
AndroidManifest.xml :
このマルチチャネルパッケージ方式の利点は便利で簡単で、欠点は時間がかかることです.
Aarファイル##
(0)aarファイルの役割aarはjarパッケージの利点に比べて:リソースファイルを含めて再コンパイルする必要がなく、コンパイル速度を速める
(1)aarファイルを生成するMouduleプロジェクトのコンパイル後に自動的にaarパッケージが生成され、パッケージのパスはMoudule->build->outputs->aarディレクトリ(2)使用①aarパッケージをlibsディレクトリにコピーする②buildを構成する.gradleファイルrepositories{flatDir{dirs‘libs’}
dependencies{
compile(name:'camerascan-1.0', ext:'aar')
}