当前位置:首页 » 安卓系统 » android库项目

android库项目

发布时间: 2022-08-27 13:03:12

⑴ 如何创建Android库以及Android aar文件详解

创建 Android 库

Android 库在结构上与 Android 应用模块相同。它可以提供构建应用所需的一切内容,包括源代码、资源文件和 Android 清单。不过,Android 库将编译到您可以用作 Android 应用模块依赖项的 Android 归档 (AAR:Android Archive Resource) 文件,而不是在设备上运行的 APK。与 JAR 文件不同,AAR 文件可以包含 Android 资源和一个清单文件,这样,除了 java 类与方法外,您还可以捆绑布局和可绘制对象等共享资源。

库模块在以下情况下非常有用:

  • 构建使用某些相同组件(例如 Activity、服务或 UI 布局)的多个应用。

  • 构建存在多个 APK 变体(例如免费版本和付费版本)的应用并且需要在两种版本中使用相同的核心组件。
    在任何一种情况下,只需要将您希望重用的文件移动到库模块中,然后以依赖项的形式为每个应用模块添加库。本页面将说明如何执行这两个操作。

  • 创建库模块

    要在您的项目中创建一个新的库模块,请按以下步骤操作:
    1、点击** File > New > New Mole。**
    2、在出现的 Create New Mole 窗口中,依次点击** Android Library 和 Next。还存在一个用于创建 Java 库的选项,可以构建传统的 JAR 文件。尽管 JAR 文件在大多数项目中都非常实用(尤其在您希望与其他平台共享代码时),但这种文件不允许您包含 Android 资源或清单文件,而后者对于 Android 项目中的代码重用非常有用。**因此,本指南将侧重论述创建 Android 库。
    3、为您的库命名,并为库中代码选择一个最低的 SDK 版本,然后点击 Finish。

    在 Gradle 项目同步完成后,库模块将显示左侧的 Project 面板中。如果您未看到新模块文件夹,请确保将视图切换为 Android 视图。

    将应用模块转换为库模块

    如果您现有的应用模块包含您希望重用的所有代码,则可以按照以下步骤将其转换为库模块:

    1、打开现有应用模块的 build.gradle 文件。您应在顶部看到以下内容:

  • apply plugin: 'com.android.application'

  • 2、按照下面所示更改插件分配:

  • apply plugin: 'com.android.library'

  • 3、点击 Sync Project with Gradle Files。

    就这么简单。模块的整个结构仍然相同,但是现在它将作为 Android 库运行,构建也将创建一个 AAR 文件,而不是 APK。

    生成aar

    在Android Studio1.4中,New project,先默认新建一个Applicaton mole,接后File > New > New Mole,选择Androd Library > Next,指定Library Name和Mole Name。

    新建的Library与正常的Application最大区别是mole build.gradle中是**apply plugin: ‘com.android.library’ **而不是 apply plugin: 'com.android.application'

    Build > Make project,自动生成aar文件。

    以依赖项形式添加您的库

    要在另一个应用模块中使用您的 Android 库的代码,请按以下步骤操作:

    1、通过两种方式之一将库添加到您的项目(如果您是在相同项目中创建的库模块,则该模块已经存在,您可以跳过此步骤):

  • 添加已编译的 AAR(或 JAR)文件:
    1、点击 File > New Mole。
    2、依次点击 Import .JAR/.AAR Package 和** Next**。
    3、输入 AAR 或 JAR 文件的位置,然后点击 Finish。

  • 将库模块导入到您的项目中:
    1、点击** File > New > Import Mole。**
    2、输入库模块目录的位置,然后点击 Finish。
    库模块将复制到您的项目中,因此您可以尽管编辑库代码。如果您希望维护一个版本的库代码,则此方法可能不是您想要的,您应按照上文所述导入编译的 AAR 文件。

  • 2、确保库列在您 settings.gradle 文件的顶部,如下面名为“my-library-mole”的库所示:

  • include ':app', ':my-library-mole'

  • 3、打开应用模块的 build.gradle 文件,并向 dependencies 块中添加一行新代码,如下面的片段所示:

  • dependencies {

  • compile project(":my-library-mole")

  • }

  • 4、点击 Sync Project with Gradle Files。
    在上面的示例中,名为 my-library- mole 的 Android 库模块成为 build.gradle 文件所在模块的构建依赖项。
    您的应用模块现在可以访问 Android 库中的任何代码和资源,库 AAR 文件在构建时已捆绑到您的 APK 中。
    不过,如果希望单独共享 AAR 文件,则可以在 项目名称/模块名称/build/outputs/aar/ 中找到它,也可以通过点击 Build > Make Project 的方式重新生成此文件。

    选择要设为公开的资源

    库中的所有资源在默认情况下均处于公开状态。要将所有资源隐式设为私有,您必须至少将一个特定的属性定义为公开。资源包括您项目的 res/ 目录中的所有文件,例如图像。要阻止您的库用户访问仅供内部使用的资源,您应通过声明一个或多个公开资源的方式来使用这种自动私有标识机制。

    要删除某个公开资源,请将一个声明添加到您的库的 public.xml文件中。如果您之前尚未添加公开资源,则需要在您的库的 res/values/目录中创建public.xml 文件。

    下面的示例代码可以创建两个名称分别为 mylib_app_name和 mylib_public_string 的公开字符串资源:

  • <resources>

  • <public name="mylib_app_name" type="string"/>

  • <public name="mylib_public_string" type="string"/>

  • </resources>```

  • 如果希望任何资源保持对使用您的库的开发者可见,您应当将其设为公开。例如,尽管 [v7 appcompat 库](https://developer.android.com/topic/libraries/support-library/features.html#v7-appcompat)中的大多数资源都是私有资源,但是为了支持[Material Design](https://developer.android.com/design/material/index.html),控制工具栏小部件的属性应当公开。将属性隐式设为私有不仅可以阻止您的库用户从内部库资源获得代码自动完成建议,还让您能够在不中断您的库客户端的情况下重命名或移除私有资源。私有资源不在代码自动完成和 [Theme Editor](https://developer.android.com/studio/write/theme-editor.html) 的作用范围内,并且如果您尝试引用私有资源,[Lint](https://developer.android.com/studio/write/lint.html) 将显示警告。##开发注意事项在开发您的库模块和相关应用时,请注意以下行为和限制。

  • 将库模块引用添加至您的 Android 应用模块后,您可以设置它们的相对优先级。构建时,库会按照一次一个的方式与应用合并,并按照从低到高的优先级顺序。

  • * **资源合并冲突**

  • 构建工具会将库模块中的资源与相关应用模块的资源合并。如果在两个模块中均定义了给定资源 ID,将使用应用中的资源。

  • 如果多个 AAR 库之间发生冲突,将使用依赖项列表首先列出(位于 dependencies块顶部)的库中的资源。

  • 为了避免常用资源 ID 的资源冲突,请使用在模块(或在所有项目模块)中具有唯一性的前缀或其他一致的命名方案。


  • * **库模块可以包含 JAR 库**

  • 您可以开发一个自身包含 JAR 库的库模块;不过,您需要手动编辑相关应用模块的构建路径,并添加 JAR 文件的路径。


  • * **库模块可以依赖外部 JAR 库**

  • 您可以开发一个依赖于外部库(例如 Maps 外部库)的库模块。在这种情况下,相关应用必须针对包含外部库(例如 Google API 插件)的目标构建。另外也要注意,库模块和相关应用都必须在其清单文件的 [<uses- library>

  • ](https://developer.android.com/guide/topics/manifest/uses-library-element.html) 元素中声明外部库。* **库模块不得包含原始资源**

  • 工具不支持在库模块中使用原始资源文件(保存在 assets/目录中)。应用使用的任何原始资源都必须存储在应用模块自身的 assets/目录中。


  • * **应用模块的 minSdkVersion必须大于或等于库定义的版本**

  • 库作为相关应用模块的一部分编译,因此,库模块中使用的 API 必须与应用模块支持的平台版本兼容。


  • * **每个库模块都会创建自己的 R 类**

  • 在您构建相关应用模块时,库模块将先编译到 AAR 文件中,然后再添加到应用模块中。因此,每个库都有其自己的 R 类,并根据库的软件包名称命名。从主模块和库模块生成的 R 类会在所需的所有软件包(包括主模块的软件包和库的软件包)中创建。


  • * **库模块可能包含自己的 ProGuard 配置文件**

  • 通过将 [ProGuard](https://developer.android.com/studio/build/shrink-code.html) 配置文件添加到包含其 ProGuard 指令的库,您可以在自己的库上启用代码压缩。构建工具会为库模块将此文件嵌入到生成的 AAR 文件中。在您将库添加到应用模块时,库的 ProGuard 文件将附加至应用模块的 ProGuard 配置文件 (proguard.txt)。通过将 ProGuard 文件嵌入到您的库模块中,您可以确保依赖于此库的应用模块不必手动更新其 ProGuard 文件即可使用库。当 ProGuard 在 Android 应用模块上运行时,它会同时使用来自应用模块和库的指令,因此您不应当只在库上运行 ProGuard。

  • 要指定您的库的配置文件名称,请将其添加到 consumerProguardFiles方法中,此方法位于您的库的 build.gradle文件的 defaultConfig块内。例如,以下片段会将 lib-proguard-rules.txt设置为库的 ProGuard 配置文件:

  • android {
    defaultConfig {
    consumerProguardFiles 'lib-proguard-rules.txt'
    }
    ...
    }

  • 默认情况下,应用模块会使用库的发布构建,即使在使用应用模块的调试构建类型时亦是如此。要使用库中不同的构建类型,您必须将依赖项添加到应用的 build.gradle文件的 dependencies块中,并在库的 build.gradle文件中将 publishNonDefault设置为 true。例如,您应用的 build.gradle文件中的以下代码段会使应用在应用模块于调试模式下构建时使用库的调试构建类型,以及在应用模块于发布模式下构建时使用库的发布构建类型:

  • dependencies {
    debugCompile project(path: ':library', configuration: 'debug')
    releaseCompile project(path: ':library', configuration: 'release')
    }

  • 您还必须在自己库的 build.gradle文件的 android 块内添加以下代码行,以便将此库的非发布配置展示给使用它的项目:

  • android {
    ...
    publishNonDefault true
    }```
    不过请注意,设置 publishNonDefault会增加构建时间。
    为了确保您的库的 ProGuard 规则不会将意外的压缩副作用施加到应用模块,请仅包含适当规则,停用不适用于此库的 ProGuard 功能。尝试协助开发者的规则可能会与应用模块或它的其他库中的现有代码冲突,因此不应包含这些规则。例如,您的库的 ProGuard 文件可以指定在应用模块的压缩期间需要保留的代码。

    注:Jack 工具链仅支持 ProGuard 的部分压缩和模糊选项。

    AAR 文件详解

    AAR 文件的文件扩展名为 .aar,Maven 工件类型也应当是 aar。文件本身是一个包含以下强制性条目的 zip文件:

  • /AndroidManifest.xml

  • /classes.jar

  • /res/

  • /R.txt

  • 此外,AAR 文件可能包含以下可选条目中的一个或多个:

  • /assets/

  • /libs/**名称 **.jar

  • /jni/abi 名称 /名称.so(其中 abi 名称是 Android 支持的 ABI 之一)

  • /proguard.txt

  • /lint.jar


⑵ android项目中如何加载已有so库

1,在项目根目录下建立文件夹libs/armeabi文件夹 2,将so库放入libs/armeabi文件夹注意事项: 1,如果采用静态注册的方式请注意C文件中严格按照命名规则Java_packageName_className_method()的方式命名 2,在Android项目中建立同上述命名规则中packageName中相同的包名,在此包名下建立同上述命名规则中className相同的类名 3,在className声明native方法 4,程序中加载so库System.loadLibrary(data/data/xxx.xxx.xxx/lib/xx.so)或者System.loadLibrary(xx),例如:System.loadLibrary(data/data/com.dtBank.app.service/lib/libjnixcld.so);

⑶ android 有哪些第三方库,在哪里,怎么在做项目的过程中知道自己要用到哪些库,求答案

很多很多的第三方库,你想用哪些功能?有很多第三方库都已经被集成到android SDK中了,比如httpclient,可以用来发送http请求,android本身就是一个开源系统,里面用到了很多第三方的开源成熟库,直接调用你需要的类就可以了

⑷ Android项目怎样添加recyclerview库

有多种方式:

1.如图所示:

2:在项目的build.gradle的dependencies{}下加入implementation 'androidx.recyclerview:recyclerview:1.1.0'

3.左上角File ->Project structure ->dependencies -> Alldependencies,然后点击+ 号,点击library dependency,在弹出的窗口中搜索recyclerview然后添加等待sync即可。

望采纳。

⑸ 如何建立与 Android studio和 gradle android 库

在 Eclipse 中我有 3 个项目 (2 个 android 应用程序项目和 1 个 android 库项目)。2 应用程序项目依赖的库项目。当我做 gradle 出口时不工作的 3 项目吧我对重组项目开放但还没找到如何应该这样的任何文档。
有一个能让 3 项目那日食出口工作在一起吗?我更好地关闭重组的事情和如果是如何应该这样的文档吗?
更新
我已将整个项目上载到 GitHub https://github.com/respectTheCode/android-studio-library-example
更新 1
根据建议从帕德玛 · 库马尔 · 这是我已经试过。
创建一个称为的新项目MyApp
单击 File > New Mole ,选择 Android Library 并将其命名MyLib
单击Build > Make Project
生成失败,此错误
Mole "MyLib" was fully rebuilt e to project configuration/dependencies changes
Compilation completed with 1 error and 0 warnings in 19 sec
1 error
0 warnings
/.../MyApp/MyLib/build/bundles/debug/AndroidManifest.xml
Gradle: <manifest> does not have package attribute.
然后,添加 package 特性使它的清单
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
在大厦后出现此错误
Mole "MyApp" was fully rebuilt e to project configuration/dependencies changes
Compilation completed with 2 errors and 0 warnings in 13 sec
2 errors
0 warnings
/.../MyApp/MyLib/src/main/java/com/example/mylib/MainActivity.java
Gradle: package R does not exist
Gradle: package R does not exist
添加依赖关系似乎不该错误产生任何影响。继续从上面
单击File > Project Structure > Moles > MyApp-MyApp
切换到 Dependencies 选项卡
单击 + > Mole Dependency 和挑MyLib
单击 Apply 和OK
单击Build > Make Project
更新 2
根据伊桑这是我们从哪里得到的建议
2 子项目 build.gradle 似乎有了正确的部件的所有和唯一的区别是插件线波纹管是 MyApp/build.gradle 。
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'

dependencies {
compile files('libs/android-support-v4.jar')
}

android {
compileSdkVersion 17
buildToolsVersion "17.0.0"

defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
根项目 build.gradle 是空的因此增加了像这样的两个项目
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
我现在会出现此错误时建设
Gradle:
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/kevin/GitHub/AppPress/MyApp/build.gradle' line: 2
* What went wrong:
A problem occurred evaluating root project 'MyApp'.
> Could not find method compile() for arguments [project ':MyLib'] on root project 'MyApp'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
更新 3
大的感谢伊解决此问题。
添加 compile project(':SubProjects:MyLib') 到MyLib/build.gradle
删除 compile files('libs/android-support-v4.jar') 从MyLib/build.gradle
关闭项目并从 gradle 导入根项目
更新 4
0.1.2 到你现在可以包括 compile "com.android.support:support-v4:13.0.0" 而不是 compile files('libs/android-support-v4.jar') 。因为它来自住友公司专家现在可以包括这在多个项目中没有问题。
buildscript {
repositories {
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}

apply plugin: 'android'

dependencies {
compile "com.android.support:support-v4:13.0.0"

compile project(':SubProjects:MyLib')
}

⑹ android项目中如何加载已有so库

android项目中如何加载已有so库方法:

⑺ 在Android项目中,怎样添加recyclerview库

1.添加RecyclerView Android依赖项
要将RecyclerView Selection库添加到Android Studio项目,请implementation 在app 模块的build.gradle 文件中提及以下依赖项:
1.implementation 'com.android.support:recyclerview-v7:28.0.0'
2.implementation 'com.android.support:recyclerview-selection:28.0.0'
2.创建一个列表
在本教程中,我们将使用一小部分项目,每个项目都包含一个人的姓名和电话号码。
要存储每个列表项的数据,请创建一个名为的Kotlin数据类,Person并为其添加两个属性:name 和phone。
1.data class Person(val name:String,
2. val phone: String)
您现在可以继续Person 在主活动中创建对象列表。
val myList = listOf(
Person("Alice", "555-0111"),
Person("Bob", "555-0119"),
Person("Carol", "555-0141"),
Person("Dan", "555-0155"),
Person("Eric", "555-0180"),
Person("Craig", "555-0145")
)
3.将Recycler视图添加到布局
当然,我们将使用RecyclerView 小部件来显示列表。因此
,在主活动的布局XML文件中添加 标记。

要指定列表项的布局,请创建一个新的XML文件并将其命名为list_item.xml。在其中,添加两个TextView 小部件:一个用于显示名称,另一个用于显示电话号码。如果使用LinearLayout 元素来定位窗口小部件,则XML文件的内容应如下所示:

4.创建一个View Holder
您可以将视图持有者视为一个对象,其中包含对列表项布局中存在的视图的引用。没有它,RecyclerView 窗口小部件将无法有效地呈现列表项。
现在,您需要一个视图持有者,它包含TextView 您在上一步中创建的两个小部件。因此,创建一个扩展RecyclerView.ViewHolder 类的新类,并初始化对其中的小部件的引用。这是如何做:
class MyViewHolder(view: View)
: RecyclerView.ViewHolder(view) {

val name: TextView = view.list_item_name
val phone: TextView = view.list_item_phone

// More code here

}
此外,RecyclerView Selection插件需要一种可以调用以唯一标识所选列表项的方法。理想情况下,此方法属于视图持有者本身。此外,它必须返回ItemDetailsLookup.ItemDetails 类的实例。

⑻ 怎么把Android工程打包成apk

你好
第一步,把普通的android project设置成库项目
库项目也是一个标准的android项目,因此你先创建一个普通的android项目。 这个项目可以起任何的名称,任何的报名,设置其他需要设置的字段等,如图1所示。
接着把项目设置成库项目,步骤如下
在Package Explorer中, 鼠标右键项目文件夹,点击 Properties.
在Properties 窗口, 选择"Android" ,Library 属性显示在右下边.
把"is Library" 单选框选择上,再点击 Apply.
点击 OK 关闭Properties 窗口.
这时,这个项目就变成库项目了。
当然,java项目也可以让其变成一个库项目,非常简单,执行上面的四步。其他程序项目就可以引用库项目了。
图 1.使一个项目为库项目
创建manifest文件
一个库项目的manifest文件也和标准的android应用程序一样,声明所有共享的组件。
比如APIDemo中的TicTacToeLib 这个例子,库项目声明了Activity GameActivity:
<manifest>
...
<application>
...
<activity android:name="GameActivity" />
...
</application>
</manifest>

第二步 引用库项目
如果你开发的应用程序想要包括库项目中的代码和资源,非常简单,引用步骤如下

在Package Explorer中, 鼠标右键项目文件夹,点击 Properties.
在Properties 窗口, 选择"Android" ,Library 属性显示在右下边.
点击Add ,打开了Project Selection 对话框.
从可用库项目列表选择一个项目,然后点击 OK.
对话框关闭之后点击 Apply (在Properties 窗口).
点击 OK 关闭Properties 窗口.

完成以上六步,Eclipse 会重建项目,把库项目中的内容包含进去。 如图2所示
图 2. 让项目引用一个库项目
如果你想增加多个库项目的引用,使用up和down可以设置他们的相对的优先级和合并顺序。工具在合并引用的库的时候顺序是从低优先级(列表的下面)到高优先级(列表的上面)。 如果不只一个库定义了相同的资源ID,这个工具选择资源时会选择高优先级的资源。应用程序自身拥有最高的优先级,自身的资源zThe application itself has highest priority and its resources are always used in preference to identical resource IDs defined in libraries.

在menifest文件中声明库中的组件
在manifest 文件中必须增加对在当前程序中用到的库项目中的所有的组件 。比如,你必须声明任何用到的 <activity>, <service>, <receiver>, <provider>等,<permission>, <uses-library>, 和其他类似的元素。
声明库项目中的组件时,必须使用包含包名的类全名。
在TicTacToeMain 例子中,声明库Activity GameActivity :

<manifest>
...
<application>
...
<activity android:name="com.example.android.tictactoe.library.GameActivity" />
...
</application>
</manifest>

For more information about the manifest file, see the documentation for AndroidManifest.xml.
望采纳祝你好运

热点内容
谷能压缩机 发布:2025-01-13 15:44:30 浏览:412
电脑电脑直连通讯ftp 发布:2025-01-13 15:38:03 浏览:717
nvm存储 发布:2025-01-13 15:36:19 浏览:552
京东架构师缓存经验 发布:2025-01-13 15:33:00 浏览:726
android图片颜色 发布:2025-01-13 15:26:09 浏览:268
国家税务总局电脑服务器 发布:2025-01-13 15:10:24 浏览:596
金立老款机的开机密码是多少 发布:2025-01-13 15:04:45 浏览:456
湖南网上办税初始密码多少 发布:2025-01-13 15:02:49 浏览:417
怎么使用笔记本连接服务器 发布:2025-01-13 15:02:48 浏览:705
长城cs75plus选哪个配置 发布:2025-01-13 14:54:05 浏览:22