54、Android开发:App Links、生物识别认证与App Bundle全解析

Android开发:App Links、生物识别认证与App Bundle全解析

1. Android Studio App Links教程

在Android应用开发中,App Links可以让应用直接处理特定的网页链接,为用户提供无缝的体验。下面详细介绍实现App Links支持的步骤。

1.1 处理App Links的代码实现

onCreate 方法中,我们可以处理App Links的意图。以下是示例代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ATTENTION: This was auto-generated to handle app links.
    Intent appLinkIntent = getIntent();
    String appLinkAction = appLinkIntent.getAction();
    Uri appLinkData = appLinkIntent.getData();

    if (appLinkAction != null) {
        if (appLinkAction.equals("android.intent.action.VIEW")) {
            String landmarkId = appLinkData.getLastPathSegment();
            if (landmarkId != null) {
                displayLandmark(landmarkId);
            }
        }
    } else {
        handleIntent(appLinkIntent);
    }
}

上述代码的逻辑如下:
1. 获取当前的意图 appLinkIntent
2. 检查意图的动作 appLinkAction 是否为 android.intent.action.VIEW
3. 如果是,则提取 Uri 路径的最后一个组件作为地标ID,并调用 displayLandmark 方法显示相关信息。
4. 如果动作字符串为空,则调用 handleIntent 方法从意图数据中提取ID。

1.2 测试应用

在设备或模拟器上运行应用,确保仍然可以搜索示例地标。如果为App Links指定了自己的网站URL,可以通过创建和安装Digital Asset Links文件进一步测试。

1.3 创建Digital Asset Links文件

为了完全支持App Links,需要在App Link引用的网站上安装Digital Asset Links文件。具体步骤如下:
1. 找到 debug.keystore 文件并识别SHA256指纹。
2. 在网页浏览器中打开 数字资产链接生成器
3. 在“Hosting site domain”字段中输入网站URL,在“App package name”字段中输入 com.ebookfrenzy.applinking ,在“App package fingerprint (SHA256)”字段中输入SHA256指纹。
4. 点击“Generate statement”按钮生成声明,并将其放在Web服务器上名为 .well-known 的文件夹中的 assetlinks.json 文件中。
5. 返回生成器页面,点击“Test statement”按钮验证文件是否位于正确的位置。

1.4 测试App Link

返回App Links Assistant面板,点击“Test App Links”按钮。当提示输入要测试的URL时,输入伦敦桥地标ID的URL(使用App Link映射中引用的域名),然后点击“Run Test”按钮。点击按钮后,设备或模拟器上应启动地标活动并显示有关伦敦桥的信息。

2. Android生物识别认证教程

随着技术的发展,生物识别认证在Android设备上变得越来越普遍。下面介绍如何在Android应用项目中实现基于指纹的生物识别认证。

2.1 生物识别认证概述

生物识别认证的关键组件是 BiometricPrompt 类。该类可以显示标准对话框引导用户完成认证过程,执行认证并将结果报告给应用。它还处理过多的认证失败尝试,并在用户再次尝试之前强制执行超时。 BiometricPrompt 类包含一个 Builder 类,用于配置和创建 BiometricPrompt 实例,包括定义生物识别认证对话框中显示的文本和自定义取消按钮。

2.2 创建生物识别认证项目

创建一个新的项目,选择“Empty Views Activity”模板,将项目命名为 BiometricDemo ,包名指定为 com.ebookfrenzy.biometricdemo 。在点击“Finish”按钮之前,将最低API级别设置为API 29: Android (Q),语言选择Java。

2.3 配置设备指纹认证

指纹认证仅适用于包含触摸传感器且已采取适当配置步骤来保护设备并注册至少一个指纹的设备。在物理设备上配置指纹认证的步骤如下:
1. 打开“Settings”应用,选择“Security”选项。
2. 在安全设置屏幕中,选择“Fingerprint”选项。
3. 在出现的信息屏幕上点击“Next”按钮,进入指纹设置屏幕。
4. 在启用指纹安全之前,必须配置备份屏幕解锁方法(如PIN)。如果锁屏未受保护,请按照步骤配置PIN、图案或密码安全。
5. 锁屏受保护后,进入指纹检测屏幕,在提示时触摸传感器,如有需要,重复此过程以添加更多指纹。

