Tăng Tốc độ build trong Android Studio

Đăng bởi: Admin | Lượt xem: 3795 | Chuyên mục: Android

Android Studio build chậm ? bạn là người mới ? và không biết cách tối ưu công cụ phát triển con robot xanh này ? hãy đọc bài viết của chúng tôi nó sẽ giúp bạn trả lời những câu hỏi đó


1. Giới thiệu

Sau thời gian trải nghiệm Android studio, IDE mới dành cho lập trình viên Android của Google, tôi cảm nhận sự tiện dụng rõ rệt mà Android studio mang lại so với môi trường Eclipse. Cảm ơn Google đã mang lại cho chúng tôi công cụ tuyệt vời này.

Tuy nhiên nhược điểm lớn của Android studio trong những phiên bản mới ra mắt này là tốc độ build khá chậm, có lập trình viên đã kêu trời vì phải mất cả vài phút cho việc ngồi chờ build code. Trong phạm vi bài viết này, tôi trình bày một vài phương pháp để giải quyết vấn đề trên.

2. Những vấn đề đối với hệ điều hành

Đối với hầu hết các lập trình viên Android vấn đề khó khăn đầu tiên khi bắt đầu học Android không chỉ là khó khăn về ngôn ngữ lập trình, kiến thức Android, song hành với nó là câu hỏi : Tại sao Android Studio lại build lâu đến thế. Để trả lời được câu hỏi này rất khó vì có rất nhiều yếu tố ảnh hưởng tới tốc độ “build”của Android Studio như : thiếu Ram, Chip yếu, mạng internet chậm khiến quá trình load thư viện chậm gây nhầm tưởng là do máy yếu … ngoài các yếu tố trên trong phần này mình sẽ mô tả 1 yếu tố thường gặp nhất mà các bạn không ngờ tới là tác nhân gây “build” chậm đó chính là trình Antivirus trên hệ điều hành Windows.

Để giải thích tại sao trình Antivirus lại gây ảnh hưởng tốc độ build của Android Studio, chúng ta tưởng tượng như sau :

Trong quá trình build 1 project Android, Android Studio sẽ tạo ra rất nhiều file cache, các tệp liên quan và ghi chúng lên bộ nhớ. Khi nào trình Antivirus sẽ tự động cập nhật và kiểm tra các tệp này xem chúng có đảm bảo an toàn không. Chính quá trình này khiến Android Studio chậm hơn rất nhiều do phải đợi quá trình Antivirus kiểm tra kết thúc.

Để khác phục vấn đề này, chúng ta có thể tắt hoặc điều chỉnh 1 số thứ sau để bỏ qua bước kiểm tra này, tuy nhiên các em lưu ý việc điều chỉnh này có thể tiềm ẩn rủi ro do chúng ta tự ý tắt chương trình hay điều chỉnh cơ chế bảo mật của Antivirus.

Trường hợp 1 : Tắt chức năng Real time Scan của Windows Defender (có sẵn trong Windows 10)

Truy cập Virus and threat protection settings -> Tắt Realtime protection

Lưu ý : Nếu tắt chức năng này các em cần đặt lịch quét virus thường xuyên, định kì trên máy tính để đảm bảo máy tính luôn sạch sẽ và an toàn

Trường hợp 2 : Nếu đang sử dụng 1 antivirus khác, các em có thể điều chỉnh loại bỏ các thư mục của Android Studio trong nhóm cần quét virus của trình Antivirus là được.

Danh sách các thư mục như sau

Gradle cache %USERPROFILE%\.gradle

Android Studio projects %USERPROFILE%\AndroidStudioProjects

Android SDK : %USERPROFILE%\AppData\Local\Android\SDK

Android Studio system files C:\Program Files\Android\Android Studio\system

Các em lưu ý tìm đến đúng thư mục nhé vì không phải bạn nào cũng lưu các thư mục với đường dẫn như trên

Trường hợp 3 : Nếu 2 cách trên các em thấy bất tiện hoặc trên máy tính của các em không thể thiết lập các thư mục được bỏ qua trong Realtime scan của Antivirus thì các em có thể tạo 1 thư mục ở nơi nào đó đã được bỏ qua trong danh sách của Realtime Scan rồi. Ví dụ trên máy của anh, ổ D là ổ anh thiết lập Antirus bỏ qua nên anh tạo 1 thư mục tên là WorkFolder hoặc tùy ý (không có dấu cách, tiếng việt, kí tự đặc biệt) sau đó chuyển tất các thư mục phía trên và thư mục mới này và tiến hành điều chỉnh như sau :

