背景
由于目前公司在開發(fā)機頂盒項目,和廠商合作,其中有些jar包對android.jar中的內(nèi)容做了修改。開始在Eclipse上開發(fā),可以調(diào)整編譯包的優(yōu)先級,一直沒什么問題;可是現(xiàn)在Android Studio越發(fā)成熟,再不使用Android Studio開發(fā)你就out啦?。?!所以問題來了:AS默認是不支持改變編譯優(yōu)先級的,我們修改過的android.jar根本引用不到里面的內(nèi)容
解決
Android Studio在編譯時默認系統(tǒng)SDK的優(yōu)先級最高,所以如果你更改了android.jar的內(nèi)容,默認情況下是引用不到的~那么在Android Studio中如何將我們的jar包優(yōu)先于android.jar編譯?解決的辦法有兩種:
1.替換android.jar
第一種方法比較簡單粗暴,把你的修改后jar包內(nèi)的所有文件復制到你編譯的SDK版本對應目錄下面的android.jar中,進行文件的替換。這種效果親測可以
2.改變build.gradle配置(推薦)
這種方法是谷歌搜到的,先附上鏈接How to put my libraries in front of android.jar by editing build.gradle in Android-Studio
步驟如下:
- 將你的jar包復制到libs目錄下
- 打開File->Project structure...->找到剛才復制進的jar包->將scop改為Provided
- 然后找到你工程目錄下的的build.gradle文件中
allprojects {
repositories {
jcenter()
}
}
- 在
allprojects{...}中添加
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add('Xbootclasspath/p:app\\libs\\xxx.jar')
}
}
這段代碼,app是你的module名稱,一般為app;xxx.jar是你jar包名稱。
- 在你的module目錄下找到對應的xxx.iml,和上一步的app名稱是對應的,然后將xxx.jar的那條元素移動至系統(tǒng)SDK之上,即第一個位置,像這樣:
<content>
...
</content>
<orderEntry type="library" exported="" name="xxx" level="project" />
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
...
OK了,這樣就大功告成了~體驗用as開發(fā)的樂趣吧!