Giả sử bạn đang sử dụng hệ thống kiểm soát phiên bản và dự án của bạn sử dụng các dịch vụ yêu cầu khóa API. Mọi thứ đều ổn khi chúng ở trên máy cục bộ của bạn, nhưng bạn không muốn chia sẻ các khóa API này với mọi người.
Vậy làm cách nào bạn vẫn có thể bảo toàn các khóa API trong ứng dụng của mình nhưng cũng có thể ẩn chúng khi tải mã lên kho lưu trữ của mình?
Bạn có thể vẫn muốn sử dụng các khóa API theo cách thông thường trong ứng dụng của mình nhưng cũng không để lộ chúng.
Bí mật là gì?
Đó là nơi bí mật mời vào. Tương tự như những thứ bạn chỉ giữ cho riêng mình, nhưng theo kiểu của một nhà phát triển.
Bí mật có thể đại diện cho thông tin quan trọng mà ứng dụng của bạn yêu cầu để hoạt động nhưng không được hiển thị cho bất kỳ ai làm việc bên ngoài dự án.
Đây có thể là khóa API hoặc mã thông báo ủy quyền, nhưng về bản chất, bí mật là bất kỳ phần thông tin ủy quyền nào chỉ được bạn và một mình bạn sử dụng. Nó tương tự như việc bạn không muốn chia sẻ mật khẩu của mình lên một trang web với bất kỳ ai khác.
🚨 Tuyên bố miễn trừ trách nhiệm:Xin lưu ý rằng giải pháp được cung cấp trong bài viết này có tác dụng giúp bạn không tiết lộ bí mật khỏi hệ thống kiểm soát phiên bản của mình. Nhưng vì chúng là một phần trong ứng dụng của bạn nên chúng vẫn có thể được phát hiện bằng cách dịch ngược APK của bạn.
Cách giữ bí mật của bạn an toàn
Trong dự án của bạn, bạn nên có local.properties tập tin trong thư mục gốc của dự án của bạn
Để đảm bảo hệ thống kiểm soát phiên bản của bạn bỏ qua nó, hãy mở tệp .gitignore và thấy rằng nó được tìm thấy ở đó:
Bạn sẽ cần nhập plugin Secrets Gradle vào dự án của mình.
Để thực hiện việc này, hãy đi tới tệp build.gradle gốc của dự án và dán vào dòng sau:
buildscript {
dependencies {
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
}
}
Tiếp theo, đi tới tệp build.gradle của ứng dụng và dán vào dòng sau:
plugins {
...
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
}
Thêm khóa API của bạn vào tệp local.properties:
Bạn có thể sử dụng bí mật của mình bên trong AndroidManifest.xml tệp bằng cách thêm thẻ siêu dữ liệu bên trong thẻ ứng dụng của bạn:
<application
android:allowBackup="true"
.....
>
<activity>
....
</activity>
<meta-data
android:name="YOUR_API_KEY_NAME" /// Choose any value here
android:value="${API_KEY_NAME}"/> /// Write the name you gave inside your local.properties file
</application>
Để truy cập khóa API, bạn có thể sử dụng Trình quản lý gói để lấy dữ liệu meta:
val applicationInfo: ApplicationInfo = application.packageManager
.getApplicationInfo(application.packageName, PackageManager.GET_META_DATA)
val apiKey = applicationInfo.metaData["YOUR_API_KEY_NAME"]
Ngoài ra, bạn cũng có thể sử dụng đối tượng BuildConfig để lấy nó:
BuildConfig.YOUR_API_KEY_NAME
Thế thôi. Giờ đây, bạn có thể yên tâm khi biết rằng bí mật của mình sẽ không bị hệ thống kiểm soát phiên bản tiết lộ.
Tận hưởng việc giữ bí mật của bạn. ㊙️
Tôi đã sử dụng tính năng này cho một trong những dự án gần đây của mình và bạn có thể xem mã nguồn (không có bí mật) tại đây.
Và nếu bạn muốn xem các bài viết khác mà tôi đã viết, bạn có thể vào đây.
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu