androidx

       android x 使用,官方有详细blog,可以让自己少踩些坑,介绍了新创建的项目和老项目中如何使用android x,androidx替换的support包中哪些内容,以及提到过渡,会继续在新的supper包28中添加一些androidx中的内容。

If you don't want to switch over to the new androidx and com.google.android.material packages yet, you can use Material Components via the com.android.support:design:28.0.0-alpha1 dependency.

Note: You should not use the com.android.support and com.google.android.material dependencies in your app at the same time.

 ----摘自 :https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md

相关内容:

https://android-developers.googleblog.com/2018/05/hello-world-androidx.html

https://developer.android.com/topic/libraries/support-library/revisions#28-0-0-alpha1

注意如果项目中引用了

compile 'com.google.android.material:material:1.0.0-alpha1'

会同时引入 android x ,会和support 包冲突。

如下文blog :

https://juejin.im/post/5afbd66ef265da0b7d0b8e5f


### 查找 AndroidX 的源码及其内部实现 AndroidXAndroid 官方提供的一组支持库,旨在帮助开发者更轻松地构建兼容性和功能丰富的应用。以下是关于如何查找和理解 AndroidX 源码以及其内部实现的相关信息。 #### 1. **获取 AndroidX 源码** Google 提供了开源的 Android 开发工具链,其中包括 AndroidX 库的源码。可以通过以下方式访问: - **GitHub 上的 AOSP (Android Open Source Project)** 所有 Android 支持库(包括 AndroidX)的源码都可以通过 Google 的官方 GitHub 存储库找到[^5]。存储库地址如下: https://github.com/androidx/androidx 这里包含了各个模块的具体实现细节,例如 `core`, `appcompat`, `lifecycle` 等核心组件。 - **本地调试模式下的 Gradle 配置** 如果希望在开发过程中查看具体类或方法的实现,可以在项目中启用 Java 调试符号表(Source and Debug Symbols)。这通常需要配置项目的 `build.gradle` 文件并下载对应的 `.aar` 或 `.jar` 文件中的源码映射文件。例如,在 `gradle.properties` 中设置以下属性可以强制加载源码: ```properties android.debug.obsoleteApi=true android.enableJetifier=true android.useAndroidX=true ``` #### 2. **分析 AndroidX 的内部实现** 为了深入研究 AndroidX 的工作原理,可以从以下几个方面入手: - **模块化设计** AndroidX 将不同的功能划分为多个独立的子模块,例如 `core-ktx`, `fragment-ktx`, 和 `viewpager2` 等。这些模块分别对应特定的功能领域,并且彼此之间保持低耦合度。这种架构使得开发者可以根据需求灵活选择所需的模块[^6]。 - **Kotlin Extensions (KTX)** 许多现代 AndroidX 组件都提供了 Kotlin 版本扩展函数(即 KTX),它们简化了常见的操作流程。例如,`ContextCompat.getColor()` 方法被封装成更加简洁的形式 `context.color(R.color.some_color)`[^7]。此类优化不仅提高了代码可读性,还减少了样板代码的数量。 - **ProGuard/R8 规则保护关键部分** 在发布版本的应用程序中,某些敏感区域可能受到混淆处理的影响。因此,AndroidX 使用 ProGuard 或 R8 来保留必要的 API 结构不受破坏。典型例子见于 Material Design Components 及 Lifecycle Observers 的定义中[^4]: ```proguard -keep class com.google.android.material.** {;} -keep class androidx.lifecycle.** {;} ``` #### 3. **实际案例解析——CameraX 实现机制** 作为 AndroidX 生态系统的一部分,CameraX 展示了一个复杂但高度抽象化的框架是如何构建起来的。它主要由以下几个层次组成: - **Core Layer**: 提供基础服务接口,比如初始化相机引擎实例。 - **Use Case Layer**: 定义具体的业务场景逻辑单元,如图像捕获 (`ImageCapture`)、预览显示 (`Preview`)。 - **Adapter Layer**: 对接硬件层面上的不同厂商 SDK 差异适配器。 下面是一个简单的 CameraX 初始化片段展示: ```kotlin val preview = Preview.Builder().build() preview.setSurfaceProvider(viewFinder.surfaceProvider) // Bind use cases to lifecycle owner. cameraProvider.bindToLifecycle( this as LifecycleOwner, cameraSelector, preview ) ``` 此代码展示了如何利用生命周期感知型绑定技术来管理资源释放等问题[^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值