Android studio将jar包置于sdk中的android.jar之前(跳坑记)
来源:互联网 发布:2017淘宝卖什么利润大 编辑:程序博客网 时间:2024/04/29 22:52
当我们自己的包中的包或者类和sdk中android.jar的包或者类相同时,android studio默认使用的时android.jar中的内容,而如果我们想使用自己的包中的内容的话,就必须把优先级放到android.jar之前。这是这样一个简单的需求,我折腾了一个上午来搞定,本来时非常简单的事情,因为跳的坑太多,浪费了很多时间。
经过一些尝试后,发现下面的说法比较靠谱。
这里写链接内容
我的android studio是2.2.3版本的,同样适用,先把整个过程做个完整的梳理:
假定你有这样一个包:classed-full-debug.jar
第一步:导入包
把classed-full-debug.jar放在工程下的libs目录里,如果没有就新建这个目录。android studio2.2.3版本是有这个目录的。放入后右键,选择add as library。
第二步:修改scope为Provided
通过File菜单或者F4进入project structure,左边选中app,再进到dependencies,点 + 选择file dependency ,再从libs目录选择你要的jar包,这里是test.jar,选择后把 scope置为Provided
最后,千万别忘了,要把你添加的jar挪到最前面,点击右边的蓝色向上箭头即可。
如图:
第三步:修改根目录下的build.gradle
找到工程根目录下的build.gradle,把
allprojects { repositories { jcenter() }}
这段实现改为
allprojects { repositories { jcenter() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs.add('-Xbootclasspath/p:app/libs/classes_full_debug.jar') } }}
如图:
第四步:修改app/app.iml
最后,记得在app/app.iml中,把jdk的顺序调整到最后,如下:
这里改完后,每次重新打开Android stuio或者sync gradle,都会使得jdk的顺序发生变动,type=”jdk”所在的行会跑到前面去,为了方便起见,可使用下面的代码自动将type=’jdk’的行移动到最后:
preBuild { doLast { def imlFile = file(project.name + ".iml") println 'Change ' + project.name + '.iml order' try { def parsedXml = (new XmlParser()).parse(imlFile) def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' } parsedXml.component[1].remove(jdkNode) def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform" new Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK']) groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile)) } catch (FileNotFoundException e) { // nop, iml not found } }}
把这段代码加到app下的build.gradle中即可。
如图所示:
- Android studio将jar包置于sdk中的android.jar之前(跳坑记)
- 关于Android Studio将***.jar放在android.jar之前
- Android Studio 将项目打成JAR包
- 获取 Android Studio 中的jar包
- Android Studio生成自定义jar包(同时将assets目录打入jar包)
- Android Studio jar包引用jar包
- android studio 如何调用自定义的framework.jar包在andorid.jar包之前呢
- android studio 如何调用framework.jar在android.jar包之前
- Android Studio报错 :在Android Studio中如何将依赖的jar包放在SDK的android.jar前?
- Android Studio 将引用第三方jar包的android工程打包成jar包
- Android Studio导入Jar包
- Android Studio 导入jar包
- Android studio 打jar包
- Android studio添加jar包
- Android studio 打jar包
- Android Studio打成jar包
- Android Studio 打jar包
- Android Studio生成jar包
- 安装测试 Lasagne
- 通过APK获取应用的包名以及启动类
- 安装hiredis
- Java IO (3)--ByteArrayInputStream
- 2017.02.28 C/C++小知识点
- Android studio将jar包置于sdk中的android.jar之前(跳坑记)
- 设计模式之单例模式
- WebApi中跨域解决办法(转)
- C++笔记函数重载函数模板
- 并查集(寻找关系使用)
- zynq-mpsoc系列之zcu102的linux完整启动log信息
- Android 源码分析VR返回键无法用Accessibility拦截的问题
- c语言一行一行的读取txt文件
- Canvas 基本用法