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