Câu trả lời được chấp nhận sử dụng một tệp để kiểm soát kho khóa nào sẽ sử dụng để ký APK nằm trong cùng thư mục gốc của dự án. Khi chúng tôi sử dụng vcs như Git , có thể là một điều tồi tệ khi chúng tôi quên thêm tệp thuộc tính để bỏ qua danh sách. Bởi vì chúng tôi sẽ tiết lộ mật khẩu của chúng tôi với thế giới. Những vấn đề vẫn còn tồn tại.
Thay vì tạo tệp thuộc tính trong cùng thư mục trong dự án của chúng ta, chúng ta nên tạo nó bên ngoài. Chúng tôi làm cho nó ra bên ngoài bằng cách sử dụng tập tin gradle.properIES.
Đây là các bước:
1. Chỉnh sửa hoặc tạo gradle.properies trên dự án gốc của bạn và thêm mã sau đây, hãy nhớ chỉnh sửa đường dẫn với chính bạn:
AndroidProject.signing=/your/path/androidproject.properties
2.Tạo androidproject.properies trong / your / path / và thêm đoạn mã sau vào đó, đừng quên thay đổi /your/path/to/android.keystore vào đường dẫn kho khóa của bạn:
STORE_FILE=/your/path/to/android.keystore
STORE_PASSWORD=yourstorepassword
KEY_ALIAS=yourkeyalias
KEY_PASSWORD=yourkeypassword
3. Trong mô-đun ứng dụng build.gradle của bạn (không phải xây dựng gốc dự án của bạn.gradle) thêm mã sau nếu không tồn tại hoặc điều chỉnh theo nó:
signingConfigs {
release
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
4.Thêm đoạn mã sau bên dưới mã trong bước 3:
if (project.hasProperty("AndroidProject.signing")
&& new File(project.property("AndroidProject.signing").toString()).exists()) {
def Properties props = new Properties()
def propFile = new File(project.property("AndroidProject.signing").toString())
if(propFile.canRead()) {
props.load(new FileInputStream(propFile))
if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
} else {
println 'androidproject.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'androidproject.properties file not found'
android.buildTypes.release.signingConfig = null
}
}
Mã này sẽ tìm kiếm thuộc tính AndroidProject.signing trong gradle.properations từ bước 1 . Nếu thuộc tính được tìm thấy, nó sẽ dịch giá trị thuộc tính dưới dạng đường dẫn tệp trỏ đến androidproject.properies mà chúng ta tạo ở bước 2 . Sau đó, tất cả giá trị thuộc tính từ nó sẽ được sử dụng làm cấu hình ký cho build.gradle của chúng tôi.
Bây giờ chúng tôi không cần phải lo lắng về nguy cơ lộ mật khẩu kho khóa của mình.
Đọc thêm tại Đăng ký apk Android mà không đưa thông tin kho khóa vào build.gradle
build.gradle
, bạn sẽ phải có thứ gì đó ngoàibuild.gradle
, cho dù đó là sự điều chỉnh các biến môi trường (mỗi câu trả lời), tệp thuộc tính (mỗi câu trả lời khác) hoặc một số phương tiện khác. Nếu bạn không muốn có những thứ bên ngoàibuild.gradle
, thì theo định nghĩa, tất cả các thông tin ký phải ở bên trongbuid.gradle
.