背景
由于目前公司在开发机顶盒项目,和厂商合作,其中有些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之上,即第一个位置,像这样:
<content>
...
</content>
<orderEntry type="library" exported="" name="xxx" level="project" />
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
...
OK了,这样就大功告成了~体验用as开发的乐趣吧!
网友评论