2.4 添加生物识别权限到清单文件

生物识别认证需要应用在项目清单文件中请求 USE_BIOMETRIC 权限。在Android Studio项目工具窗口中,找到并编辑 app -> manifests -> AndroidManifest.xml 文件,添加以下权限请求:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ebookfrenzy.biometricdemo">

    <uses-permission
        android:name="android.permission.USE_BIOMETRIC" />
</manifest>
2.5 设计用户界面

为了使示例尽可能简单,用户界面中唯一的可视元素将是一个按钮视图。具体操作如下:
1. 找到并选择 activity_main.xml 布局资源文件,将其加载到布局编辑器工具中。
2. 删除示例 TextView 对象,从调色板的“Common”类别中拖放一个按钮对象,并将其放置在布局画布的中心。
3. 使用属性工具窗口,将按钮的文本属性更改为“Authenticate”,并将字符串提取到资源中。
4. 配置 onClick 属性以调用名为 authenticateUser 的方法。

2.6 添加Toast便捷方法

为了避免多次重复相同的Toast代码,我们可以添加一个便捷方法 notifyUser 来显示Toast消息。在 MainActivity.java 文件中添加以下方法:

import android.widget.Toast;

private void notifyUser(String message) {
    Toast.makeText(this,
            message,
            Toast.LENGTH_LONG).show();
}
2.7 检查安全设置

在尝试进行指纹认证之前,需要确保设备的锁屏已配置且指纹已注册。在 MainActivity.java 文件的 onCreate 方法中添加以下代码:

package com.ebookfrenzy.biometricdemo;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import android.widget.Toast;
import android.Manifest;
import android.content.pm.PackageManager;
import android.app.KeyguardManager;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_biometric_demo); 
        checkBiometricSupport();
    }

    private void checkBiometricSupport() {
        KeyguardManager keyguardManager =
                (KeyguardManager) getSystemService(KEYGUARD_SERVICE);

        if (!keyguardManager.isKeyguardSecure()) {
            notifyUser("Lock screen security not enabled in Settings");
        }

        if (ActivityCompat.checkSelfPermission(this,
                Manifest.permission.USE_BIOMETRIC) !=
                PackageManager.PERMISSION_GRANTED) {
            notifyUser("Fingerprint authentication permission not enabled");
        }
    }
}

上述代码使用 KeyguardManager 验证是否配置了备份屏幕解锁方法,使用 PackageManager 验证应用是否具有生物识别权限。

2.8 配置认证回调

当配置生物识别提示对话框时,需要为其分配一组认证回调方法,以便在认证过程成功或失败时通知应用。在 MainActivity.java 文件中添加以下方法:

import android.hardware.biometrics.BiometricPrompt;

private BiometricPrompt.AuthenticationCallback getAuthenticationCallback() {
    return new BiometricPrompt.AuthenticationCallback() {
        @Override
        public void onAuthenticationError(int errorCode, 
                                        CharSequence errString) {
            notifyUser("Authentication error: " + errString);
            super.onAuthenticationError(errorCode, errString);
        }

        @Override
        public void onAuthenticationHelp(int helpCode, 
                                     CharSequence helpString) {
            super.onAuthenticationHelp(helpCode, helpString);
        }

        @Override
        public void onAuthenticationFailed() {
            super.onAuthenticationFailed();
        }

        @Override
        public void onAuthenticationSucceeded(
                    BiometricPrompt.AuthenticationResult result) {
            notifyUser("Authentication Succeeded");
            super.onAuthenticationSucceeded(result);
        }
    };
}
2.9 添加取消信号

为了让应用能够取消生物识别认证操作,我们需要创建一个 CancellationSignal 实例并传递给认证过程。在 MainActivity.java 文件中添加以下方法:

