在Android Studio中指定import的先后顺序

本文介绍了一种方法,用于在Android开发中使IDE优先使用自定义的TelephonyManager类,而不是SDK自带的版本。通过修改项目的build.gradle文件及.iml文件,可以确保应用能访问到新增的API。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在TelephonyManager中增加了几个api,编译系统生成classes.jar后,app导入引用TelephonyManager类时,ide提示TelephonyManager类没有增加的那几个api。查看该TelephonyManager来源,发现是来自Android Studio配置的sdk。

执行下面两步操作后,可指定ide首先引用我们修改的TelephonyManager类:

1、修改项目根目录下的build.gradle

allprojects {
    repositories {
        jcenter()
    }
    +gradle.projectsEvaluated {
    +    tasks.withType(JavaCompile) {
    +        options.compilerArgs.add('-Xbootclasspath/p:app/libs/classes.jar')
    +    }
    +}
}

2、修改app目录的build.gradle

+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
+        }
+    }
+}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值