• 【Android】导入三方jar包/系统的framework.jar


    1.Android.mk导包

    1).jar包位置

    与res和src同一级的libs中(没有就新建)
    在这里插入图片描述

    2).Android.mk文件

    LOCAL_STATIC_ANDROID_LIBRARIES:android静态库,经常用于一些support的导包
    在这里插入图片描述

    LOCAL_JAVA_LIBRARIES:依赖的java库,一般为系统的jar包
    在这里插入图片描述

    LOCAL_STATIC_JAVA_LIBRARIES:指定依赖的静态库,三方jar包放在该处,后面为依赖的静态库别名,可以随便取名,但要和后面LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES对应
    在这里插入图片描述

    LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:表示依赖的静态库具体路径,zxing就是上面定义的别名
    在这里插入图片描述

    注:
    代码混淆也需要修改
    LOCAL_PROGUARD_FLAG_FILES := proguard.flags
    导包后如果不做处理,编译时会出现报错,根据具体的报错信息在proguard.flags文件中加规则

    2.AS导包

    1).正常导入

    把jar包放到项目的libs文件下,右键选择添加为依赖库
    在这里插入图片描述

    2).正常导入但需要提升三方jar包优先级

    有时候使用的jar包与sdk中同名,但需要优先使用三方jar包(此处更重要的是导入了系统的framework,优先使用framework.jar而找不到时的处理)
    build.gradle(:app)

    导入的jar包修改

    compileOnly files('libs/framework.jar')
    
    • 1

    compileOnly 表示 jar 包只参与编译,不会打包进去

    修改项目的build.gradle

    有两种方式
    1.相对路径

    allprojects {
        gradle.projectsEvaluated {
            if (!plugins.hasPlugin("android-library") && !plugins.hasPlugin("android")) {
                return
            }
            //configure maven dependencies
            configurations.each { conf ->
                if (conf.name == 'compileOnly') {
                    dependencies.add("compileOnly", files('app/libs/framework.jar'))
                }
            }
            //configure compile dependencies
            tasks.withType(JavaCompile) {
                Set<File> fileSet = options.bootstrapClasspath.getFiles()
                List<File> newFileList = new ArrayList<>();
                newFileList.add(files('app/libs/framework.jar'))
                newFileList.addAll(fileSet)
                options.bootstrapClasspath = files(newFileList.toArray())
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2.绝对路径

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

    此时,可以正常引用,有时候项目会出现提醒,但不影响正常运行、编译以及打包
    在这里插入图片描述

  • 相关阅读:
    Git管理(Linux版本)
    什么是去中心化云计算?
    流程引擎-自定义函数的应用
    金融机构如何做好中小微物流企业的风控措施?
    字节面试官:“这92道 Spring Boot 面试题都答不上来?”
    电商企业如何操作自动化软件鼓励员工创新
    vue 项目内vue指令常用
    第七章(1):深度神经网络的基本结构、训练方法和在机器学习中的重要性
    Spring-IOC 控制反转
    【c++STL算数仿函数,关系仿函数,逻辑仿函数】
  • 原文地址:https://blog.csdn.net/cycy1821/article/details/134435508