<th id="wu2k2"><s id="wu2k2"></s></th> <blockquote id="wu2k2"></blockquote>
  • <tr id="wu2k2"></tr>
  • <samp id="wu2k2"><tbody id="wu2k2"></tbody></samp><samp id="wu2k2"><tbody id="wu2k2"></tbody></samp>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    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 国产精品一国产精品| 国产精品无码一区二区三级 | 久久亚洲国产精品五月天| 国产精品黄大片在线播放| 99re热这里只有精品视频| 国内精品久久久久久久涩爱 | 国产成人精品怡红院| 久久亚洲国产午夜精品理论片 | 亚洲欧洲成人精品香蕉网| 国产伦精品一区二区三区免.费 | 无码精品国产VA在线观看| 岛国精品一区免费视频在线观看| 国产精品国产三级国产AV′| 久9热视频这里只精品18| 久久亚洲日韩精品一区二区三区| 韩国三级中文字幕hd久久精品| 色婷婷精品免费视频| 美利坚永久精品视频在线观看| 国产精品揄拍一区二区久久| 91久久国产精品| 四虎国产精品永久在线观看| 自拍偷在线精品自拍偷| 久久精品国产一区二区电影| 无码精品久久一区二区三区| 国产自偷在线拍精品热| 欧美日韩精品乱国产| 无码国产精品一区二区免费式直播| 91麻豆精品国产自产在线| 少妇精品久久久一区二区三区| 久久国产精品岛国搬运工| 麻豆精品不卡国产免费看| 中文字幕乱码中文乱码51精品| 精品无码一级毛片免费视频观看 | 精品免费久久久久国产一区| 夜夜高潮夜夜爽国产伦精品| 四虎8848精品永久在线观看| 国产综合精品一区二区| 国产在线高清精品二区色五郎| 国产精品怡红院在线观看| 国产精品k频道在线看| 国产精品久久久精品三级|