import android.os.CancellationSignal;

private CancellationSignal cancellationSignal;

private CancellationSignal getCancellationSignal() {
    cancellationSignal = new CancellationSignal();
    cancellationSignal.setOnCancelListener(() ->
            notifyUser("Cancelled via signal"));
    return cancellationSignal;
}
2.10 启动生物识别提示

最后,在 authenticateUser 方法中添加代码来创建和配置 BiometricPrompt 实例并启动认证。以下是示例代码:

import android.view.View;

public void authenticateUser(View view) {
    BiometricPrompt biometricPrompt = new BiometricPrompt.Builder(this)
            .setTitle("Biometric Demo")
            .setSubtitle("Authentication is required to continue")
            .setDescription("This app uses biometric authentication to protect your data.")
            .setNegativeButton("Cancel", this.getMainExecutor(),
                    (dialogInterface, i) -> 
                       notifyUser("Authentication cancelled"))
            .build();

    biometricPrompt.authenticate(getCancellationSignal(), getMainExecutor(),
            getAuthenticationCallback());
}
2.11 测试项目

完成项目后,在物理Android设备或模拟器会话上运行应用,点击“Authenticate”按钮显示生物识别提示对话框。可以通过触摸指纹传感器或使用模拟器的扩展控制面板来模拟指纹触摸。测试不同的情况,如使用已注册和未注册的指纹进行认证,点击对话框外取消认证,点击取消按钮等,验证认证过程和回调方法的正确性。

3. 创建、测试和上传Android App Bundle

当Android应用的开发工作完成并在各种Android设备上进行测试后,下一步是准备将应用提交到Google Play。在提交之前,需要将应用打包并使用私钥签名。下面详细介绍相关步骤。

3.1 发布准备过程

与测试和调试模式不同,将应用发布到Google Play需要额外的步骤:
1. 以发布模式编译应用,而不是调试模式。
2. 使用私钥对应用进行签名,以唯一标识你作为应用的开发者。
3. 将应用打包成Android App Bundle。

虽然这些任务可以在Android Studio环境之外执行,但使用Android Studio的构建机制可以更轻松地完成这些任务。

3.2 Android App Bundles

在引入Android Studio 3.2之前,开发者需要生成一个或多个APK文件并上传到Google Play。支持多种设备类型、屏幕尺寸和语言环境需要为每个目标设备和语言环境创建和上传多个定制的APK文件,或者生成一个包含所有不同配置资源和平台二进制文件的大型通用APK。这两种方法都存在一些问题,如工作量大、更新时重复操作、APK文件过大导致下载时间长和转化率低等。

Android App Bundles解决了这些问题。它是一个ZIP文件,包含为应用项目中支持的设备和语言环境构建APK文件所需的所有文件。当用户安装应用时,Google Play会根据设备信息(如显示屏、处理器架构和语言环境)自动生成并传输适当的APK文件到用户设备。此外,动态交付还允许将应用拆分为多个模块,每个模块包含应用特定功能区域的代码和资源,只有在用户需要时才下载到设备上。

3.3 注册Google Play开发者控制台账户

要将应用提交到Google Play,首先需要创建一个Google Play开发者控制台账户。具体步骤如下:
1. 访问 注册页面 ,按照说明完成注册过程。注册需要一次性支付25美元的费用。
2. 应用上架销售后,Google将保留应用相关收入的30%。
3. 创建账户后,可以通过 开发者控制台 访问。

3.4 收集应用信息

在提交应用之前,需要收集以下信息:
| 信息类型 | 详细说明 |
| ---- | ---- |
| 标题 | 应用的标题 |
| 简短描述 | 最多80个单词描述应用 |
| 完整描述 | 最多4000个单词描述应用 |
| 截图 | 最多8张应用运行截图(至少需要2张),Google建议提交应用在7英寸或10英寸平板电脑上运行的截图 |
| 语言 | 应用的语言(默认是美国英语) |
| 促销文本 | 应用在Google Play环境中的特殊促销功能中显示的文本 |
| 应用类型 | 应用是游戏还是普通应用 |
| 类别 | 最能描述应用的类别(如金融、健康和健身、教育、体育等) |
| 位置 | 希望应用在哪些地理位置可供购买 |
| 联系详情 | 用户可以通过哪些方式联系你获取应用支持,选项包括网站、电子邮件和电话 |
| 定价与分发 | 应用的价格和销售的地理位置信息 |

