AndroidStudio 使用本地Maven仓库

  1. Android项目直接使用本地aar。
    1. 开发过程中有直接使用本地aar的调试需求,Android Gradle插件目前不支持直接以compile file的形式将aar引入(目前似乎只支持Jar)。查询到的有两种方式:
      1. 在repositories中增加flatDir设定为aar的所在目录,然后通过在dependencies中增加compile(name: ‘aar库的名称’, ext: ‘aar’)来引入。该方法从一些反馈上看是OK的,不过我自己使用的时候发现似乎无效。
      2. local maven方案。本地搭建一个maven仓库。然后项目通过正常的compile的形式引用。该方法测试OK,下面记录一些坑点。
  2. local maven方案的一些注意事项:(一篇不错的关于Android Studio使用maven库的文章: http://blog.bugtags.com/2016/01/27/embrace-android-studio-maven-deploy/)
    1. 只有aar文件在local maven文件夹是不够,按照maven的规范,你至少还需要一个pom(Project Object Model)文件来对库文件进行描述。
    2. pom中的几个关键参数: groupId/artifactId/version/packaging, 这些参数使得查找者可以最终定位库文件的位置,从而取得库文件。
    3. 举个例子:
      • local maven文件夹是 /usr/local/maven。在gradle中,你需要添加一个 maven {url ‘file:////usr/local/maven/’}到repositories中。
      • groupId 是 “tool”
      • artifactId 是 “checker”
      • version 是 “0.0.1-SNAPSHOT”
      • packaging 是 “aar”
      • 那么最终应该有一个名称为 “check-0.0.1-SNAPSHOT.aar”的文件位于 /usr/local/maven/tool/checker/0.0.1-SNAPSHOT目录下,才能使得使用者可以按照 compile (‘tool:checker:0.0.1-SNAPSHOT@aar’)获取到库文件。
      • 可以看出除了packaging,其他所有的属性都参与了路径寻找的过程
      • pom文件也要放在该目录下,并且名称要和库的名称保持一致(除了后缀是.pom), 这里就是check-0.0.1-SNAPSHOT.pom
    4. 路径查找的一个:
      • 如果上面的groupId 是 “com.me.tool”, 那么这个字段对应到路径上会被拆分为三级: com/me/tool.
      • 即上面的例子在这种情况下,库文件所在的目录变成了/usr/local/maven/com/me/tool/checker/0.0.1-SNAPSHOT
  3. 最后附上一个maven相对系统的入门教学: http://www.jianshu.com/p/78c16fc600a9
  4. gradle中生成pom: http://stackoverflow.com/questions/17281927/how-to-make-gradle-generate-a-valid-pom-xml-file-at-the-root-of-a-project-for-ma

你可能感兴趣的:(Android,编译,项目经历)