打包具有依赖关系的Android AAR

时间:2015-01-11 17:34:42

标签: android android-gradle aar

我想将我的图书馆打包成aar。

该库有几个依赖项(通用图像加载器,ORMLite,番石榴......)

它还依赖于我写的另一个库(称之为'库B')。

我有两个问题:

  1. 将使用我的库的每个人都需要根据库的依赖关系(通用图像加载器,ORMLite,番石榴......)添加依赖关系
  2. 我是否需要为“库B”创建一个单独的aar,并且我的lib用户是否有单独的依赖关系?

2 个答案:

答案 0 :(得分:1)

  

每个使用我的库的人都需要根据库的依赖关系(通用图像加载器,ORMLite,番石榴......)添加依赖关系

如果您将AAR作为工件分发到具有适当元数据的存储库(例如,Maven样式的POM文件),则不会。元数据将指向您的依赖项,构建系统(例如,Gradle)将引入依赖项。

  

我是否需要为库B'

创建单独的aar

是的,否则没有人可以访问它,除非您将其删除并将其代码折叠到您的第一个库中。

  

并且我的lib的用户有一个单独的依赖项吗?

请参阅上文,了解如何设置依赖关系。

答案 1 :(得分:0)

你不需要这样做,你只做下一个: 如果你有一个libray有三十个依赖: 你应该让其他人使用你的aar图书馆: 例如:

cytoscape({

container: document.getElementById('cy'),

elements: [ 
{// node Node 1
    group: 'nodes',

    data: {
        id: 'Node 1'
    },

    selected: false,

    selectable: true,

    locked: false,

    grabbable: true,

    selectable: true,

},
{// node Node 2
    group: 'nodes',

    data: {
        id: 'Node 2'
    },

    selected: false,

    selectable: true,

    locked: false,

    grabbable: true,

    selectable: true,

},
{// node Node 3
    group: 'nodes',

    data: {
        id: 'Node 3'
    },

    selected: false,

    selectable: true,

    locked: false,

    grabbable: true,

    selectable: true,

},
{// edge 1_2
    group: 'edges',

    data: {
        id: '1_2',
        source: '1',
        target: '2'
    }
},
{// edge 2_3
    group: 'edges',

    data: {
        id: '2_3',
        source: '2',
        target: '3'
    }
},
{// edge 3_1
    group: 'edges',

    data: {
        id: '3_1',
        source: '3',
        target: '1'
    }
}
],
style: [
    {
        selector: 'node',
        style: {
            'content': 'data(id)'
        }
    }
]

});

compile('com.android:com.android.download:1.3')

如果您的aar libray没有三十个依赖项:

compile('com.android:com.android.download:1.3@aar'){
       transitive = true
}

总之:@aar与传递的默认保险库

存在冲突