在AS中導入修改后的android.jar編譯問題

背景

由于目前公司在開發(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ā)的樂趣吧!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容