如何创建 Android 库

在开发 Android 应用时,我们可以生成一个 AAR 文件,并在不同的 android 项目中使用它。

创建一个 Android 库将节省您编译和运行项目的时间,并且您可以与其他人共享现有的服务、图像、资源、布局。

库使重用现有代码非常方便。

在构建库时,请记住这句话:

如果你想从零开始做一个苹果派,你必须先发明宇宙。” ——卡尔·萨根,《宇宙》

所以让我们开始吧。

创建一个 Android 库

启动过程:

项目设置→打开一个新项目→选择一个空项目模板

这将创建一个空的 Android 项目。

单击 文件 > 新建 > 新模块

在出现的 Create New Module 窗口中,单击 Android Library

然后为您的库命名并为库中的代码选择最低 SDK 版本,然后单击 Finish

库模块出现在左侧的“项目”面板中。

在文件的顶部,如果它不存在,则应包含以下行。

apply plugin: 'com.android.library'

~/woah/build.gradle

plugins {
    id 'org.jetbrains.kotlin.android'
    id 'com.android.library'
}

android {
    compileSdk 31

    compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'androidx.core:core-ktx:1.7.0'
}

尝试简单地 构建 > 重建项目或在终端中执行:

./gradlew assembleRelease 

或 从 Android Studio 的 Gradle 菜单中选择 。assembleRelease

成功构建后,首先切换到左侧面板中的项目视图并如下所示导航。

AAR 文件应出现在~/woah/build/outputs/aar/

AAR 文件可以包含 Android 资源和清单文件,它允许您捆绑共享资源,例如布局和可绘制对象以及 Java 类和方法。

AAR 文件可以包含供应用程序模块的 C/C++ 代码使用的 C/C++ 库。

在您的库模块中实现您的逻辑

让我们编写一个简单的库,当您的应用程序崩溃时显示该库。

interface CrashListener {
    fun onUncaughtException(thread: Thread, throwable: Throwable)
}

object Woah {
    @JvmStatic
    fun init(crashListener: CrashListener) {
        Thread.setDefaultUncaughtExceptionHandler { p0, p1 ->
             crashListener.onUncaughtException(p0, p1)
        }
    }
}

在类上添加 @Keep 可以保护类在优化期间不被 proguard 删除。

不要使用默认资源名称,例如资源中的colorAccentcolorPrimary

默认主机应用程序资源将始终被优先考虑。

如何集成 AAR 库

只需将 AAR 文件移动到 libs 目录即可。

然后在build.gradle文件中添加:

dependencies {
    implementation project(':woah')
    implementation fileTree(dir: "libs", include: ["*.aar"])
    ...
}

结论

在本指南中,我们介绍了创建 Android 库所需的所有步骤。

创建 Android 库的目标应该是开发更易于重用的用户友好界面。

资源:

示例(完整代码)

https://github.com/tkrest/woah

安卓库

https://developer.android.com/studio/projects/android-library

依赖项

https://developer.android.com/studio/build/dependencies

how-to-create-an-android-library