Làm sao để ứng dụng Android hỗ trợ Instant App

0
296

Ở bài viết trước, chúng ta đã hiểu được Instant App là gì và cơ chế hoạt hoạt động như thế nào rồi đúng không? Nhưng làm thế nào để ứng dụng Android hỗ trợ Instant app đây?

Bài viết này mình sẽ hướng dẫn các bạn cách để một ứng dụng hỗ trợ Instant app.

Làm sao để ứng dụng Android hỗ trợ Instant App

#1. Để có thể dùng Android hỗ trợ Instant app hãy hiểu về cấu trúc của Instant App

Theo định nghĩa của Google thì cơ bản Instant App được chia làm 4 phần.

#1. Base feature module: Đây là module cơ bản nhất của instant app. Các module khác đều phụ thuộc vào module này.

Base feature module chứa các tài nguyên  chia sẻ như activity, fragment hay layout. Khi bạn build vào một instant app, module này sẽ được build như là feature apk.

Còn khi bạn build cho một ứng dụng đã cài đặt thì module sẽ được cung cấp dưới dạng một thư viện ( AAR file).

#2. Features: Bất kể một ứng dụng nào thì sẽ đều phải có một tính năng gọi là tính năng cốt lõi.

Ví dụ: Ứng dụng bản đồ thì hiển thị bản đồ sẽ là tính năng cốt lõi, các tính năng như tìm đường, phóng to thu nhỏ… sẽ là các tính năng hỗ trợ.

#3. Feature Modules:  Để ứng dụng của bạn có thể cung cấp tính năng theo yêu cầu và tải về khi cần thì bạn cần chia ứng dụng thành những module tính năng độc lập.

Có thể hiểu nó như là plugin, extension của ứng dụng vậy

#4. Feature APKs: Các feature apk sẽ được build từ các feature module và có thể download khi người dùng cần.

Mỗi tính năng của instant app sẽ phải ít nhất một activity đóng vai trò như là entry-point.

Khi người chạy ứng dụng instant app thì entry-point Activity chính là màn hình đầu tiên họ nhìn thấy. Một entry-point activity có thể có một hoặc nhiều tính năng(features)

Để dễ hình dung hơn về cấu trúc của một instant app, chúng ta cùng xem hình bên dưới:

ứng dụng Android hỗ trợ Instant App

Các bạn có thể thấy là cả hai tính năng “Feature1” và “Feature2” đều phụ thuộc/kế thừa từ base feature module.

#2. Cách nâng cấp ứng dụng Android hỗ trợ Instant App

Có nhiều bạn khi đọc về Instant app thì hay thắc mắc là liệu ứng dụng cũ có thể hỗ trợ Instant App hay không? Liệu có phải đập hết đi làm lại từ đầu không?

Rất may cho bạn là Google họ làm rất tốt khoản này. Instant App thực chất chỉ là một phần của ứng dụng Android, có thể coi nó là một tính năng của ứng dụng. Sử dụng Android API, cùng project, cùng bộ source code.

Có thể hiểu Instant app là một bản nâng cấp tính năng cho ứng dụng hiện tại, chứ không phải là ứng dụng mới, độc lập.

Android Studio cung cấp cho bạn đầy đủ công cụ để bạn có thể module hóa ứng dụng hiện có của mình. Chúng ta sẽ cùng nhau thực hiện nâng cấp ứng dụng nhé

Step 1: Tự đưa ra một use case của người dùng mà sử dụng Instant app

Như trong bài viết trước, mình cũng có giới thiệu một số trường hợp mà người dùng sử dụng instant app thì hiệu quả hơn so với cài đặt toàn bộ app.

Nói chung, không phải instant app là tốt cho mọi người trường hợp. Bạn nên nghiên cứu trải nghiệm ứng dụng của bạn, rồi xác định xem use case nào thì sử dụng instant app.

Bạn có thể tham khảo hướng dẫn về trải nghiệm người dùng mà Google cung cấp tại đây nhé

Step 2: Cài đặt môi trường phát triển Instant App

Sau khi bạn đã có được use case cụ thể sử dụng instant app. Công việc tiếp theo là bắt tay vào cài đặt môi trường phát triển instant app

Để có thể phát triển được instant app, bạn cần phải có:

Cài đặt Instant App SDK

Bạn cài đặt Instant App SDK như sau: Từ Android Studio, vào Tools >Android > SDK Manager

Chọn “SDK Tools” tab, rồi chọn cài đặt ” Instant Apps Development SDK ”

Install-Instant-app-SDK

Cài đặt Device hoặc Máy ảo

Bạn có thể phát triển instant apps cho một số devices như:

  • Devices: Nexus 5X, Nexus 6P, Pixel, Pixel XL, Galaxy S7 running Android 6.0 or higher.
  • Emulator: Nexus 5X image running Android 6.0 (API level 23), x86, with Google APIs(You cannot use x86_64 architectures).

>> Đọc thêm: Cài đặt máy ảo Android toàn tập

Step 3: Chuyển source code hiện tại vào một feature module

Ở bước Android hỗ trợ Instant App này, chúng ta sẽ chuyển module hiện có thành feature module có thể chia sẻ độc lập

