我们在使用android studio开发编程时,可能会需要链接引入第三方类库jar包,其实我们可以通过多种途径将其引入,但是除用者可能在操作的过程中会遇到第三方jar包重复加载的问题,当遇到这样的问题的时候,大家也不用着急,这里给大家准备了解决方法,大家可以一起看看。
android studio引入第三方jar包方法一:
在Android Studio(AS)的开发中,遇到引入外部类库或第三方jar包的情况,确实是件很恼人的事情。因为AS是基于Gradle构建,所以和传统的导入方式有些不一样。
笔者也曾为此头疼过好一阵,现在终于有了解决办法,拿出来和大家分享一下。
这里以导入Google Services library为例,具体操作步骤如下。
1. 打开你的buid.gradle文件。应该用哪一个呢?Project中的,还是Module中的?(如图所示,Module中的)
2 . 将google-play-services.jar这个jar包拷到指定的位置。原来可能是在这个目录下:$ANDROID-SDK/extras/google/google_play_services/libproject/google-play-services_lib/libs ,比如现在我把它放到了$GOOGLE_PLAY_LIB目录下。
3 . 如果你已经有了别的dependencies(如Android Studio Library),我们把它加到list当中去,也就是将你需要编译的部分,从dependencies中移到list里。
例如先前长这样:
List myDependencies = ["com.android.support:appcompat-v7:18.0.+"]dependencies { //moved into List above, so there'll be nothing here.}
4. 加入Google Play Library之后:
List myDependencies = ["com.android.support:appcompat-v7:18.0.+", fileTree (dir: '$GOOGLE_PLAY_LIB', includes: ['*.jar'])]
PS:不要忘了把$GOOGLE_PLAY_LIB 改成你本地的目录,如 E://Android/Development/Lib
5. 修改dependencies里面的内容:
List myDependencies = ["com.android.support:appcompat-v7:18.0.+", fileTree (dir: 'E://Android/Development/Lib', includes: ['*.jar'])]dependencies { compile myDependencies}
6. 然后就是耐心等待项目compile和make了。^_^
android studio引入第三方jar包方法二:
将第三方jar包加入到libs文件夹中
有两种方式将jar引入进工程目录:第一种是打开工程所在Project Structure,然后选择Dependencies,点击那个加号选择File Dependency ,然后再Libs文件夹中选择要导入的jar包,
然后点击确定,jar包就导入进来了。
第二种方式是:右键点击libs文件夹中的jar文件选择 add as Library...然后选择Model,这样也可以导入成功。
android studio引入第三方jar包方法三:
将第三方jar包加入到libs文件夹中,打开工程所在Project Structure,然后选择Dependencies,点击那个加号选择File Dependency ,然后再Libs文件夹中选择要导入的jar包。
两外还有一种方法是在project选中jar包点击右键"Add as library",这种方法需要定位到项目的根目录,即build.gradle所在的目录。
dependencies
{
compile files('libs/android-support-v4.jar')
compile files('libs/xxxx.jar')
}
Android Studio导入第三方jar包出现包重复加载怎么办
添加第三方jar包的时候,出现了重复加载jar包的问题,解决办法很简单去掉一个不让它去加载就OK了
一、错误
Error:Execution failed
for
task
':app:dexDebug'
.
> com.android.ide-common.internal.LoggedErrorException: Failed to run command:
F:\zsl\sdk\build-tools\
21.1
.
2
\dx.bat --dex --output F:\zsl\Android\pro\RecipesDaquan\app\build\intermediates\dex\debug --input-list=F:\zsl\Android\pro\RecipesDaquan\app\build\intermediates\tmp\dex\debug\inputList.txt
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException:<strong> <span style=
"color:#3333ff;"
>Multiple dex files define Landroid/</span><span style=
"color:#ff0000;"
>support/v4</span><span style=
"color:#3333ff;"
>/accessibilityservice/AccessibilityServiceInfoCompatIcs;</span></strong>
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:
596
)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:
554
)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:
535
)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:
171
)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:
189
)
at com.android.dx-command.dexer.Main.mergeLibraryDexBuffers(Main.java:
454
)
at com.android.dx-command.dexer.Main.runMonoDex(Main.java:
303
)
at com.android.dx-command.dexer.Main.run(Main.java:
246
)
at com.android.dx-command.dexer.Main.main(Main.java:
215
)
at com.android.dx-command.Main.main(Main.java:
106
)
从上述错误中我们可以看到support_v4的包重复加载编译了,我们看一下gradle-app文件
<"http://www.2cto-com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.0' compile 'in.srain.cube:cube-sdk:1.0.42.1' compile files('libs/android-async-http-1.4.6.jar') }其中引入了v7的包后会自动去加载编译一个v4:21.0.0包,而在in.srain.cube:cube-sdk:1.0.42.1库中也有一个v4的包,所以我们需要去掉一个
看一下,libraries是否是我们所讲的那样,重复加载v4包
二、解决办法
dependencies {
compile fileTree(dir:
'libs'
, include: [
'*.jar'
])
compile
'com.android.support:appcompat-v7:21.0.0'
<span style=
"color:#ff0000;"
>compile (
'in.srain.cube:cube-sdk:1.0.42.1'
){
exclude module:
'support-v4'
}</span>
compile files(
'libs/android-async-http-1.4.6.jar'
)
}
去掉in.srain.cube:cube-sdk:1.0.42.1中的包不加载即可。
总结:以上就是小编为大家带来的全部android studio怎么引入第三方jar包相关内容,相信大家一定有所了解了吧。