Gradle cache : tạo biến GRADLE_USER_HOME trong phần cài đặt  environment variable của Windows và trỏ tới thư mục mới ví dụ :  D:\WorkFolder\.gradle (Nếu bạn nào cài JAVA_HOME rồi thì sẽ biết cái này nhỉ 🙂 )

Android SDK : truy cập Settings của Android Studio đặt lại đường dẫn đúng với thư mục Android SDK mới tạo, nếu mạng nhanh thì các em có thể tải lại cũng được, ko thì move toàn bộ thư mục sdk cũ sang

Android Studio system files :

Truy cập : Help / Edit custom properties . Tạo file config mới và thêm vào dòng khai báo đường dẫn mới cho System files như sau :

idea.system.path =  + đường dẫn mowis

3. Tối ưu Android Studio

3.1 Tùy chỉnh Gradle

  1. Settings/Compiler đánh chọn vào tất cả các tùy chọn (trừ tùy chọn thứ 2,Make project automatically, nếu chọn tùy chọn này, Android studio sẽ tự động build mỗi lần bạn thay đổi source code, tạo cảm giác như thông dịch, đáng tiếc tốc độ rùa bò và đôi lúc treo UI lúc đang gõ code)

  2. Với tùy chọn VM Options, ta để các thông số sau cho bộ nhớ hê thống

Xmx2048m

X:MaxPermSize=512m

X:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Trong file gradle.properties của ứng dụng, bạn sửa config như sau:

org.gradle.daemon=true

org.gradle.jvmargs=-Xmx2048m

-XX:MaxPermSize=512m

-XX:+HeapDumpOnOutOfMemoryError

-Dfile.encoding=UTF-8

org.gradle.parallel=true

org.gradle.configureondemand=true

Trong đó thông số jvmargs có vai trò quan trọng nhất nó tùy chỉnh bộ nhớ của tiến trình deamon, quyết định trực tiếp đến vùng heap của gradle.

Nếu các bạn muốn tìm hiểu kĩ hơn về các tham số trong build gradle, có thể tìm thấy ở đường dẫn sau https://gradle.org/docs/current/userguide/build_environment.html

3.2 Tùy chỉnh Android studio heap

Dung lượng bộ nhớ heap của IDE này được lưu trong vmoptions, trên windows, đường dẫn của file như sau sdk\studio64.exe.vmoptions. Có 2 tham số cần thay đổi với giá trị mặc định

-Xms128m -Xmx750m

Để android studio chạy nhanh hơn, ta cần tăng bộ nhớ heap, tùy thuộc vào phần cứng của máy tính bạn mà tăng con số trên lên 2 hoặc 3 lần. Với máy corei5, ram 8g của tôi, tôi thay đổi như sau, và tốc độ build của Android studio cải thiện hẳn:

-Xms1024m -Xmx2048m

Khởi động lại Android studio và trải nghiệm sự khác biệt.

3.3 Không sử dụng dependences với version động

KHi khai báo và sử dụng các dependences trong build.gradle , chúng ta nên khai báo rõ ràng phiên bản của dependences đó.
Ví dụ : compile 'com.squareup.retrofit2:retrofit:2.3.0'

Và không nên dùng '+' để định nghĩa version như sau :

compile 'com.squareup.retrofit2:retrofit:2.+'

3.4 Kích hoạt chế độ offline

Nếu kết nối internet kém, khi build gradle sẽ cố gắng kết nối resource cho dependences từ trên mạng. Điều này làm chậm đáng kể quá trình build ứng dụng. Chúng ta có thể setting để Gradle chỉ sử dụng các tài nguyên đã được build và lưu lại trước đó thay vì hoàn toàn tải mới hoàn toàn.

Thực hiện các bước sau :

  1. Mở cửa sổ Preferences bằng cách chọn **File -> Settings **
  2. Click chọn Build, Execution, Deployment > Gradle.
  3. Check vào ô Offline work
  4. Click Apply hoặc OK\

