转载地址:
https://blog.csdn.net/fesdgasdgasdg/article/details/76560341
1. 在Android Studio离线加载jar包?
方法一:将jar拷贝到app中的libs,右键add as library,选择module模块,然后在你的module 的gradle文件中会自动增加上依赖的那句话,比如: 离线加载std_msgs-0.5.11.jar
implementation files('libs/std_msgs-0.5.11.jar')//离线加载本地jar包
方法二:能在线加载库, 能离线加载 jar包,能离线加载含有源码的module。
看一下如何在线加载库
先找到右上角“搜索“,左边那个按钮 ,点击进去
比如选择:“Library dependency”, 输入“android_core“, 回车
选择某一个源,然后就能看到加进来了
同时,module 的build.gradle多了一行
implementation 'com.google.zxing:android-core:3.3.0'
但是突然发现这么在线加载 android_core ,有问题,RosActivity 这些识别不出来,晕,
如何在线加载 android_core的maven repository, 以及???
答:
在线加载android_core:
A. project 的build.gradle,即顶层的build.gradle文件添加maven repository
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() maven { url "https://github.com/rosjava/rosjava_mvn_repo/raw/master" } mavenLocal() } dependencies { classpath 'com.android.tools.build:gradle:3.1.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() maven { url "https://github.com/rosjava/rosjava_mvn_repo/raw/master" } mavenLocal() } } task clean(type: Delete) { delete rootProject.buildDir }
B. module 的build.gradle 添加:加载 android_10 和android_15其中任何一个都可以
implementation 'org.ros.android_core:android_10:[0.2,0.3)' //implementation 'org.ros.android_core:android_15:[0.2,0.3)' implementation 'org.ros.android_core:android_tutorial_pubsub:[0.2,0.3)'
其中android_10 和android_15 里面都是 aar包,也就是说在线加载jar包和aar包,都是需要 maven repository 和 implementation
如何离线加载 android_core?
因为android_core是 aar包,所以是按照离线加载aar包的方式实现。
同样,还是拷贝到app的libs下。然后在module 的build.gradle中配置如下
//指定在libs目录下的文件
repositories {
flatDir {
dirs 'libs'
}
}
//添加依赖
dependencies {
compile(name: 'aar的名字', ext: 'aar')
}
加载完,rebuild 时,可能会遇到类似错误
Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml
解决方法:https://blog.csdn.net/code_bird/article/details/51803533
由于我们刚开时 在 /libs 下 把离线的jar包,拷贝到该目录,且把该jar包 “ add as library, 让系统识别出来。虽然在 build.gradle 中 屏蔽了该句
//implementation files('libs/std_msgs-0.5.11.jar')//离线加载本地jar包
,不知道是因为没有先clean, 再rebuild的原因还是什么,导致出现如下错误:
AGPBI: {"kind":"error","text":"Program type already present: std_msgs.Bool",
解决办法:https://blog.csdn.net/susan8888/article/details/51518119
一般来说是,jar包引用重复导致的。
1.在project structure中去掉重复的jar包,
2.如果你的jar包是放到了libs目录中,且在gradle中发现了如下代码:
compile fileTree(include: ['*.jar'], dir: 'libs')
则注释掉即可。
所以 删除本地jar包, 屏蔽
//implementation files('libs/std_msgs-0.5.11.jar')//离线加载本地jar包
然后再clean,再rebuild,就可以了。
3. 如何生成 jar包, aar包?
①首先将第三方项目作为Module导入到我们的项目中,具体就是:
②导入之后,需要我们在项目的Gradle的dependencies{}下添加:
implementation project(':这里为第三方项目名称')