Gói javascript

Việc tạo ra một ứng dụng có thể hiển thị đẹp trên toàn bộ thiết bị của Android là một kỹ thuật vô cực lớn cho nhà phát triển

Có một giải pháp đó là tách mã nguồn ra thành nhiều phần để tương thích với từng loại thiết bị. Đơn giản như công việc để tài nguyên vào nhiều thư mục khác nhau như. drawable-xxxhdpi, drawable-hdpi…

Điều này vô tình làm cho kích thước tệp apk ngày càng hấp dẫn khi bạn càng muốn hỗ trợ nhiều thiết bị hơn

Nếu bạn đã tìm hiểu về ASO tối ưu thì bạn sẽ hiểu tầm quan trọng của kích thước APK. Kích thước tệp APK cứ tăng thêm 6MB thì tỷ lệ chuyển đổi cài đặt sẽ giảm 1%. Quá khủng khiếp phải không?

Hiểu được điều này, Google đã cho ra đời hai tính năng quan trọng. Android App Bundle và Dynamic Feature giúp bạn có thể giảm kích thước APK

Gói javascript

Android App Bundle là gì?

Trước đây, để xuất bản một ứng dụng Android, bạn có hai lựa chọn

  • Một là, tạo một tệp APK duy nhất giống nhau với tất cả mã và tài nguyên cho tất cả các loại thiết bị Android khác nhau

Gói javascript

  • Hai là, tạo ra nhiều APK nhắm đến các cấu hình máy riêng biệt. Mỗi APK là một phiên bản đầy đủ

Giờ đây, bạn có thêm một lựa chọn thứ 3. Which is. xuất bản 1 gói ứng dụng Android (. aab) and left back section for Google Play

One when you download file. bật lên, Google Play sẽ sử dụng nó để tiến hành các bước sau đây

  • Create Base APK. Tệp này chứa tất cả các mã và tài nguyên cần thiết để chạy các chức năng cơ bản của ứng dụng. Bất kể khi nào người dùng tải xuống ứng dụng, APK cơ sở sẽ được tải xuống lần đầu tiên và các APK tiếp tục hoạt động dựa trên APK cơ sở này
  • Tạo (các) APK cấu hình. Sau khi người dùng tải ứng dụng về, Google Play sẽ sử dụng dịch vụ phân phối động (Dynamic Delivery) để phân phối APK có cấu hình phù hợp với cấu hình thiết bị của người dùng

Lưu ý. Google Play còn có thể tạo ra một hoặc nhiều APK tính năng động

Thường thì, một ứng dụng có một hoặc thậm chí là nhiều tính năng không cần thiết để chạy các chức năng chính. Chẳng hạn, bạn phát triển ứng dụng nhắn tin, nhưng không phải tất cả người dùng đều có nhu cầu sử dụng tính năng ảnh GIF hay biểu tượng cảm xúc

Khi bạn xây dựng Gói ứng dụng, bạn có thể giảm kích thước tệp APK bằng cách phân tách các tính năng thành các mô-đun này để người dùng có thể tải xuống tùy chọn theo yêu cầu

Nếu người dùng yêu cầu bất kỳ mô-đun nào trong đó, dịch vụ phân phối động Dynamic Delivery sẽ phân phối cho người dùng tệp APK chỉ chứa mã và tài nguyên để chạy tính năng đó thôi.

Quá vi phải không?

Gói javascript

Tại sao nên sử dụng App Bundle để xuất bản ứng dụng?

Điểm cộng lớn nhất của Android App Bundles chính là khả năng giảm kích thước tệp APK

Nếu trước đây bạn sử dụng cách thức tạo nhiều APK. Vì vậy, App Bundle sẽ giúp bạn đơn giản hóa quy trình phát triển và phát hành ứng dụng

Công việc của bạn bây giờ chỉ là xây dựng một tập tin. aab and all the job left to Google Play

Tuy nhiên, có một vài giới hạn sau đây

Thứ nhất, các APK được tạo từ App Bundle chỉ có dung lượng tối đa là 100MB

Thêm vào đó, các thiết bị chạy trên nền tảng Android 4. 4 hoặc thấp hơn không hỗ trợ. Do đó, Google Play chỉ có thể cung cấp Gói ứng dụng của bạn dưới dạng nhiều APK

