android studio里面build.gradle文件说明,ndk版本和gradle插件关系

项目的build.gradle文件 内容说明

// Top-level build file where you can add configuration options common to all sub-projects/modules.

// 整个文件就是一个project对象,隐含了一个project对象,执行下面那个方法
// project.buildscript() project.allprojects() project.task()


/*
 告诉gradle需要下载这个jar包,里面包含种android编译打包的插件类

 gradle到哪里下载这个jar包呢 ?????
    由 repositories {
        jcenter()
    }指定,即到jcenter网站去下载
 */
buildscript {
    ext.kotlin_version = '1.3.61'
    repositories {
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

//调用这个方法是告诉所有子module,下载依赖就到jcenter网站去下
allprojects {
    repositories {
        google()
        jcenter()
        
    }
}

// 调用这个方法为这个项目构建创建一个任务,可以等构建脚本解析完执行这个任务删除构建生成的build目录
task clean(type: Delete) {
    delete rootProject.buildDir
}

一、上述的android gradle 插件版本和gradle版本 对应关系

        Android Gradle 插件版本说明  |  Android 开发者  |  Android Developers 

        

二、修改gradle版本(gradle-wrapper.properties文件),gradle插件版本(build.gradle文件)

  

app里面的build.gradle 内容说明


// 整个文件就是一个project对象,隐含了一个project对象,执行下面那个方法
// project.apply() project.android() project.dependencies()

/*
    apply方法的作用是在应用一个android插件
    android插件其实就是一个类,这个方法调用后其实是调用Android插件的apply方法
    注意
        只有最开始调用了apply plugin: ‘com.android.application’方法
        project才有android方法
 */


apply plugin: 'com.android.application' // 应用android插件
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'


// 告诉gradle android app构建的一些配置
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.face_recon" //appid 唯一标识符
        minSdkVersion 21 //低于该android版本的,无法安装该apk
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"   //测试使用
        
        ndk {
            abiFilters 'armeabi-v7a'
            stl "gnustl_static"
        }

        externalNativeBuild {
            cmake {
                arguments "-DANDROID_TOOLCHAIN=clang"
                cppFlags "-fopenmp -O2 -fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math "
                cppFlags "-fopenmp -static-openmp" // 指定-static-openmp 静态,不然到时候运行会找不到该动态文件
                cppFlags "-std=c++11"
                cppFlags "-frtti"
                cppFlags "-fexceptions"
                abiFilters 'armeabi-v7a' // 编译成指定框架的so文件
            }
        }
		// 如果上面指定的框架(abiFilters)有多个的话,要指定ndk打包abi类型
		//ndk {      //添加这个,这个是打包时指定的abi类型
		//	abiFilters "armeabi-v7a"
		//}
    }
	
    buildTypes {
        release {               // 执行assembleRelease打release包才会使用
            minifyEnabled false // 不混淆代码
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' //混淆代码依据的配置文件
        }
    }

    //    添加第三方库
//    方法一:直接添加到jniLibs目录(cpp同级目录) 注意大小写,会自动加载
//    方法二:在main目录下自定义一个目录mylib,然后在build.gradle的android标签下,增加以下内容:
//
//    sourceSets {
//        main {
//            jniLibs.srcDirs = ['mylib']
//        }
//    }
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }
}

//dependencies方法是告诉gradle这个module构建需要下载哪些依赖jar
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation  'com.android.support:appcompat-v7:29.0.3'
    implementation 'androidx.core:core-ktx:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

NDK版本 和 gradle 插件版本关系

        NDK版本默认是根据配置Android Gradle插件版本(AGP)来选择。

          安装及配置 NDK 和 CMake  |  Android 开发者  |  Android Developers

 

修改NDK版本

方法一:模块的 build.gradle 文件,使用 android.ndkVersion 属性指定相应的版本 

android {
    ndkVersion "xxxx" //例如 ndkVersion "21.0.6113669"
}

方法二:修改local.properties文件

# 路径为自己下载的ndk目录
ndk.dir=D\:\\Android\\SDK\\ndk\\21.0.6113669

猜你喜欢

转载自blog.csdn.net/qq_38295645/article/details/127570861