Sau đó, chúng ta sẽ tạo một base module với tính năng tối thiểu và dependency tới các feature module

Lưu ý: Các bạn nhớ included  các feature module vào Instant App build targets nhé

Đầu tiên, chúng ta sẽ đổi tên module chính “app” thành “app-base”

rename-app-module

Thay đổi kiểu của module

Sau khi đã đổi tên module xong, bạn đổi kiểu của module thành Feature module.

Cách làm như sau:

Bạn vào build.gradle  và đổi com.android.application thành com.android.feature
và xóa nốt dòng applicationId

// replace apply plugin: 'com.android.application'
// with
apply plugin: 'com.android.feature'
 
// remove application id
applicationId "com.google.samples.apps.topeka"

và thêm dòng này

android {
    ...
    baseFeature = true
    ...
}

Sau khi sửa file build.gradle thì bạn cần sync lại gradle là xong.

Step 4: Tạo app apk module để build APK file

Bây giờ bạn chuyển đổi source code thành một library module, để có thể tái sử dụng.

Từ Android Studio vào File -> New Module

Create-Module

Enter application name “app apk”, leave suggested module name (topekaapk).

Điền tên ứng dụng “app apk”, và giữ nguyên module name tên là ” topekaapk ” . Nếu dự án của bạn sử dụng Data Binding, bạn cần chắc chắn appaapk/build.gradle phải được bật data binding

android { 
    ...   
    dataBinding {
        enabled true
    }
}

Thay đổi phần complie dependencies trong  appaapk/build.gradle:

dependencies {
    implementation project(':app-base')
}

Chuyển lại “Project” tab và xóa những file không cần thiết đi

remove-unused-folder

Quay trở lại “Android view” tab và xóa dòng application  trong file: appaapk/src/main/AndroidManifest.xml.

File manifest sẽ chỉ còn đơn giản như sau:

<manifest package="com.foobar"
    xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>

Cuối cùng thì nhấn sync để lại build Gradle và chạy thử ứng dụng

Với những thay đổi trên thì ứng dụng của bạn vẫn hoạt động y như chưa từng thay đổi.

Cứ bình tĩnh nhé

create-feature-module

Bản chất của những thay đổi code ở trên là chuyển một module kiểu cũ thành thành Feature module có thể chia sẻ được

Phần tiếp theo Android hỗ trợ Instant App chúng ta sẽ thêm các Instant app module

Step 5: Tạo instant app APK

Instant app sử dụng feature apks để chia nhỏ ứng dụng thành các module theo từng tính năng.

Có thể hiểu đơn giản là Instant app là tập hợp nhiều feature apks.

Bước đầu tiên, chúng ta cần tạo một module Instant App. Module này chỉ đơn giản là bản đóng gói tất cả các feature module, không nên chưa bất kì code hay resources trong đó

instant-app-structare

Tạo Instant app module

Trong Android Studio, chọn File -> New -> New Module

Create-Instant-app

Cập nhập instantapp/build.gradle lại như bên dưới

android { 
 buildToolsVersion "26.0.1"
}
dependencies {
    implementation project(':app-base')
}

giản chỉ có mỗi  build.gradle file.

Ok, sau đó rebuild lại project để sync gradle. Build -> Rebuild project.

Step 6: Định nghĩa App Links

App links là cách duy nhất để người dùng có thể chạy một instant app. Mỗi entry-point activity sẽ tương ứng với một URL duy nhất.

Để Android hỗ trợ Instant App thì trong Android Studio có một tính năng “App Links Assistant” sẽ , giúp bạn thực hiện điều này

App-Links-Assistant

Từ sidebar, bạn chọn ” Open URL Mapping Editor “:

add-url-intent-filters

Bạn click vào “+” button để tạo một app link mới. Bạn có thể điền các thông số như hình bên dưới.

map-url-to-activity

Đây là chỉ là thông tin minh họa cho app của mình thôi nhé, ứng dụng của bạn có thể khác.

Bạn làm tương tự nếu ứng dụng của bạn hỗ trợ cả https.

Cuối cùng thì bạn có kết quả như sau:

url-to-activity-mapping

Nếu Android Studio yêu cầu sync lại gradle thì bạn cần sync lại nhé

Để bạn có thể build và chạy test thử ứng dụng instant app thì cần cấu hình tiếp

Chọn Run configuration -> “Edit Configurations…”

Edit-Configuration

Để chạy Instant app, bạn vẫn chạy như các app bình thường khác bằng cách click nút Run:

Run-Instant-App

Tổng kết

Như vậy, mình đã hướng dẫn chi tiết để các bạn có thể chuyển đổi ứng dụng Android hỗ trợ Instant App. Về cơ bản, bạn không phải sửa code ứng dụng, chỉ cần cấu hình lại ứng dụng thông qua Android Studio.

Ứng dụng của bạn có hỗ trợ Instant app không? Mình hi vọng sẽ nhận được ý kiến đóng góp của các bạn để bài viết hoàn thiện hơn

Đừng quên like và chia sẻ bài viết ủng hộ mình nhé

Bình luận. Đặt câu hỏi cũng là một cách học

avatar
  Theo dõi bình luận  
Thông báo