收集完上述信息后,在Google Play控制台中点击“Create app”按钮开始提交应用。

通过以上步骤,我们可以在Android应用中实现App Links支持、生物识别认证,并将应用打包成App Bundle提交到Google Play,为用户提供更好的体验。

Android开发:App Links、生物识别认证与App Bundle全解析

4. 总结与流程梳理

为了更清晰地理解整个Android应用开发、认证以及发布的流程,下面通过一个mermaid流程图展示主要步骤:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始开发]):::startend --> B(实现App Links):::process
    B --> C(实现生物识别认证):::process
    C --> D(完成开发与测试):::process
    D --> E{是否通过测试?}:::decision
    E -->|是| F(准备发布):::process
    E -->|否| D
    F --> G(注册Google Play账户):::process
    G --> H(收集应用信息):::process
    H --> I(打包成App Bundle):::process
    I --> J(签名应用):::process
    J --> K(上传到Google Play):::process
    K --> L([发布完成]):::startend

这个流程图展示了从应用开发的起点到最终发布的整个过程。下面对各个关键步骤进行详细总结:

  • App Links实现 :在 onCreate 方法中处理App Links意图,提取地标ID并显示相关信息。通过创建和安装Digital Asset Links文件确保App Links的完整支持,并进行测试以验证功能。
  • 生物识别认证实现 :创建生物识别认证项目,配置设备指纹认证,添加生物识别权限到清单文件。设计用户界面,添加Toast便捷方法,检查安全设置,配置认证回调和取消信号,最后启动生物识别提示并进行测试。
  • App Bundle发布 :以发布模式编译应用,使用私钥签名,将应用打包成Android App Bundle。注册Google Play开发者控制台账户,收集应用信息,然后上传App Bundle到Google Play。
5. 常见问题与解决方案

在开发和发布过程中,可能会遇到一些常见问题,下面是一些问题及对应的解决方案:

问题描述 解决方案
App Links无法正常工作 检查Digital Asset Links文件是否正确配置和安装,确保URL映射和意图过滤器设置正确。
生物识别认证失败 检查设备是否支持指纹认证,是否已注册指纹,以及应用是否具有生物识别权限。
App Bundle上传失败 检查私钥签名是否正确,应用信息是否完整准确,以及Google Play开发者控制台账户是否正常。
6. 最佳实践建议

为了提高开发效率和应用质量,以下是一些最佳实践建议:
- 代码优化 :在实现App Links和生物识别认证时,遵循代码规范,使用注释和模块化设计,提高代码的可读性和可维护性。
- 测试覆盖 :在不同的设备和环境下进行充分的测试,包括App Links的各种URL情况、生物识别认证的不同指纹和操作场景,以及App Bundle在不同设备上的安装和运行情况。
- 用户体验 :在生物识别认证过程中,提供清晰的提示信息和友好的界面,确保用户能够顺利完成认证。在App Links处理中,确保链接能够快速准确地打开应用并显示相关内容。

7. 未来趋势展望

随着技术的不断发展,Android开发领域也在不断演进。未来,生物识别认证可能会更加多样化,除了指纹识别和面部识别,可能会出现更多的生物特征识别方式,如虹膜识别、静脉识别等。App Links的应用场景也可能会更加广泛,与更多的网站和服务进行深度集成。同时,Android App Bundle的动态交付功能可能会进一步优化,为开发者和用户带来更好的体验。

通过本文的介绍,我们详细了解了Android应用开发中App Links、生物识别认证和App Bundle的实现和发布过程。希望这些内容能够帮助开发者更好地掌握相关技术,开发出高质量的Android应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值