升級(jí)gradle
首先按照提示升級(jí)了gradle版本
gradle-wrapper.properties文件中g(shù)radle版本改為4.3
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-all.zip
對(duì)應(yīng)Project的build.gradle中的gradle插件版本改為3.0.0般眉,還有在repositories中添加google()
classpath 'com.android.tools.build:gradle:3.0.0'
repositories {
google()
mavenCentral()
jcenter()
maven { url 'https://dl.bintray.com/growingioreactnative/maven/' }
}
同步后提示buildToolsVersion版本要求26.0.2
buildToolsVersion = "26.0.2"
再同步又各種報(bào)錯(cuò)
報(bào)錯(cuò)一:
The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?
問題出在一個(gè)module的build.gradle中有一句
instrumentTest.setRoot('tests')
應(yīng)該是新版的gradle棄用了instrumentTest方法货徙,用androidTest代替即可
androidTest.setRoot('tests')
再同步后報(bào)警告
Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html
這句很好理解,只是api和implementation到底用哪個(gè)奕筐?
api 指令
完全等同于compile指令瓜浸,沒區(qū)別师骗,你將所有的compile改成api通孽,完全沒有錯(cuò)攘残。
implement指令
這個(gè)指令的特點(diǎn)就是拙友,對(duì)于使用了該命令編譯的依賴,對(duì)該項(xiàng)目有依賴的項(xiàng)目將無法訪問到使用該命令編譯的依賴中的任何程序歼郭,也就是將該依賴隱藏在內(nèi)部遗契,而不對(duì)外部公開
參考:
http://www.it1352.com/139247.html
https://blog.csdn.net/soslinken/article/details/73114637
https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_configurations_graph
報(bào)錯(cuò)二:
報(bào)錯(cuò)
All flavors must now belong to a named flavor dimension.
這句百度了下,解決方法各不相同病曾,用了最簡(jiǎn)單一種
在主項(xiàng)目的build.gradle的defaultConfig中添加一句
flavorDimensions "default"
報(bào)錯(cuò)三:
報(bào)錯(cuò)
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':tangram'.
> Could not resolve all files for configuration ':tangram:classpath'.
> Could not resolve com.android.tools.build:gradle:2.3.3.
Required by:
project :tangram
> Could not resolve com.android.tools.build:gradle:2.3.3.
> Could not get resource 'http://oss.jfrog.org/oss-snapshot-local/com/android/tools/build/gradle/2.3.3/gradle-2.3.3.pom'.
> Could not HEAD 'http://oss.jfrog.org/oss-snapshot-local/com/android/tools/build/gradle/2.3.3/gradle-2.3.3.pom'. Received status code 409 from server:
在瀏覽器點(diǎn)開鏈接報(bào)錯(cuò)409
{
"errors": [
{
"status": 409,
"message": "The repository 'oss-snapshot-local' rejected the resolution of an artifact 'oss-snapshot-local:com/android/tools/build/gradle/2.3.3/gradle-2.3.3.pom' due to conflict in the snapshot release handling policy."
}
]
}
說是oss-snapshot-local倉庫拒絕了gradle-2.3.3.pom的加載牍蜂,打開tangram這個(gè)module的build.gradle,repositories中有引入了oss-snapshot-local庫泰涂,把這句注釋掉再編譯就好了鲫竞,不知道有沒有更好的辦法
// maven { url "http://oss.jfrog.org/oss-snapshot-local/" }
報(bào)錯(cuò)四:
項(xiàng)目有用react native寫,編譯提示
nable to resolve dependency for ':MPLib@debug/compileClasspath': Could not resolve com.facebook.react:react-native:+.
于是指定了具體版本
com.facebook.react:react-native:0.53.3
報(bào)錯(cuò)五:
還有個(gè)報(bào)錯(cuò)是說Mainifest中不能指定minSdkVersion逼蒙,忘了截圖了
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="22"/>
那就把這句刪了就好咯
報(bào)錯(cuò)六:
項(xiàng)目可以編譯成功了从绘,但是有些代碼爆紅,在調(diào)用靜態(tài)方法的地方提示
cannot access android.support.v4.app.BaseFragmentActivityDonut
這個(gè)是v4包版本太低了,我直接換成了26
compile 'com.android.support:support-v4:26.0.0'
再次編譯僵井,不爆紅了
打包遇到問題
報(bào)錯(cuò)一:
java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource compilation failed
原因是因?yàn)閍ndroid studio3.2是默認(rèn)把AApt2開啟的
解決方法
gradle.properties文件中添加一句
android.enableAapt2=false
報(bào)錯(cuò)二:
The same input jar is specified twice
Warning:Exception while processing task java.io.IOException: The same input jar […….jar] is specified twice.
解決方法
將混淆文件proguard-rules.pro中所有的-libraryjars 注釋掉陕截,變成 #-libraryjars xxxx.jar
原因分析
build.gradle文件已經(jīng)配置了
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
}
里面已經(jīng)添加過jar包,sdk 通過 proguard 混淆代碼時(shí)默認(rèn)已經(jīng)將 lib目錄中的 jar 都已經(jīng)添加到打包腳本中批什,所以不需要再次手動(dòng)添加农曲。
參考:
https://blog.csdn.net/ylbf_dev/article/details/50448727