`

Android 引用外部项目库

 
阅读更多

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

集成步骤和方法:
1.库项目的结构一个库项目是一个包含了源码和资源的项目,它可以被其他的项目引用,从而让其他项目使用它包含的代码和资源。多个Android应用程序项目可以引用同一个库项目,同一个Android应用程序项目也可以引用多个库项目。

2.库项目创建和使用

库项目就是一个完整的android项目我们只需要配置一下他的lib属性就可以了就可以作为一个lib项目来使用。步骤:右键需要作为lib的项目---》Properties---》android----》

Library----在isLibrary的前面勾选复选框即可。

Android <wbr>引用外部项目库笔记

我们在其它android的项目中怎么使用库项目了?,也很简单:

跟上面的步骤一样,只是在Library中不是选择Is Library 而是 add 添加一个Lib项目

例:

Android <wbr>引用外部项目库笔记

 

lib项目中使用的过程中需要注意的事

在使用库项目的时候,因为Android项目结构及编译工具的特殊性,我们需要注意一些要点,列举如下:

1.工作项目和库项目的资源名称,如果名称重复,编译器会优先使用工作项目(也称为子项目)的资源,这个特点在项目中也可以利用,比如自己想要替换资源文件的东西,只需要命名相同就可以了;

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

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

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

 

库项目使用的场景

库项目确实为重复代码代码带来了很大的好处。但是并不是什么情况下都是适用的,就像前面提到的适合做一些特定逻辑上的处理,比如新浪微博我们开发新浪的一些功能可以使用新浪微我们提供的lib项目,它里面主要封装了一些接口的操作。我们只需要调用就可以了,这种场景库项目来对指定的接口完成指定的事情。如果使用同一个lib项目时接口有很大的改变就不适合使用lib,因为在lib项目中封装的逻辑处理是不能改变的包括接口的调用。和异常的一些处理。我们必须之前做好足够的设计。在对各种android的控件定义格式的尽量使用style来完成,来方便不同子项目来调用同一个库项目修改控件属性的修改性。

 

最后说一下资源冲突问题有上面注意点:

1.工作项目和库项目的资源名称,如果名称重复,编译器会优先使用工作项目(也称为子项目)的资源,这个特点在项目中也可以利用,比如自己想要替换资源文件的东西,只需要命名相同就可以了;

我们知道本项目的优先级最高。但要注意一点的是string里面的国际化问题。一般集成的项目都很完善国际化分辨率什么的都支持,自然自己的项目就支持了这些功能,这样就会出现你在string里面定义了一个key跟项目库里面的key一样但结果值缺以项目库的为准的现象,为什么?因为手机去找value-zn(一般手机默认是语言是中文)的资源了,由于你本来项目里面没有国际化,所以自然去项目库里面找资源了,最容易出现的问题就是app_name总是项目库的名字。

 
还有一点要提醒的是
在清单文件中声明库组件
在应用项目的清单文件中,你必须加入应用使用、从库项目输出的所有组件的声明。例如,你必须声明全部的<activity>,<service>,<receiver>,<provider>等等,及<permission>,<uses-library>,和类似的元素。必须通过它们的包全名来声明引用的库组件。简单的说就是AndroidManifest.xml文件是要从项目库里面都copy过来的。copy过来的activity等标签包名要写全名例如:
<activity
android:name="org.sipdroid.sipua.ui.InCallScreen"
android:excludeFromRecents="true"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:taskAffinity="" >
</activity>
分享到:
评论

相关推荐

    qt-android调用静态库和动态库例子

    在Android平台上进行Qt开发时,有时我们需要调用C++库来扩展功能,这些...通过以上步骤,你应该能够在Qt for Android项目中成功地调用静态库和动态库。记得在开发过程中进行充分的测试,确保在不同设备上都能正常运行。

    Eigen数学库Android Studio项目模版

    在Android项目中,我们通常通过以下步骤引入外部库: 1. **添加依赖**:在`app/build.gradle`文件中,你需要添加对Eigen库的依赖。由于Eigen不是Android平台的标准库,因此可能需要将库源代码作为本地库包含进来,...

    Android Studio 的调用VLCLib

    "Android Studio的调用VLCLib"就是一个关于如何在Android Studio中集成并使用VideoLAN的VLC库来播放视频流的实践案例。VLC是一款开源、跨平台的多媒体播放器,其强大的功能和广泛的设备支持使其成为许多开发者的选择...

    Android引用包含远程依赖库的aar(引用aar时找不到arr的远程依赖库问题)

    Android引用包含远程依赖库的aar(引用aar时找不到arr的远程依赖库问题); aar引用很简单,将sdk-zhousf-1.0-20170907.054540-1.aar复制到libs包下,在项目的build.gradle文件中增加以下代码即可: compile(name:'sdk-...

    android外部存储

    - 若要创建公开的媒体文件,如图片、音频或视频,应使用`MediaStore`的内容提供者,并调用`ContentResolver.insert()`来保存文件,这样系统会自动更新媒体库。 3. **权限管理**: - 自Android 6.0(API级别23)起...

    android studio调用API登录注册DEMO

    1. **网络请求库**:在Android中,由于安全性和性能考虑,直接在主线程进行网络操作是不允许的。因此,我们需要使用如Retrofit、Volley或OkHttp等网络请求库。Retrofit是一款流行的HTTP客户端,它可以方便地将网络...

    AndroidStudio 上编译speex库,进行使用

    下载完成后,将源代码导入到Android Studio项目的外部库目录下。 3. **设置CMake** Android Studio从3.0版本开始支持CMake构建原生库。在`build.gradle`文件(Module级别)中添加以下配置: ```groovy ...

    编译后的android各平台fftw静态库

    静态库在编译时会被链接到目标代码中,生成的可执行文件不依赖于外部库;动态库则在运行时被加载,需要对应的动态链接库文件。本压缩包提供的FFTW库为静态库形式,意味着开发者在构建Android应用时,可以直接将库...

    Android开发小项目

    在Android开发领域,小项目是学习和巩固技术的绝佳途径,尤其对于文件上传和下载这样的实用功能。在“Android开发小项目”中,我们将探讨如何在Android应用中实现这两个核心功能,这对于创建任何需要与服务器交互的...

    Android平台最新opencv静态库

    对于NDK-Build,你需要在Android.mk文件中添加相应的库引用。 3. **编写JNI代码**:通过Java Native Interface (JNI)调用OpenCV的C++接口。这需要创建C++源文件并编写JNI函数,然后在Java层调用这些函数。 4. **...

    命令行方式打包带有库项目(libraryProject)引用的Android项目用脚本

    使用命令行工具对Android项目进行打包签名和生成,涉及的技术有支持引入第三方jar包,支持项目引用库项目进行资源共享。 此脚本为三个文件,是在Sodino公开的脚本上进行修改而来。第一个为生成中间文件,第二个为...

    android项目及说明

    3. **外部库**:`.jar`或`.aar`文件,或者在`dependencies`块中声明的Gradle依赖,这些都是项目运行所必需的库。 4. **资源文件**:包括图片、音频、布局XML等,这些是构成Android应用用户界面的关键元素。 5. **...

    android curl 动态库

    这个"android curl 动态库"项目就是为了解决这个问题,它是一个用C++编写的动态库,可以被Java代码调用,实现了Curl的功能,便于在Android应用中进行网络通信。 首先,我们需要理解动态库在Android中的概念。...

    初学者学习android项目

    在“引入jar包”的项目中,学习者可以了解如何管理外部依赖,以及这些库如何增强应用的功能,例如OkHttp用于高效网络请求,Gson用于JSON数据解析,Retrofit则提供了更简洁的网络接口调用方式。 3. **设计模式**:在...

    Android调用系统相机、相册实现拍照、图片多选Demo移动开发

    在Android应用开发中,调用系统相机和相册是常见的需求,这通常涉及到用户与设备媒体库的交互。本文将详细讲解如何不依赖第三方库,仅使用Android原生API实现拍照和图片多选功能。 首先,调用系统相机拍摄照片。在...

    Android调用百度地图

    在Android开发中,集成外部应用服务是常见的需求之一,其中百度地图API的使用就是一个典型的例子。本教程将详细讲解如何在Android应用中调用百度地图,并实现Activity和Fragment中的定位功能。 首先,我们需要在...

    Android调用摄像头拍摄并上传视频源码.rar

    这个名为"Android调用摄像头拍摄并上传视频源码.rar"的压缩包可能包含了一个完整的示例项目,用于演示如何实现这一过程。下面将详细解释这一过程中涉及的关键知识点。 1. **启动摄像头** Android提供了`android....

    android FFmpeg库 .SO库文件(版本:4.1.3)

    编译完成后,使用NDK的`ndk-build`或CMake构建系统将库链接到Android项目中。 5. **API使用** 在Android应用中,通过JNI(Java Native Interface)调用FFmpeg库函数。创建JNI接口,将Java方法映射到C/C++代码,...

    是一个拟音乐的Android项目

    在Android Studio中,项目的结构通常包括多个模块,如主应用程序模块、库模块等。根据压缩包文件名WLMusicPlay推测,这可能是项目的主要应用程序模块。在该模块中,开发者可能包含了UI界面的设计,如使用`...

    Android创建外部lib库及自定义View的图文教程

    总结一下,创建Android外部lib库的步骤包括创建新的Android Library module、添加必要的代码和资源,然后在主应用中引用。而自定义View则涉及到创建新的View类、定义属性、实现构造方法和属性绑定。这两个过程都是...

Global site tag (gtag.js) - Google Analytics