Android Studio编译时是怎样查找jar/aar

曾经在项目中编译出现过问题, 即编译时查找jar/aar包时找不到相应的包, 这时了解一下android studio是怎样查找jar/aar的是有必要的, 


下面是我曾经编译时报找不到包的错误中的一部分: 

https://jcenter.bintray.com/com/stone/lib/my-lib/1.0.1/my-lib-1.0.1.pom
https://jcenter.bintray.com/com/stone/lib/my-lib/1.0.1/my-lib-1.0.1.jar   //远程仓库
file:/Users/stone/AndroidStudioProjects/demo001/myapplication/libs/my-lib-1.0.1.jar
file:/Users/stone/AndroidStudioProjects/demo001/myapplication/libs/my-lib.jar   //自定义仓库
file:/Users/stone/my_program/adt-bundle-mac-x86_64-20140624/sdk/extras/android/m2repository/com/stone/lib/my-lib/1.0.1/my-lib-1.0.1.pom
file:/Users/stone/my_program/adt-bundle-mac-x86_64-20140624/sdk/extras/android/m2repository/com/stone/lib/my-lib/1.0.1/my-lib-1.0.1.jar
file:/Users/stone/my_program/adt-bundle-mac-x86_64-20140624/sdk/extras/google/m2repository/com/stone/lib/my-lib/1.0.1/my-lib-1.0.1.pom
file:/Users/stone/my_program/adt-bundle-mac-x86_64-20140624/sdk/extras/google/m2repository/com/stone/lib/my-lib/1.0.1/my-lib-1.0.1.jar  //本地仓库

错误提示说从上面这些地方查找my-lib-1.0.1.jar包时没有找到. 从上面这一堆乱七八糟的字符串中我们可以发现, 其实可以分为三部分:

a. gradle默认仓库 (gradle默认配置的仓库是:https://jcenter.bintray.com)

b. 自定义仓库

c. 本地仓库


我们知道gradle或maven都是根据构建脚本构建项目的, 项目中的相关引用都会到仓库(repository)中去查找, 

这里贴出导致上面错误的那个构建文件(相关的部分):


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.0.0' //默认会从本地仓库和远程仓库中查找
    compile 'com.stone.lib:my-lib:1.0.1' //默认引用的是jar,如果要引用aar, 用下面的语句即可
    //compile 'com.stone.lib:my-lib:1.0.1@aar'


}

repositories {
    flatDir { //自定义一个仓库提供查找, 即在构建文件的同级目录libs中查找引用
        dirs 'libs'
    }
}

通过上面报的错误和构建脚本可以看出(需要非常细心哟大笑), 所引用的jar/aar的命名是有一定要求的, 即: "artifactId[-version].jar", 

熟悉maven的朋友一定都知道什么是artifactId的, 不懂的赶紧跟上


总结一下: 

1. 引用的包位置要放对

2. 包的命名要正确

3. 包的格式要正确(包格式出问题相对较少, 但我还是碰到过, 我引用appcompat-v7的aar包时, 出现过这个问题, aar是zip格式的, 我解压后发现里面有aapt目录和annotations.zip等, 其实不应该有这些东西)


当然还是得根据具体情况而定, 根据编译时的提示来定位问题比较容易......









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值