AS导入Framework.jar

AS导入framework.jar

由于在framework层添加了一些接口,然后又不想每次更改APP都在源码环境下编译验证,特把APP源码拷贝到AS中进行编译修改,这就需要在AS中导入系统编译出来的framework.jar包,才能正常编译。

  1. 编译framework.jar包
    make -j24编译出framework.jar;并在 out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\目录拷贝出编译好的jar包classes-full-debug.jar。

  2. AS中导入framework.jar包
    2.1将拷贝出的classes-full-debug.jar重命名为framework.jar并拷贝到Android工程的libs目录下面。
    右键点击jar包,选择add as libary。在这里插入图片描述
    2.2打开Module:app 的build.gradle,在dependencies下添加compileOnly files(‘libs/framework.jar’)

    1dependencies { 2implementation 'com.android.support:appcompat-v7:28.0.0' 3implementation 'com.android.support.constraint:constraint-layout:1.1.3' 4compileOnly files('libs/framework.jar') 5}

    2.3打开Module:app 的build.gradle,在最后添加如下代码: 将framework.jar的编译顺序更改到系统自带android.jar之前

    1preBuild { 2 3 doLast { 4 def imlFile = file(project.name + ".iml") 5 println 'Change ' + project.name + '.iml order' 6 try { 7 def parsedXml = (new XmlParser()).parse(imlFile) 8 def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' } 9 parsedXml.component[1].remove(jdkNode) 10 def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform" 11 println 'what' + sdkString 12 new Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK']) 13 groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile)) 14 } catch (FileNotFoundException e) { 15 // nop, iml not found 16 println "no iml found" 17 } 18 } 19}

    2.4打开Project 的build.gradle,在allproject下添加如下代码:将framework.jar打入apk包中

    1allprojects { 2 gradle.projectsEvaluated { 3 tasks.withType(JavaCompile) { 4 options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\framework.jar') 5 } 6 } 7}

    2.5为了防止报65536错误,可以增加多odex支持,在Module:app 的build.gradle中的
    defaultConfig中添加如下代码:

    1 defaultConfig { 2 applicationId "com.android.test" 3 minSdkVersion 26 4 targetSdkVersion 28 5 multiDexEnabled = true 6 }

    并且引用:

     compile 'com.android.support:multidex:1.0.0'
    

到此就可以顺利的使用自己编译出来的framework.jar在AS中编译APK了。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

AS导入Framework.jar - HelloWorld