在AS中导入修改后的android.jar编译问题

背景

由于目前公司在开发机顶盒项目,和厂商合作,其中有些jar包对android.jar中的内容做了修改。开始在Eclipse上开发,可以调整编译包的优先级,一直没什么问题;可是现在Android Studio越发成熟,再不使用Android Studio开发你就out啦!!!所以问题来了:AS默认是不支持改变编译优先级的,我们修改过的android.jar根本引用不到里面的内容

解决

Android Studio在编译时默认系统SDK的优先级最高,所以如果你更改了android.jar的内容,默认情况下是引用不到的~那么在Android Studio中如何将我们的jar包优先于android.jar编译?解决的办法有两种:

1.替换android.jar

第一种方法比较简单粗暴,把你的修改后jar包内的所有文件复制到你编译的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的那条元素移动至系统SDK之上,即第一个位置,像这样:

...



...

OK了,这样就大功告成了~体验用as开发的乐趣吧!

你可能感兴趣的:(在AS中导入修改后的android.jar编译问题)