этот код работал еще пару дней назад. он по-прежнему работает в отладочной версии, но уже не в релизной версии. никаких обновлений для SDK или gradle не делалось.
приложения oauth правильно настроены в консоли Google, введены правильные ключи SHA1.
теперь это просто терпит неудачу:
Ошибка во время операции GoogleDriveManager.uploadFile: java.lang.IllegalArgumentException: ошибка ключа
suspend fun uploadFile(credential: GoogleAccountCredential, file: File): Date? {
return withContext(Dispatchers.Default) {
try {
val drive = Drive.Builder(
NetHttpTransport(),
JacksonFactory.getDefaultInstance(),
credential
)
.setApplicationName(string(R.string.app_name))
.build()
val googleDriveFile = GoogleDriveFile()
googleDriveFile.name = file.name
val fileContent = FileContent("text/txt", file)
drive.Files().create(googleDriveFile, fileContent).execute()
Date()
} catch (exception: Exception) {
log {
"Error during GoogleDriveManager.uploadFile operation: ${exception}"
}
null
}
}
}
стандартные настройки: proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) proguard-rules.pro пуст. удалил настройки, то же самое
я не могу поверить, что Google (или Jetbrains, кто бы то ни было) выпускает такое программное обеспечение: решение заключалось в том, чтобы установить для isMinifyEnabled и isShrinkResources значение false. если какой-либо из них включен, API Google Диска не работает... в моем случае
Если вы установите minifyEnabled =false, вы отключите proguard.
Отключение минимизации (minifyEnabled =false) отключит proguard. Если вы это сделаете, вы не сможете защитить свой исходный код от декомпиляции. Если вы это сделаете, ничто не защитит ваш исходный код от хакеров, укравших вашу работу. Пожалуйста, не делай этого.
Не говоря уже о том, что поверхность атаки станет намного шире, поскольку хакер сможет увидеть ваш исходный код, ключи API и т. д. Пожалуйста, найдите другое решение. Но проблема в вашем файле proguard. Пожалуйста, опубликуйте проблему, чтобы Google мог рассмотреть ее в своих репозиториях.
я это знаю... но я использовал файл proguard по умолчанию, тот, что в проекте, пуст
наконец-то все заработало, я включил содержимое этого файла: proguard-google-api-client.txt и эта строка:
-keep class com.google.api.services.drive.** { *; }
Спасибо Дэну Герчковичу за указание на проблемы безопасности, связанные с отключением обфускации. хотя я их знал, я бы с радостью отключил его, просто чтобы он работал :)
можете ли вы дважды проверить файл proguard? Если проблема возникает только в режиме выпуска, скорее всего, она связана с вашей конфигурацией proguard.