<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    java build.gradle

    文檔

    java build.gradle

    Gradle是用了一種基于Groovy的領域的特定語言來聲明項目設置,摒棄了XML(如ANT和Maven)的各種繁瑣配置。另外在項目中一般會出現2個或者多個build.gradle文件,一個在根目錄下,一個在app目錄下。
    推薦度:
    導讀Gradle是用了一種基于Groovy的領域的特定語言來聲明項目設置,摒棄了XML(如ANT和Maven)的各種繁瑣配置。另外在項目中一般會出現2個或者多個build.gradle文件,一個在根目錄下,一個在app目錄下。

    java build.gradle是什么,讓我們一起了解一下?

    Gradle是用了一種基于Groovy的領域的特定語言來聲明項目設置,摒棄了XML(如ANT和Maven)的各種繁瑣配置。另外在項目中一般會出現2個或者多個build.gradle文件,一個在根目錄下,一個在app目錄下。

    我們來逐個分析:

    1、根目錄下的build.gradle。

    buildscript?{
    ????
    ????repositories?{??//repositories閉包
    ????????google()
    ????????jcenter()?//代碼托管庫:設置之后可以在項目中輕松引用jcenter上的開源項目
    ????}
    ????dependencies?{??//dependencies閉包
    ????????classpath?'com.android.tools.build:gradle:3.0.0'?聲明gradle插件,插件版本號為3.0.0
    ????????//gradle是一個強大的項目構建工具,不僅可以構建Android,還可以構建java,C++等
    ????????//此處引用android的插件
    ????????//?NOTE:?Do?not?place?your?application?dependencies?here;?they?belong
    ????????//?in?the?individual?module?build.gradle?files
    ????}
    }
    ?
    allprojects?{
    ????repositories?{
    ????????google()
    ????????jcenter()?//代碼托管庫:設置之后可以在項目中輕松引用jcenter上的開源項目
    ????}
    }
    ?
    task?clean(type:?Delete)?{
    ????delete?rootProject.buildDir
    }

    2、app目錄下的build.gradle。

    //?聲明是Android程序,
    //com.android.application?表示這是一個應用程序模塊,可直接運行
    //com.android.library?標識這是一個庫模塊,是依附別的應用程序運行
    apply?plugin:?'com.android.application'
    ?
    android?{
    ????//程序在編譯的時候會檢查lint,有任何錯誤提示會停止build,我們可以關閉這個開關
    ????lintOptions?{
    ????????//即使報錯也不會停止打包
    ????????abortOnError?false
    ????????//打包release版本的時候是否進行檢測
    ????????checkReleaseBuilds?false
    ????}
    ?
    ????//編譯sdk的版本,也就是API?Level,例如API-19、API-20、API-21等等。
    ????compileSdkVersion?26
    ????//build?tools的版本,其中包括了打包工具aapt、dx等等。
    ????//這個工具的目錄位于你的sdk目錄/build-tools/下
    ????buildToolsVersion?'26.0.2'
    ?
    ????//關閉Android?Studio的PNG合法性檢查
    ????aaptOptions.cruncherEnabled?=?false
    ????aaptOptions.useNewCruncher?=?false
    ?
    ????defaultConfig?{??//默認配置
    ????????applicationId?"com.hebbe.espressotest"?//應用程序的包名
    ????????minSdkVersion?22??//最小sdk版本,如果設備小于這個版本或者大于maxSdkVersion將無法安裝這個應用
    ????????targetSdkVersion?26?//目標sdk版本,充分測試過的版本(建議版本)
    ????????versionCode?1??//版本號,第一版是1,之后每更新一次加1
    ????????versionName?"1.0"?//版本名,顯示給用戶看到的版本號
    ?
    ????????archivesBaseName?=?"weshare-$versionName"?//指定打包成Jar文件時候的文件名稱
    ????????ndk?{
    ????????????moduleName?"hebbewifisafe"???????????????????//設置庫(so)文件名稱
    ????????????ldLibs?"log",?"z",?"m",?"jnigraphics",?"android"
    ????????????//引入庫,比如要用到的__android_log_print
    ????????????abiFilters?"armeabi",?"x86",?"armeabi-v7a"??????//,?"x86"??顯示指定支持的ABIs
    ????????????cFlags?"-std=c++11?-fexceptions"????????????????//?C++11
    ????????????stl?"gnustl_static"
    ????????}
    ?
    ????????//當方法數超過65535(方法的索引使用的是一個short值,
    ????????//而short最大值是65535)的時候允許打包成多個dex文件,動態加載dex。這里面坑很深啊
    ????????multiDexEnabled?true
    ?
    ????????//Instrumentation單元測試
    ????????testInstrumentationRunner?"android.support.test.runner.AndroidJUnitRunner"
    ????}
    ?
    ????//默認的一些文件路徑的配置
    ????sourceSets?{
    ????????main?{
    ????????????manifest.srcFile?'AndroidManifest.xml'//指定清單文件
    ????????????res.srcDirs?=?['res']//指定res資源目錄
    ????????????assets.srcDirs?=?['assets']????//asset資源目錄
    ????????????jni.srcDirs?'src/main/jni'?????//jni代碼目錄
    ????????????jniLibs.srcDir?'src/main/jniLibs'?//jni庫目錄
    ????????????java.srcDirs?=?['src']//指定java源代碼目錄
    ????????????resources.srcDirs?=?['src']//指定resource目錄
    ????????????aidl.srcDirs?=?['src']//指定aidl目錄
    ????????????renderscript.srcDirs?=?['src']//指定source目錄
    ????????}
    ????????debug.setRoot('build-types/debug')//指定debug模式的路徑
    ????????release.setRoot('build-types/release')//指定release模式的路徑
    ????}
    ?
    ????//multiDex的一些相關配置,這樣配置可以讓你的編譯速度更快
    ????dexOptions?{
    ????????//讓它不要對Lib做preDexing
    ????????preDexLibraries?=?false
    ????????//開啟incremental?dexing,優化編譯效率,這個功能android?studio默認是關閉的。
    ????????incremental?true
    ????????javaMaxHeapSize?"4g"?????//增加java堆內存大小
    ????}
    ?
    ????signingConfigs?{//簽名配置
    ????????release?{//發布版簽名配置
    ????????????storeFile?file("fk.keystore")//密鑰文件路徑
    ????????????storePassword?"123456"http://密鑰文件密碼
    ????????????keyAlias?"fk"http://key別名
    ????????????keyPassword?"123456"http://key密碼
    ????????}
    ????????debug?{//debug版簽名配置
    ????????????storeFile?file("fk.keystore")
    ????????????storePassword?"123456"
    ????????????keyAlias?"fk"
    ????????????keyPassword?"123456"
    ????????}
    ????}
    ?
    ????//指定生成安裝文件的配置,常有兩個子包:release,debug,注:直接運行的都是debug安裝文件
    ????buildTypes?{
    ????????//release版本的配置,即生成正式版安裝文件的配置
    ????????release?{
    ????????????zipAlignEnabled?true??//是否支持zip
    ????????????shrinkResources?true??//?移除無用的resource文件
    ????????????minifyEnabled?false?//是否對代碼進行混淆,true表示混淆
    ????????????//指定混淆時使用的規則文件;
    ????????????//?proguard-android.txt指所有項目通用的混淆規則,proguard-rules.pro當前項目特有的混淆規則
    ????????????//release的Proguard默認為Module下的proguard-rules.pro文件
    ????????????proguardFiles?getDefaultProguardFile('proguard-android.txt'),?'proguard-rules.pro'
    ????????????debuggable?false??//是否支持調試
    ????????????//ndk的一些配置
    ????????????ndk?{
    ????????????????//?cFlags?"-std=c++11?-fexceptions?-O3?-D__RELEASE__"?//?C++11
    ????????????????//?platformVersion??=?"19"
    ????????????????moduleName?"hebbewifisafe"?//設置庫(so)文件名稱
    ????????????????ldLibs?"log",?"z",?"m",?"jnigraphics",?"android"
    ????????????????//引入庫,比如要用到的__android_log_print
    ????????????????abiFilters?"armeabi",?"x86",?"armeabi-v7a"http://,?"x86"
    ????????????????cFlags?"-std=c++11?-fexceptions"?//?C++11
    ????????????????stl?"gnustl_static"
    ????????????}
    ????????????//采用動態替換字符串的方式生成不同的release.apk
    ????????????applicationVariants.all?{?variant?->
    ????????????????variant.outputs.each?{?output?->
    ????????????????????def?outputFile?=?output.outputFile
    ????????????????????if?(outputFile?!=?null?&&?outputFile.name.endsWith('release.apk'))?{
    ????????????????????????def?timeStamp?=?new?Date().format('yyyyMMddHH');
    ????????????????????????def?fileName?=?"WeShare-${defaultConfig.versionName}"?+?"-"?+?timeStamp?+?"-lj-"?+?".apk";
    ????????????????????????output.outputFile?=?file("${outputFile.parent}/${fileName}")
    ????????????????????}
    ????????????????}
    ????????????}
    ????????????jniDebuggable?false??//關閉jni調試
    ????????}
    ????????debug?{//debug版本的配置
    ????????????minifyEnabled?false
    ????????????zipAlignEnabled?true
    ????????????shrinkResources?true?//?移除無用的resource文件
    ????????????proguardFiles?getDefaultProguardFile('proguard-android.txt'),?'proguard-rules.pro'
    ????????????debuggable?true
    //??????????jniDebuggable?true
    ????????????ndk?{
    ????????????????cFlags?"-std=c++11?-fexceptions?-g?-D?__DEBUG__"?//?C++11
    ????????????}
    ????????????jniDebuggable?true
    ????????}
    ????}
    ?
    ????packagingOptions
    ????????{
    ????????????exclude?'META-INF/ASL2.0'
    ????????????exclude?'META-INF/LICENSE'
    ????????????exclude?'META-INF/NOTICE'
    ????????????exclude?'META-INF/MANIFEST.MF'
    ????????}
    ????
    ????compileOptions?{
    ????????//在這里你可以進行?Java?的版本配置,
    ????????//以便使用對應版本的一些新特性
    ????}
    ????productFlavors?{
    ????????//在這里你可以設置你的產品發布的一些東西,
    ????????//比如你現在一共軟件需要發布到不同渠道,
    ????????//且不同渠道中的包名不同,那么可以在此進行配置;
    ????????//甚至可以設置不同的?AndroidManifest.xml?文件。
    ????????hebbe?{
    ????????}
    ????????googlePlay?{
    ????????}
    ????????solo?{
    ????????}
    ????}
    ????productFlavors.all?{
    ????????flavor?->?flavor.manifestPlaceholders?=?[UMENG_CHANNEL_VALUE:?name]
    ????}
    ????//所謂ProductFlavors其實就是可定義的產品特性,
    ????//配合?manifest?merger?使用的時候就可以達成在一次編譯
    ????//過程中產生多個具有自己特性配置的版本。
    ?
    ????//上面這個配置的作用就是,為每個渠道包產生不同的?UMENG_CHANNEL_VALUE?的值。
    }
    ?
    //指定當前項目的所有依賴關系:本地依賴、庫依賴、遠程依賴
    //本地依賴:可以對本地Jar包或目錄添加依賴關系
    //庫依賴:可以對項目中的庫模塊添加依賴關系
    //遠程依賴:可以對jcenter庫上的開源項目添加依賴
    //標準的遠程依賴格式是?域名:組織名:版本號
    dependencies?{
    ????implementation?fileTree(dir:?'libs',?include:?['*.jar'])?//本地依賴
    ????//遠程依賴,com.android.support是域名部分,appcompat-v7是組名稱,26.1.0是版本號
    ????implementation?'com.android.support:appcompat-v7:26.1.0'
    ????implementation?'com.android.support.constraint:constraint-layout:1.0.2'
    ????implementation?project(':hello')//庫依賴
    ????testImplementation?'junit:junit:4.12'?//聲明測試用列庫
    ????androidTestImplementation?'com.android.support.test:runner:1.0.1'
    ????androidTestImplementation?'com.android.support.test.espresso:espresso-core:3.0.1'
    }
    ?
    //聲明是要使用谷歌服務框架
    apply?plugin:?'com.google.gms.google-services'
    ?
    //第三方依賴庫的本地緩存路徑
    task?showMeCache?<

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    java build.gradle

    Gradle是用了一種基于Groovy的領域的特定語言來聲明項目設置,摒棄了XML(如ANT和Maven)的各種繁瑣配置。另外在項目中一般會出現2個或者多個build.gradle文件,一個在根目錄下,一個在app目錄下。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關推薦
    java bundle java bytebuffer java byte取值范圍 java calculate 蘋果13怎么開機 java calendar獲取當前時間 java callback java ceiling 平板如何錄屏 java cglib iPad怎么重啟 java channel java charat java charsequence java charset java cipher java class java class.forname java classloader java clob java bufferedoutputstream java bufferedimage wps怎么求和 java break java blob java bit 如何清理win10電腦c盤 java binlog win10c盤滿了怎么清理 java binder java binary excel表格怎么合并單元格 java bigdecimal java benchmark java beanutils 手機充電發熱發燙是什么原因 手機充電時可以玩手機嗎 java bean java base64decoder java base64
    Top 国产精品久久久久aaaa| heyzo高无码国产精品| 国产精品香港三级国产AV| 在线观看精品一区| 亚洲欧洲国产精品久久| 国产精品无码a∨精品| 视频二区国产精品职场同事| 国产精品入口在线看麻豆| 久久精品免费电影| 久久www免费人成精品香蕉| 成人国产精品视频频| 国产福利视精品永久免费| 久久久久成人精品一区二区| 香蕉在线精品一区二区| 国产成人精品a视频一区| 国内成人精品亚洲日本语音| 3D动漫精品一区二区三区| 精品亚洲成a人片在线观看少妇| 久久精品一区二区国产| 人妻少妇无码精品视频区| 亚洲精品岛国片在线观看| 精品极品三级久久久久| 国产精品揄拍一区二区久久| 99久久国产综合精品女图图等你| 精品三级在线观看| 国产成人亚洲精品狼色在线| 久久久久亚洲精品中文字幕 | 国产精品视频男人的天堂| 久久精品国产亚洲av高清漫画| 久久国产精品自由自在| 国产精品涩涩涩视频网站 | 久9re热这里精品首页| 久久精品国产一区二区| 亚洲日韩国产精品乱| 波多野结衣精品一区二区三区 | 久久久国产成人精品| 久久免费视频精品| 99热在线精品免费播放6| 99久久精品国产片久人| 中文字幕精品一区二区日本| 91精品国产色综合久久不 |