Mặc dù nhiều APK này đã được ưu tiên tối đa cho các màn hình và ABI khác nhau. Nhưng chúng vẫn sẽ chứa các tài nguyên và mã cho từng loại ngôn ngữ mà ứng dụng hỗ trợ

Do vậy, người dùng Android 4. 4 trở về trước sẽ không tiết kiệm được nhiều dung lượng cho lắm

Hướng dẫn tạo ứng dụng hỗ trợ Android App Bundle

Bạn có thể xuất bản một ứng dụng đã có dưới dạng Gói ứng dụng. Nhưng để đơn giản, mình sẽ tạo một dự án hoàn toàn mới, sau đó xây dựng nó để hỗ trợ  App Bundle

To only Google Play Console know main APKs files must create. Please open your project in build file. gradle add block command 

android {
   compileSdkVersion 28
   defaultConfig {
       applicationId "com.jessicathornsby.androidappbundle"
       minSdkVersion 24
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"
       testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
   }

   bundle {

//Generate APKs for devices with different screen densities//

       density {

           enableSplit true
       }

//Generate APKs for devices with different CPU architectures//

       abi {
           enableSplit true

//Create a split APK for each language//

       }
       language {
           enableSplit true
       }
0

android {
   compileSdkVersion 28
   defaultConfig {
       applicationId "com.jessicathornsby.androidappbundle"
       minSdkVersion 24
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"
       testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
   }

   bundle {

//To do//

       }
       }

Trong gói khối, bạn chỉ đơn giản là bật/tắt các tính năng để Google Play biết rằng việc tạo các APK cụ thể có thể hỗ trợ

android {
   compileSdkVersion 28
   defaultConfig {
       applicationId "com.jessicathornsby.androidappbundle"
       minSdkVersion 24
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"
       testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
   }

   bundle {

//Generate APKs for devices with different screen densities//

       density {

           enableSplit true
       }

//Generate APKs for devices with different CPU architectures//

       abi {
           enableSplit true

//Create a split APK for each language//

       }
       language {
           enableSplit true
       }

Cách thử nghiệm Android App Bundle

Để kiểm tra ứng dụng, bạn có thể chọn cách sử dụng APK chung hoặc APK từ Gói

To Deploy a APK from App Bundle, you doing like after

  • Trong Android Studio, bạn chọn  Chạy > Chỉnh sửa cấu hình… trên thanh công cụ
  • Chọn tùy chọn Triển khai, sau đó chọn APK từ gói ứng dụng
  • Cuối cùng nhấn nút Áp dụng

Thêm tính năng theo yêu cầu bằng cách sử dụng Dynamic Delivery

Cho dù đến bước này, bạn hoàn toàn có thể xây dựng được App Bundle. Nhưng mình muốn giới thiệu cho các bạn một tính năng rất hay ho đó là. Dynamic Delivery, to could create module for app

Giao hàng động. Chỉ tải các tính năng trong ứng dụng của bạn khi người dùng cần, tức là theo yêu cầu. Các tính năng này phải có mặt dưới dạng các mô-đun khác nhau trong dự án ứng dụng của bạn

Để tạo mô-đun động, bạn làm như sau

  • Vẫn trong Android Studio, bạn chọn  Tệp > Mới > Mô-đun mới…
  • Bạn tìm đến Dynamic Feature Module, rồi nhấn nút Next

Gói javascript

  • Sau đó mở Mô-đun ứng dụng cơ sở, chọn ứng dụng
  • Tên của mô-đun là dynamic_feature_one, sau đó nhấp vào nút Tiếp theo
  • Để có thể tạo mô-đun Hỗ trợ theo yêu cầu, bạn cần phải bật tính năng này bằng cách đánh dấu vào hộp kiểm. Kích hoạt theo yêu cầu. If your application support Android 4. 4 trở về trước thì bạn cũng cần phải bật cả Fusing
  • Tiếp theo thì bạn điền tiêu đề cho mô-đun. Ví dụ: mình điền là Dynamic Feature One
  • Cuối cùng nhấp vào Kết thúc

Tìm hiểu tính năng Dynamic Feature Module

Sau khi bạn đã hoàn thành việc tạo mô-đun ở bước trên. Giờ bạn đã thêm lớp, bố cục và các nội dung khác như ảnh, phông chữ…vào mô-đun tính năng động vừa tạo

Mình nhắc lại. Trong Android Studio, tất cả sẽ được quản lý theo mô-đun. Các bạn lưu ý rằng mỗi dự án sẽ có ít nhất 1 mô-đun, thư mục ứng dụng mà bạn hay làm cũng chính là một mô-đun

Tuy nhiên, Mô-đun tính năng động có một số điểm khác biệt so với các loại mô-đun. You can check build. gradle hay Manifest file to see the other speciallyently

#1. File Manifest của Dynamic Feature Module

Cũng giống như mô-đun điện thoại/máy tính bảng, tệp kê khai của Mô-đun tính năng động sẽ định nghĩa các đặc điểm, thuộc tính của cả mô-đun

Bạn có thể thấy các thẻ XML trong tệp kê khai có đôi chút khác biệt so với tệp kê khai mà bạn gặp phải hay không?



   

//Whether to include this module in multi-APKs targeting Android 4.4 and earlier//

       
   

#2. file build. phân lớp

Sự khác biệt duy nhất là bạn sử dụng plugin dynamic-feature. Đây là plugin có tất cả các tác vụ Gradle cần thiết để xây dựng Gói ứng dụng, trong đó có mô-đun tính năng động

Ngoài ra, bạn cũng cần lưu ý là tệp bản dựng. gradle nên khai báo mô-đun “ứng dụng” như là phần phụ thuộc

Bạn có thể tham khảo bản dựng tệp. gradle mẫu như bên dưới

apply plugin: 'com.android.dynamic-feature'

android {
   compileSdkVersion 28

   defaultConfig {
       minSdkVersion 24
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"

   }

}

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation project(':app')
}

#3. Bản kê khai của mô-đun tính năng cơ sở

Mỗi khi bạn tạo một mô-đun tính năng động mới, Android Studio sẽ tự động cập nhật vào tệp xây dựng. gradle để liên kết đến mô-đun tính năng động đó

   dynamicFeatures = [":dynamic_feature_one"]
}

Hướng dẫn cách Yêu cầu các tính năng khi chạy ứng dụng

Mỗi khi bạn tạo một mô-đun tính năng động, bạn cần phải thông báo cho người dùng biết cách yêu cầu gọi đến mô-đun đó

Mình lấy ví dụ, bạn xây dựng một ứng dụng giảm cân. Khi người dùng chọn menu “Bài tập nâng cao”. Tại đây, người dùng có thể được yêu cầu tải xuống mô-đun “Bài tập nâng cao” từ cửa hàng Google Play về

Để yêu cầu một mô-đun, bạn cần sử dụng thư viện Google Play Core

Đơn giản là bạn thêm 

android {
   compileSdkVersion 28
   defaultConfig {
       applicationId "com.jessicathornsby.androidappbundle"
       minSdkVersion 24
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"
       testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
   }

   bundle {

//Generate APKs for devices with different screen densities//

       density {

           enableSplit true
       }

//Generate APKs for devices with different CPU architectures//

       abi {
           enableSplit true

//Create a split APK for each language//

       }
       language {
           enableSplit true
       }
1 vào bản dựng. gradle của mô-đun tính năng cơ sở như bên dưới

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:28.0.0'
   implementation 'com.android.support.constraint:constraint-layout:1.1.3'

//Add the following//

   implementation 'com.google.android.play:core:1.3.5'

Tiếp theo, mở Hoạt động hoặc Đoạn mà bạn muốn tải mô-đun tính năng động
Như ví dụ này mình muốn tải ở MainActivity

________số 8_______

Một ứng dụng có thể có nhiều mô-đun. Vì vậy, bạn phải định nghĩa cụ thể mô-đun nào bạn muốn tải xuống. Một yêu cầu cũng có thể tải xuống nhiều mô-đun cùng một lúc cũng được, không sao cả

splitInstallManager
              .startInstall(request)

Cuối cùng thì bạn cần xử lý khi mô-đun tải xuống thành công hay thất bại

              .addOnSuccessListener(new OnSuccessListener() {
                   @Override

//If the module is downloaded successfully...//

                    public void onSuccess(Integer integer) {

//...then do something//

                    }
               })
               .addOnFailureListener(new OnFailureListener() {
                   @Override

//If the module isn’t downloaded successfully….//

                   public void onFailure(Exception e) {

//...then do something//

                   }
               });
   }
}

Mỗi khi bạn cập nhật Gói ứng dụng lên phiên bản mới, Google Play sẽ tự động cập nhật tất cả các APK cần thiết, bao gồm cả APK cho mô-đun tính năng động

Quá trình cập nhật này hoàn toàn tự động, một khi mô-đun đã được người dùng cài đặt thì bạn không cần phải quan tâm đến việc cập nhật cho từng mô-đun

Bật tính năng truy cập tức thì tới Dynamic Feature Modules

Mặc dù vậy, người dùng cần phải khởi động lại ứng dụng trước khi có thể truy cập vào mô-đun vừa cài đặt

Tuy nhiên, bạn có thể bật tính năng truy cập tức thì bằng cách thêm SplitCompatApplication vào trong bảng kê khai của mô-đun “Ứng dụng”



   

Hướng dẫn xuất bản Android App Bundle lên Google Play

Sau tất cả, bạn đã hoàn thành việc phát triển, thử nghiệm mô-đun kỹ năng cao hơn cho ứng dụng. Bây giờ là lúc bạn xuất bản mô-đun đó lên thị trường

Cũng giống như cách bạn phát hành APK để đưa lên Google Play, bạn cũng cần phải tạo một phiên bản với khóa cho Gói ứng dụng

Từ Android Studio

  • Chọn Bản dựng > Tạo gói/APK đã ký
  • Nhớ đánh dấu vào ô. Gói ứng dụng Android
  • Màn hình tiếp theo, bạn chọn ứng dụng
  • Keystore điện, bí danh và mật khẩu, sau đó bấm vào Tiếp theo
  • Chọn thư mục Thư mục đích
  • Select type build is Release
  • Cuối cùng nhấn nút Kết thúc và tận hưởng thành quả

Android Studio sẽ tạo ra App Bundle và lưu tại thư mục AndroidAppBundle/app/release

Tải Android App Bundle lên Google play console

Đăng nhập vào Google play console. Chọn Tạo ứng dụng -> Tạo -> Lưu

Sau đó, từ menu bên trái, bạn chọn Bản phát hành ứng dụng và làm theo hướng dẫn của bảng điều khiển Google Play

Gói javascript

Cũng giống như APK thông thường, Google play hỗ trợ nhiều phiên bản thử nghiệm như alpha, beta before khi chính thức ra thị trường

Tổng kết

Bài viết này khá dài phải không?

Bạn nghĩ sao về cách thức phát triển hành động ứng dụng dạng mô-đun như thế nào?

Nếu thấy bài viết hay thì đừng ngại chia sẻ cho mọi người cùng đọc nhé

Gói javascript

Nhận sách học Flutter qua 65 ứng dụng

​Flutter là nền tảng thiết lập nền tảng đa nền tảng (Android & iOS) do Google chống lưng. Nếu bạn muốn học Flutter thì không nên bỏ qua cuốn sách này. Hiện sách này đang được bán trên Amazon với giá 19,99$ và giờ VNTALKING miễn phí cho bạn


TẢI XUỐNG

Gói javascript

  • THẺ
  • hướng dẫn android
  • tính năng động
  • Tự học lập trình android

Facebook

Twitter

liên kết

Pinterest

WhatsApp

Bài trước Thủ thuật tối ưu tốc độ RecyclerXem lồng nhau

Bài tiếp theo Tạo tính năng xác thực số điện thoại bằng Firebase

sơn dương

Tên đầy đủ là Dương Anh Sơn. Tốt nghiệp ĐH Bách Khoa Hà Nội. Mình bắt đầu nghiệp coder khi mà ra trường đúng là xin được làm đúng chuyên ngành. Mình tin rằng chỉ có chia sẻ kiến ​​thức mới là cách học tập nhanh nhất. Các bạn góp ý bài viết của mình bằng cách comment bên dưới nhé