Android官方技術文檔翻譯――新構建系統概述
來源:程序員人生 發布時間:2015-03-11 08:05:22 閱讀次數:4795次
本文譯自Android官方技術文檔《New Build System》,原文地址:http://tools.android.com/tech-docs/new-build-system。
這篇文章從去年就開始翻譯的了,無奈項目較趕我翻譯的速度又慢,翻譯期間Google官網又對它不斷更新,以致拖到了現在。這1篇文檔是對Android新構建系統的概述,列出了與它相干的1些文檔,和這個新構建系統的各版本更新日志。這個新的構建系統,其實也就是這個Gradle 上的 Android 插件,如果你的Android Studio項目由于這個插件的版本更新致使沒法構建,參閱本篇文檔可能會有幫助。
翻譯不容易,轉載請注明CSDN博客上的出處:
http://blog.csdn.net/maosidiaoxian/article/details/44077737
翻譯工作耗時費神,如果你覺得本文翻譯得還OK,請點擊文末的“頂”支持我;如有錯訛,敬請指正。謝謝。
我們正在研究新的編譯系統,以取代里面 ADT 里的構建系統和 Ant。
(譯者注:有關下面列出的文章的譯文可以參見我的專欄:http://blog.csdn.net/column/details/android-tech-transla.html)
- Gradle 插件用戶指南
- 清單合并(于0.10 中新增)。
- Apk Splits (new in 0.13)
- 提示
- 技術文檔
- aar 格式
- Resources/Assets 合并機制
- 從 Eclipse Projects 或 IntelliJ
Projects 進行遷移
- 從舊的 Gradle 項目遷移到 1.0.0 版本
- 構建工作流
- 與 Android Studio 的版本兼容
- ApplicationId 與 PackageName
- 資源縮減(自動清除沒有用到的資源)
2013谷歌 I/O 大會: 新的 Android SDK 構建系統
示例均在頁底。
發布說明:
1.1.2 (2015/02/26)
-
當創建用于單元測試的可摹擬的(mockable) jar 包時路徑會統1化處理。
-
修復了 build.gradle 中的“archivesBaseName”設置被疏忽的問題。
- 當構建類庫的測試利用程序時清單合并工具會有的未處理占位符失敗。
1.1.1 (2015/02/24)
- 現在只有包括了1個Wear 利用程序的變種版本才會觸發構建它們。
- 如果有依賴相干的問題現在將會在構建時期就失敗而不是等到調試時期才失敗。這將允許運行診斷性的任務 (比如“dependencies”)來幫助解決沖突。
- 現在又可以調用 android.getBootClasspath() 方法了。
1.1.0 (2015/02/17)
- 單元測試的支持。單元測試代碼運行在在本地 JVM 上,它針對著與經常使用的 mocking
框架 (如 Mockito)相兼容的的專用版本的 android.jar。
- 新的任務: test,testDebug/testRelease,testMyFlavorDebug (如果使用了
flavors)。
- 能被辨認為單元測試的新源文件夾:
src/test/java,src/testDebug/java, src/testMyFlavor/java 等等。 - 用于添加 test-only 依賴項的新配置,例如
testCompile 'junit:junit:4.11'
testMyFlavorCompile ' some:library:1.0' - 暫時不兼容 Jack 編譯器 。
- 新的選項,用于控制“mockable”android.jar 行動的 android.testOptions.unitTests.returnDefaultValues。
- 在過去名稱中包括了“Test”的任務,現在使用“AndroidTest”,比如“assembleDebugTest”改成“assembleDebugAndroidTest”這是為了把它們從單元測試任務中辨別出來,例如
“assembleDebugUnitTest”。
- 混淆配置文件不再利用于測試 APK。如果啟用了緊縮(譯者注:應當是minifyEnable設為true),緊縮主APK
時會生成1個映照文件,測試 APK 將只有在利用這個映照文件時才會被混淆器處理。
- 依賴管理的問題修復及更改:
- 正確地處理了“provided”和“package” 的作用范圍,以做它們應當做的。
- “provided”和“package” 不能用于 Android Libraries項目,否則將生成毛病
- 同步測試和測試依賴樹:
- 如果同1個版本的構件在測試項目本身及測試項目的依賴樹中都有,那末它會在測試利用程序中跳過
- 如果這個構件的版本不同,那末將會生成1個構建毛病。Gradle 提供了機制來解決這個問題。
- 增加在資源合并工具中對任意Dpi資源的限定符的支持。
- 有大量 Android 模塊的項目將會發現項目評估與 IDE 同步的速度有了提升(各人的情況可能會有不同)
1.0.1 (2014/1/9)
- 修復81638 : 修復 PermGen 在運行 extractAnnotations 時的問題。
- 修復當導入targetSdkVersion < 16 的庫項目時的1個小的清單合并問題
- 修復當運行在JD8時的屏幕密度順序問題。
- 修復82662:禁用傳入參數 --no-optimize 到 dx。
1.0.0-rc4 (2014/12/04)
- 處理在對啟用了 multidex 的庫項目進行測試時本地jar包的問題
- 修復路徑只有1個字長時的路徑正常化問題(用于解緊縮 aars)
- 通過dexOptions.javaMaxHeapSize 修復 Jack和Jill 兩個編譯器的內存設置。
1.0.0-rc3 (2014/12/03)
- 對未解壓 AAR包的目標路徑基于包括了無效字符的 groupId/artifactId/version 的情況,能夠更好地處理。
1.0.0-rc2 (2014/12/03)
- 通過指定類庫的協作,增強清單合并的日志。
- 清單占位符可以是任何類型,只要這個類型實現了 tostring() 方法。
- 修正了1個問題:1個 targetSdk 較低的庫會由于1個聲明的權限,而在不同的清單中都添加權限。
- 更好地修正能夠在嵌入1個微型利用程序時在main 利用程序清單添加新的權限的問題。
- 添加對密度分割(density splits)和resConfig 屬性的沖突的檢查。
- 測試利用程序現在不會使用multi-dexing,除非它們是在測試1個類庫項目。
- 修復1些 lint 的問題:80872,80834,60416,80837
1.0.0-rc1 (2014/11/24)
(好吧,這是真實的 RC1版本)
- 修復資源縮減(resources shrinking)的問題
- 修復在 publishNonDefault 中的問題
- 運行在版本為 21以上的裝備的安裝任務現在重新安裝1遍。
- 使用 aapt 21以上版本的密度拆分,現在使用 --preferred-density 將允許1些位圖的密度版本缺失。
- hasProperty() 現在在由variant API 返回的只讀的wrapper上又能正常使用了。
- 現在在類庫項目中設置 applicationId(Suffix) 將會直接報錯。
- 修復在嵌入1個微型的利用程序時可以在其中main app的清單中添加新權限的問題。
0.14.4 (2014/11/19)
- 這應當被視為 1.0-RC 版本 (可以這么說,見前文)
- 修正 proguardFiles DSL 的問題。
- 固定Studio 0.9.x 的兼容性問題
- 兼容 Gradle 2.1, 2.2 和 2.2.1
0.14.3 (2014/11/18)
- Variant 特定的 BuildConfigField 或 resValue
applicationVariants.all { variant ->
variant.buildConfigField "int", "VALUE", "1"
variant.resValue "string", "name", "value"
}
- Variant (和 multi-flavor)獨有的依賴配置
multi-flavor 是除Build Type以外的所有的flavors。只在有兩個以上的flavor時才存在。
當前限制:需要先手動定義配置(運行 dependencies任務可以看到名稱)
configurations {
fooDebugCompile
}
android {
productFlavors {
foo { ... }
}
}
dependencies {
fooDebugCompile '...'
}
- 用于嵌入穿著裝備app 的 BuildType/Flavor/Variant 配置(<name>WearApp)
- 升級到 Proguard 5.1
- 行將到 1.0 版本:移除的過時的屬性和方法
- BuildConfig.PACKAGE_NAME (使用新的字段名稱)
- android.flavorGroups (使用新屬性名稱)
- ProductFlavor.packageName/flavorGroup/testPackageName/renderscriptSupportMode
(使用新屬性名稱)
- BuildType.runProguard/packageNameSuffix/jniDebugBuild/renderscriptDebugBuild/zipAlign
(使用新的屬性名稱)
- Variant.packageApplication/zipAlign/createZipAlignTask/outputFile/processResources/processManifest
(使用 variant output)
0.14.2 (2014/11/10)
- 修復multi-dex 的潛伏問題:在打包期間,dex 文件可以被重命名,從而致使正在使用的main dex 文件毛病。
- 修復 versionNameSuffix 支持
- 修復 BuildType.initWith,使它能夠復制 shrinkResources 的標志
- 如果沒有提供混淆規則文件,則設置默許的混淆規則文件(SDK/tools/proguard/proguard-android.txt)
- 用于在apk中包括假的地域的BuildType.pseudoLocalesEnabled標記。
0.14.1 (2014/11/03)
- 修復覆蓋支持。
- 修復樣式(style)援用的資源縮減
- 從資源縮減中排除嵌入的 Wear micro-app。
0.14.0 (2014/10/31)
- 需要 Studio 0.9
- 代碼混淆和代碼覆蓋率現在可以1起使用
- 支付從 Android 5.0 的裝備中拉取覆蓋率數據
- 環境變量 ANDROID_SERIAL (如果存在)
會限制對序列號匹配的裝備的測試的安裝或履行
- Multi-Dex 多持。
- 需要Build Tools 21.1.0,并且支持庫(Support repository)版本為8。
- 在 defaultConfig,ProductFlavor 或 BuildType上multiDexEnabled
= true
- 支持 minSdkVersion 21+ (原生) 或 <21 (延伸模式,通過 com.android.support:multidex:1.0.0
上的自動依賴)
- 請參閱multiDex示例。
- 支持自動刪除未使用的資源
- 目前默許情況下它是關閉的,可以通過在你的發布構建類型(release
build types)中設置 shrinkResources 為 true進行啟用。它需要 minifyEnabled 也設置為true。
- DSL 和 API 的變化:
- 重命名幾個屬性,以使這些屬性更統1。
- BuildType.runProguard -> minifyEnabled
- BuildType.zipAlign -> zipAlignEnabled
- BuildType.jniDebugBuild -> jniDebuggable
- BuildType.renderscriptDebug -> renderscriptDebuggable
- ProductFlavor.renderscriptSupportMode -> renderscriptSupportModeEnabled
- ProductFlavor.renderscriptNdkMode -> renderscriptNdkModeEnabled
- 通過 variant 和 variantFilter API 所查詢到的 BuildType/ProductFlavor/SigningConfig
現在都是只讀的。
- 這些對象1直是全局對象,并且改變它們將會在其它的變種(variants)產生副作用
- 合并后的定制版本(flavor)依然是獨立的變種版本(per-variant),且可以被修改
- Variant 及 VariantOutput API 的變化
- 獲得密度(density)或 ABI 挑選器的值現在可以通過
output.getFilter(com.android.build.OutputFile.DENSITY)
output.getFilter(com.android.build.OutputFile.ABI) 來實現 - 請參閱densitySplit示例
0.13.3 (2014/10/06)
- 通過使用tools:overrideLibrary,支持有選擇性地允許1些庫的依賴可以有不兼容的uses-sdk。http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-tools:overrideLibrary-marker
- 修復lint 資源文件夾緩存的資源競爭可能會致使構建失敗的問題
0.13.2 (2014/09/26)
- 修復了清單合并工具的問題,這個問題可能會把毛病的uses-sdk 節點放到清單中。
0.13.1 (2014/09/22)
- 增加從測試中合并 Instrumentation 元素的功能
- 修復 uninstallAll 任務的問題
- 修復毛病的配置可能會致使變種版本沒有輸出,并因此影響項目評估的問題。
- connectedCheck 任務現在會在沒有發現測試時返回失敗的結果。
0.13.0 (2014/09/18)
- 需要 Gradle 2.1
-
現在可以提供1個清單(src/androidTest/AndroidManifest.xml) 用于測試的利用程序啦
-
Library 項目里的AndroidManifest 文件現在可以包括占位符。如果它們不能在庫項目中被處理,它們將會在使用這個庫的項目(原文為consuming project)中被處理。
-
AndroidManifest 占位符現在可以在Product Flavors 和 Build Types上設置。
-
Variant.getMappingFile() API 現在允許查詢混淆映照文件。
-
用于由Density 和 ABI 而產生的多APK的新分割機制。文檔見這里。
-
Bug 修復:
- 修復被使用的混淆文件(原文為consumer proguard file)(來自 aar 文件)會在第1次構建時被疏忽的問題。
- 修復 aar 輸出名稱的問題,現在變種版本(variants)不會再相互改寫這個名稱
- 正確合并 declare-styleable,以包括所有的 attrs。
- 修復在資源合并進程中資源字符串的空格問題。
0.12.2 (2014/07/16)
- 修復穿著利用程序的打包問題
- 修復 build.gradle 中 ${applicationId} 占位符不起作用的問題。
- 自定義 Java 代碼生成的步驟現在是源代碼生成步驟的1部份 (修復 IDE 集成)。
- 為解決可能存在資源競爭的情況,把未解壓的aar 移回每一個項目里面作為臨時的解決方法。
0.12.1 (2014/07/01)
0.12.0 (2014/06/25)
- 新的 IDE 模型,需要Studio Beta 0.8
- 修復清單合并里的問題。
0.11.1
- 修復當構件(artifact) 依賴于Maven中央倉上的android.jar 構件時的問題。
- 修復在生成的清單中自定義的命名空間聲明丟失的問題。
- 修復在清單合并工具中權限組驗證的問題。
0.11.0
-
更新 IDE 模型,需要Studio 0.6
- 支持 Gradle 1.10,1.11,1.12。
-
新的清單合并工具現在作為默許的合并工具。
-
大量的問題修復。
- 新增能夠在flavor對象上添加用于清單文件的自定義占位符
defaultConfig {
manifestPlaceholders = [activityName:"defaultName"]
}
- 將文件及文件夾移到構建目錄(buildDir)中以便更好地進行IDE集成。
- 現在可以發布生成的 APK。發布的配置和庫1樣,使用 defaultPublishConfig 和 publishNonDefault 標志。
- API及DSL 上的重大更改:
- ProductFlavor.packageName 現在是 applicationId。packageName 的setters
暫時仍保存,但會在 1.0版本時移除
- ProductFlavor.testPackageName 現在是 testApplicationId。 testPackageName 的setters暫時仍保存,但會在1.0版本時移除
- ProductFlavor 上的 minSdkVersion/targetSdkVersion 現在是1個ApiVersion 實例,而不再是1個整數。
- DSL 的影響
- 不能在 DSL 中使用setter,請使用方法來代替。基本上,不要使用“=”
flavor {minSdkVersion = 9 }
替換為:
flavor { minSdkVersion 9 } - 這是由于 groovy 的限制,避免過量的setters。
- interface ApiVersion {
int getApiLevel();
int getCodename();
}
0.10.4
- 修復清單合并的 bug(包括 application 節點在生成的清單中的正確位置)
- 修復在庫項目中的產品定制(flavors)如果使用不同的飯鍋,將沒法正確地生成 R 類的問題。
- 修復有關 XML 文件解碼時解析UTF8的BOM 的問題。
- Lint 問題修復。
0.10.3
0.10.2
- 更多關于清單合并的問題修復,包括更好地處理 minSdkVersion。
- 更多的lint 問題修復。
- 修復增量編譯dex 的支持(依然需要被啟用)
0.10.1
- 修復關于新清單合并工具的幾個問題。歡迎繼續向我們反饋問題。
- 修復卸載任務的問題。
- 大量的 lint 修復及新的檢查。例如,你可以在你的庫中使用lint 強迫讓資源有前綴。
0.10.0
-
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------
主站蜘蛛池模板:
国产视频一区在线
|
自拍偷拍网站
|
我的奶好大想被男人吃奶
|
国产在线视频一区
|
国产综合成人久久大片91
|
韩国片在线观看
|
又粗又硬又黄又爽的免费视频
|
国产综合亚洲欧美日韩一区二区
|
亚洲制服另类
|
国产人成午夜免费看
|
精品在线免费观看视频
|
精品国产一区二区三区免费
|
日韩欧美国产中文字幕
|
国产真实乱小说
|
久夜色精品国产一区二区三区
|
久久久久久免费一区二区三区
|
成人免播放器午夜视频
|
欧美一区二区三区久久综
|
中文字幕乱码人成乱码在线视频
|
欧美日韩在线第一页
|
校园春色国产精品
|
免费观看18视频网站
|
伊人免费在线观看
|
亚州三级视频
|
欧美巨尻
|
男人午夜视频在线观看
|
欧美午夜视频
|
性做久久久久久久久
|
www.毛片.com|
性视频一区二区三区免费
|
性欧美18
|
好大好爽好舒服
|
永久免费视频v片www
|
亚洲国产成人久久精品图片
|
日本系列 1页 亚洲系列
|
国产亚洲综合一区二区在线
|
中文字幕色视频
|
国产激情一区二区三区在线观看
|
自拍偷拍第4页
|
亚洲福利一区
|
天天狠狠弄夜夜狠狠躁·太爽了
|