在编译rom的out目录下,找到framework.jar (可以将classes.jar修改为classes.zip解压后发现很多系统的class文件)
out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar 重命名为 framework.jar
2. 将找到framework.jar文件加入到AS中如图所示,放到app/libs/framework.jar
3. 修改AS中项目的./build.gradlegradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << '-Xbootclasspath/p:/home/liujin/AndroidStudioProjects/application1111/app/libs/framework.jar' } }4. 修改AS中项目的.app/build.gradle 4.1 framework.jar只参与编译不打包到系统
dependencies { compileOnly fileTree(include: ['*.jar'], dir: 'libs') }
4.2 类加载机制framework.jar在AndroidSDK之前
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 groovy.util.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 } } } gradle.projectsEvaluated { tasks.withType(JavaCompile) { Set5. 验证是否成功fileSet = options.bootstrapClasspath.getFiles() List newFileList = new ArrayList<>(); //"../framework.jar" 为相对位置,需要参照着修改,或者用绝对位置 newFileList.add(new File("libs/framework.jar")) newFileList.addAll(fileSet) options.bootstrapClasspath = files(newFileList.toArray()) } }
我们可以看到ActivityManger.getService()是标红的,但是AndroidStudio依旧可以运行.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)