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')
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())
}
}
}
2.绝对路径
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add('-Xbootclasspath/p:E:\\AndroidProject\\Wifi\\app\\libs\\framework.jar')
}
}
}
此时,可以正常引用,有时候项目会出现提醒,但不影响正常运行、编译以及打包