3.5 Kích hoạt chế độ Instant Run

Đây là chế độ mới của Android Studio.                           

Nó cho phép chạy ngay ứng dụng của bạn với các thay đổi mới mà không càn phải tạo lại bản Apk khác. Trong 1 số trường hợp thay đổi app cũng có thể không phải start lại.

Trong trường hợp không thấy icon trên, có thể làm theo các bước sau để chắc chán bạn đã bật chế độ Instant Run hay chưa :

  1. Mở Settings hoặc Preferences .
  2. Chuyển tới Build, Execution, Deployment > Instant Run.
  3. Chắc chắn rằng **Enable Instant Run **đã được tích chọn.

3.6 Vô hiệu hóa Crashlytics

Crashlytics là công cụ cung cấp thông tin chuyên sâu về những hành động, sự kiện chi tiết đến từng dòng code để mô tả những gì mà ứng dụng của bạn đang gặp phải. Tuy nhiên, nếu chưa thực sự cần thiết phải sử dụng đến nó ngay, thì có thể vô hiệu hóa để tăng tốc quá trình build ứng dụng.

android {
  ...
  buildTypes {
    debug {
      ext.enableCrashlytics = false
    }
}

Trong trường hợp mà vẫn muốn sử dụng, thì vẫn có thể tăng tốc nó bằng cách ngăn chặn Crashlytics cập nhật tài nguyên của ứng dụng trong mỗi lần build. Trong file build.gradle thực hiện cấu hình như sau:

android {
  ...
  buildTypes {
    debug {
      ext.alwaysUpdateBuildId = false
    }
}

3.7  Tạo một build variant cho quá trình phát triển

Có nhiều cấu hình cần thiết khi sản phẩm được phát hành nhưng nó lại không cần thiết khi chúng ta đang trong quá trình phát triển nó. Việc cho phép build những cấu hình này sẽ giảm tốc độ của nó. Vì vậy, tạo ra một build variant riêng biệt cho phép chỉ chứa cấu hình dùng khi phát triển ứng dụng sẽ tránh khỏi việc build những tài nguyên không cần thiết.

Để thực hiện điều này, chúng ta thêm phần cấu hình như sau cho phiên bản phát hành hiện tại :

android {
  ...
  defaultConfig {...}
  buildTypes {...}
  productFlavors {
    // When building a variant that uses this flavor, the following configurations
    // override those in the defaultConfig block.
    dev {
      // To avoid using legacy multidex when building from the command line,
      // set minSdkVersion to 21 or higher. When using Android Studio 2.3 or higher,
      // the build automatically avoids legacy multidex when deploying to a device running
      // API level 21 or higher—regardless of what you set as your minSdkVersion.
      minSdkVersion 21
      versionNameSuffix "-dev"
      applicationIdSuffix '.dev'
    }

    prod {
      // If you've configured the defaultConfig block for the release version of
      // your app, you can leave this block empty and Gradle uses configurations in
      // the defaultConfig block instead. You still need to create this flavor.
      // Otherwise, all variants use the "dev" flavor configurations.
    }
  }
}

Như các bạn thấy ở trên, chúng ta đang tạo một config mới cho productFlavors. Đoạn config mới này sẽ được hệ thống override lên khối defaultConfig mặc định.

4. Tổng kết

Vừa rồi là những cách tối ưu Android Studio mà mình lụm nhặt và tham khảo ở nhiều trang web khác nhau mong rằng bài viết sẽ giúp được ít nhiều trong quá trình làm việc của các bạn.

tài liệu tham khảo : https://docs.gradle.org/current/userguide/build_environment.html

                               https://dzone.com/articles/how-speed-android-studio

                               https://developer.android.com/studio/build/optimize-your-build

                               https://hackernoon.com/speed-up-gradle-build-in-android-studio-80a5f74ac9ed

vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: Android

Học Kotlin cơ bản
Số bài học:
Lượt xem: 17562
Đăng bởi: Admin
Chuyên mục: Android

Học lập trình Flutter cơ bản
Số bài học:
Lượt xem: 58323
Đăng bởi: Admin
Chuyên mục: Android

Lập trình Android cơ bản
Số bài học:
Lượt xem: 22935
Đăng bởi: Admin
Chuyên mục: Android