Мы можем использовать Gradle для защиты ключа API или секретного ключа.
1. gradle.properties (Свойства проекта): Создать переменную с ключом.
GoolgeAPIKey = "Your API/Secret Key"
2. build.gradle (Module: app): установите переменную в build.gradle для доступа к ней в активности или фрагменте. Добавьте ниже код в buildTypes {}.
buildTypes.each {
it.buildConfigField 'String', 'GoogleSecAPIKEY', GoolgeAPIKey
}
3. Получите доступ к нему в Activity / Fragment с помощью приложения BuildConfig:
BuildConfig.GoogleSecAPIKEY
Вышеупомянутое решение полезно в проекте с открытым исходным кодом для передачи по Git. (Спасибо Дэвиду Роусону и Риязи-Али за ваш комментарий).
Согласно комментариям Мэтью и Пабло Чегарры, вышеупомянутый способ небезопасен, и Декомпилятор позволит кому-то просмотреть BuildConfig с помощью наших секретных ключей.
Решение:
Мы можем использовать NDK для защиты API-ключей. Мы можем хранить ключи в собственном классе C / C ++ и обращаться к ним в наших классах Java.
Пожалуйста, следуйте этому блоку , чтобы защитить ключи API с помощью NDK.
Последующее наблюдение за тем, как безопасно хранить маркеры в Android
Настройте некоторые поддельные данные:
m <- matrix(1:30, 6, 5)
rownames(m) <- c("X1", "X5", "X33", "X37", "X52", "X566")
m
# [,1] [,2] [,3] [,4] [,5]
# X1 1 7 13 19 25
# X5 2 8 14 20 26
# X33 3 9 15 21 27
# X37 4 10 16 22 28
# X52 5 11 17 23 29
# X566 6 12 18 24 30
Здесь, вероятно, проще всего подмножество с индексированием матрицы ([
):
include_list <- c("X1", "X5", "X33")
m[include_list, ]
# [,1] [,2] [,3] [,4] [,5]
# X1 1 7 13 19 25
# X5 2 8 14 20 26
# X33 3 9 15 21 27
Альтернатива с функцией subset()
:
subset(m, rownames(m) %in% include_list)
# [,1] [,2] [,3] [,4] [,5]
# X1 1 7 13 19 25
# X5 2 8 14 20 26
# X33 3 9 15 21 27