将工程作为library供其他工程调用及如何调用和过程中的问题解决

在项目开发的时候通常会用到一些通用的或者相对独立的功能,如下拉刷新列表、扫码等功能,很多人会将这些代码放在要用这些功能的工程中,使得整个工程变得巨大,并且如果多个工程都要使用到这些功能的话,就要每个工程都有一份相同或者类似的代码。因此我们通常有两种做法,一种是将这些功能的代码封装成jar包,然后将其复制到要用的工程中的libs目录即可。还有一种方式,也就是本文所介绍的方式,将这些功能单独建立一个工程,并将工程设置为library,然后在要用到的工程中Add进去即可。

一、将工程作为library供其他工程调用

只需在project .properties文件target=android-x的后面加上一句android.library=true然后重新clean一下即可。

clean后有可能会出现错误,点开看应该是有用到switch的地方出错了,这是sdk版本的问题,只需将switch改为if else即可。

二、如何引用外部工程

1.在需要引用外部工程的工程根目录右击,选择Properties打开,在Properties窗口的左侧找到Android并点击,可以看到右侧的下方就是添加library的地方。

2.点击Add按钮出现Project Selection窗口,在此窗口中会出现工作平台中被编译成library的项目,选中需要引用的工程点击OK按钮,回到Properties窗口,在右侧的下方就能看到刚刚Add进去的工程,如果前方是打钩的就表示引用是没问题的。如果前方是打叉的,应该是被引用的项目换了目录,只要选中那个打叉的library,然后点击Remove按钮将其移除,然后重新Add一次就行了。

网上很多资料说被引用的外部工程需要和需要引用的工程放在同一个目录才行,但本人有引用过不在同一目录的工程,并且也没有问题。


引用了外部工程后,如果clean时出现错误,在Console中的错误提醒是Unable to execute dex: Multiple dex files define…… 这是由于工程中包含多个同一个库(具体库名看Multiple dex files define后面的提醒),这时我们引用了外部工程,所以这两个工程中不能包含相同的外部库,只要将其删掉一个,再clean就没有问题了。


注意:引用的工程和被引用的工程不能包含相同的库,当然不包括android.jar(android SDK)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章