[轉]報preDebugAndroidTestBuild——應用程式與測試應用程式版本不同的解決方案
每次開啟android studio時都會報題目的錯誤,對工程的執行並沒有實際影響,但由於看著BUILD FAILED幾個大字很不爽,就決定查下給解決掉。
為表示感謝或對知識的尊重,先將參考文獻列在前面
參考文獻:
http://keep.01ue.com/?pi=336339&_a=app&_c=index&_m=p
https://www.cnblogs.com/BlueFire-py/p/9058208.html 並非對該問題的解答,是對Gradle的解釋
問題現象:
解決方案:
在每個Module的build.gradle檔案中dependencies關鍵字下,新增一行程式碼。
configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:26.1.0' }
然後,同步一下即可。
注:必須是該Project下所有的Module都需要這樣。
下面,是對第二篇參考文獻的“引用”
gradle-warpper.properties檔案:warpper包裝的意思,properties財產,所有權的意思。
gradle-wrapper:目的在於團隊開發過程中統一gradle版本號
這個檔案存在的意義在於:它可以啟動gradle內建的Wrapper task幫助我們自動生成wrapper所需的目錄結構
它自動生成的檔案是:
檔案中引數介紹:
實戰使用:當匯入別人的專案的時候,把自己常用專案的Gradle-wrapper.properties檔案替換掉別人的。
setting.gradle:工程樹,專案有多少個moudle,都會在這裡顯示。還有我們匯入的第三方依賴
groovy語法:咯
project 的 build.gradle檔案:主要四個標籤
buildscript:是用來宣告gradle指令碼自身需要的資源 { 依賴項dependencies, 第三方外掛和maven倉庫地址 repositories{ jcenter(),maven(),google()託管第三方外掛的平臺} }
ext:用於自定義屬性,咯
allproject:repositories{}這個用於多專案構建,為你所有的module提供第三方庫,為所有的專案提供共同的依賴包,在子專案可以配置自己的單獨的依賴包,和buildscript有區別,互相沒有關係
task clean:執行gradle clean命令時,執行此處的task,與Androidstudio的clean命令一樣,刪除build檔案
module的build.gradle檔案:
appley plugin提供外掛
apply plugin 二進位制外掛
apply from 應用指令碼外掛
android{}這個是Android外掛提供的一個拓展,讓我們自定義AndroidGradle工程
compliesdkversion 編譯所依賴的AndroidSDK 版本
buildTOOLversion 構建該Android工程所用的構建工具版本
defaultconfig{}預設設定,這是一個ProdultFlavor,它允許我們根據不同的情況生成不同的app
ndk{}多平臺編譯,生成so包的時候使用,包括四個平臺armeabi,armeabi-v7a ,x86,mips。使用第三方庫提供的sdk的時候,可能會附帶so庫
sourcesets,原始碼合集是java外掛用來管理程式碼和描述資源的概念,比如告訴gradle關於jin的so包放在了app/libs路徑上,讓它編譯的時候自己去找。
dependencies{}:
complie fileTree(include:[".jar"],dir:"libs")* :把本地libs資料夾下的jar包全部匯入。
complie project()引入本地的一個moudle
complie group:name:version 引入網上倉庫的依賴
匯入第三方類包的方法
匯入jar包:copy到lib目錄下即可(因為gradle裡面的第一句話)
匯入so包:so包應該放在相應模組下的src目錄下的main目錄下的jinLibs目錄(自己新建)
原理:
build.gradle中會有一些不會顯示的預設配置,比如下面的
匯入第三方java類庫含原始碼包library:
1.先把從github上下載下來的library解壓,把library的資料夾所有複製到工程下邊(與主工程app同級,複製到檔案、工程都可)可以新建一個exact資料夾專門存放第三方庫
2.專案根目錄下settigs.gradle新增:include ':App',':viewpagerindicatorlibrary' 如果是exact目錄下 include ':App',': exact:viewpagerindicatorlibrary'
3.app/build.gradle的dependencies裡邊新增:compile project(':viewpagerindicatorlibrary') 如果是exact目錄下 同上
4.開啟open Module Settings看到viewpagerindicatorlibrary 已經加入進來
5.還需在viewpagerindicatorlibrary目錄下新增一個build.gradle的檔案 跟主的app/build.gradle差不多
匯入arr:aar其實也是一個壓縮檔案,相比jar檔案,它能夠含帶res資原始檔等,aar檔案的引入方式有兩種:
1.將.aar檔案貼上到自己專案的libs目錄下
2.修改app/build.grdle配置檔案
新增:repositories flatDir { dirs 'libs' }}
這個是新增一個本地倉庫,並把libs目錄作為倉庫地址。
3.dependencies中新增一行:compile(name:'pullrefreshlibrary', ext:'aar')
匯入遠端庫:咯