学习笔记 同一project多module引用同一个jar

       同一个项目中多个module存在多个相同命名的jar,且版本不同时易造成引入了jar包但找不到相关的类。这种情况相对来说是比较少的。一般情况下一个工程下只有一个主module,其他的都是library库文件,但也不排斥有这种情况发生。
       先说说我遇到的情况吧:在学习讯飞语音过程中,下载了多个版本的sdk和demo,其中每个module都应该引用各自的Msc.jar。但似乎由于 Android studio限制了一个project只能引入一个同名的jar,因而造成新版本的demo里找不到部分相关的类和方法。

一、查看当前项目引入的jar文件的本地存储路径(即项目中进入jar但jar看不到内容)
       引用后的jar在项目.idea/libraries下会生成以jar包名的xml文件,打开相应文件即可查看相应的路径。 如scmclient项目引用的Msc.jar,其.idea/libraries/Msc.xml内容如下:

     <component name="libraryTable">
        <library name="Msc">
          <CLASSES>
            <root url="jar://$PROJECT_DIR$/scmclient84/libs/Msc.jar!/" />
          </CLASSES>
          <JAVADOC />
          <SOURCES />
        </library>
     </component>

二、解决方法
      (1)将多个module分为多个project,各自引用各自的jar
      (2)将版本高的(一般版本高的都能兼容版本低的)复制到引用的jar的目录下
      (3)这点的原理与(2)相同,直接将相关.idea/libraries/xx.xml里的url改为所需的jar路径

展开阅读全文

没有更多推荐了,返回首页