设置并调用一个项目库(is Library)

什么是项目库

项目中要集成其他项目,由于集成项目庞大不想机械的copy,就想将集成的项目做成项目库。这样以后集成项目升级,项目里面升级也方便。

需要注意的事项

1.工作项目和库项目的资源名称,如果名称重复,编译器会优先使用工作项目(也称为子项目)的资源。

2.无法将一个项目库导出为一个jar文件。

3.项目库的android系统版本必须低于或等于工作项目的系统。

4.每一个库项目都会生成一个R文件,工作项目被编译时,将会合并工作项目和项目库的R文件,如果R文件中的敞亮名称同名,将使用工作项目R文件中的常量。如果应用多个项目库,项目库中的R文件有常量重名,将根据项目被应用的顺序确定常量的使用优先级。

5.在AndroidManifest.xml文件中要声明项目库的所有组建。

如何生成项目库

生成项目库有两种方式

1.项目库是一个基本的android项目,所以我们可以像建立一个android项目一样建立一个项目库。

1.File > New >Android Application Project > Next

2.设置 Application Name,Project Name,Package Name

3.在Configure Project页面,勾选上Mark this project as a library选项

4.接下来next完成项目库的创建

2.让一个已经存在的android项目称为一个项目库。

1.在Package Explorer里,右击你想生成项目库的android工程,选

择Properties。

2.在Properties界面,选择Android 。在属性窗口中,选择Android属性

组在左窗格中,然后找到在右窗格中的库属性。

3.选中is Libaray选项,点击Apply,再点击OK关闭Properties界面。

生成项目库后,你会在project.properties文件中发现增加了一行android.library=true

以此可以确定当前的项目已经成功生成为一个项目库了。

如何调用到项目库

1.确保项目库和应用程序项目依赖你的workspace。如果缺少一项,将它

import到你的工作空间里。

2.在Package Explorer里,右击应用程序项目选择Properties.

        

3.Properties界面里,选择Android,在Library属性里Add,打开Project

Selection对话框,选中已经存在的项目库。

4.当对话框关闭后,点击Apply > OK 。

配置成功后,在project.properties会添加一行android.library.reference.1=../你的项目库名

如果你的英文很好的话,可以参考android api

http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

你也可以在下载的sdk里查看

TicTacToeLib  TicTacToeMainl两个项目

路径sdk/samples/android-18/legacy

设置并调用一个项目库(is Library),布布扣,bubuko.com

时间: 2024-10-06 23:19:46

设置并调用一个项目库(is Library)的相关文章

DLL放在指定目录 以及设置dll调用路径

一.DLL放在指定目录 在编写C# winform程序中,不免一个项目会有多个工程文件,而这些工程文件之间是相互引用的,所以不想将工程的生成结果(exe或者dll)放在当前工程bin目录下的Debug目录或者Release目录,而是放在一个公共的目录下,比如DLLImport目录下,如何实现这个工程呢,我们知道,如果是C++,我们可以使用cmake来部署我的项目,同样在c#中也可以实现这样的功能,我们只需在每个工程的“属性”----“生成事件”----“生成后事件命令行”写入如下代码即可: IF

More Effective C++----(12)理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"间的差异

Item M12:理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"间的差异 从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget { ... }; //一个类,具体是什么类 // 在这里并不重要 void f1(Widget w); // 一些函数,其参数分别为 void f2(Widget& w); // Widget, Widget&,或 void f3(const W

C++构造函数的自动调用(调用一个父类的构造函数,有显性调用最好,否则就默认调用无参数的构造函数)——哲学思想:不调用怎么初始化父类的成员数据和VMT?

我总是记不住构造函数的特点,关键还是没有领会那个哲学思想:父类的构造函数一方面要初始化它自己的成员数据,另一方面也要建立它自己的VMT呀!心里默念一百遍:一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VMT,一定调用父类构造函数VM

java多线程下如何调用一个共同的内存单元(调用同一个对象)

1 /* 2 * 关于线程下共享相同的内存单元(包括代码与数据) 3 * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. 4 * 对于Thread(Runnable target)构造方法创建的线程,轮到它来享用CPU资源时. 5 * 目标对象就会自动调用接口中的run()方法 6 * */ 7 8 /* ----------------举例子------------------- */ 9 10 /* 11 * 使用Thread类创建两个模拟猫和狗的线程,猫和狗共享房屋中的一桶

调用一个系统命令,并读取它的输出值(使用QProcess.readAll)

下面我们再看一个更复杂的例子,调用一个系统命令,这里我使用的是 Windows,因此需要调用 dir:如果你是在 Linux 进行编译,就需要改成 ls 了. mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtGui> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWi

KindEditor单独上传图片、单独上传文件、编辑器的通用设置与调用

KindEditor.ready(function(K){ var editor = K.editor({ allowFileManager:true }); // 上传图片 K('#imageBtn').click(function(){ editor.loadPlugin('image', function(){ editor.plugin.imageDialog({ imageUrl:K('#image').val(), clickFn:function(url){ K('#image')

More Effective C++ 条款12 了解”抛出一个exception&quot;与“传递一个参数”或“调用一个虚函数”之间的差异

1. 函数return值与try块throw exception.函数接收参数与catch字句捕获异常相当类似(不仅声明形式相像,函数参数与exception传递方式都有三种:by value,by reference , ). 2. 尽管函数调用与异常抛出相当类似,“从抛出端传递一个exception到catch子句”和“从函数调用端传递一个实参到被调函数参数”仍然大有不同: 1)调用一个函数,控制权会最终回到调用端(除非函数失败以致无法返回),但是抛出一个exception,控制权不会再回到

在C#中我们能调用一个类的私有方法吗

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:在C#中我们能调用一个类的私有方法吗.

视图的URL配置,找不到我设置的第一个Page

问题:视图的URL配置,找不到我设置的第一个Page 我的代码如下: 结果访问/test/时说找不到这个page 原因:patterns方法的参数有两个,一个是prefix,一个是参数元祖,详见下图,因为我的patterns里少加了一个空的'',它将我写的第一个url单过prefix参数了. 解决办法:在patterns中先加入一个参数'',如下图: