Как исправить эту ошибку параметризованного типа, которая отлично работает в режиме отладки, но не в режиме выпуска?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как исправить эту ошибку параметризованного типа, которая отлично работает в режиме отладки, но не в режиме выпуска?

Сообщение Anonymous »

В моем приложении есть процесс входа в систему, который использует Firebase Auth для аутентификации. Я использую аутентификацию на основе Google OAuth и электронной почты. Проблема, с которой я столкнулся, заключается в том, что вход в систему работает нормально в отладочной сборке, но не в выпускной сборке. Я получаю эту ошибку:

Код: Выделить всё

024-10-16 15:34:52.847 18432-18432 AuthViewModel           com.logomo.logomo              E  Error fetching API key: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType package com.logomo.logomo.data.login.

Код: Выделить всё

private suspend fun loginAndGetApiKey(uid: String) {
try {
_isLoading.value = true
logInResponse = logInRepository.signInUser(uid)
// Suspends here until API call finishes
logInResponse?.let {
_apiKey.value = it.api_key
Log.d(TAG, "getApiKey: ${it.status}")
Log.d(TAG, "getApiKey: ${apiKey.value}")

// Save the API key and retrieve it safely
apiKey.value?.let { it1 -> saveApiKey(apiKey = it1) }
val savedApiKey = getApiKey()
Log.d(TAG, "getApiKeyFunc: $savedApiKey")
} ?: run {
Log.e(TAG, "Login response is null, failed to retrieve API key")
}
} catch (e: Exception) {
signOut()

Log.e(TAG, "Error fetching API key: ${e.message}")
} finally {
_isLoading.value = false
}
}
Я получаю ключ API от конечной точки API и сохраняю его в EncryptedSharedPreferences, чтобы можно было использовать его при каждом последующем вызове API для функций приложения.

Код: Выделить всё

//This is the ApiService class
import com.logomo.logomo.retrofit.SignInUserData
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.POST

interface LogInApiService {
@FormUrlEncoded
@POST("users/user_login.php")
suspend fun signInUser(
@Field("uid") uid: String,
): SignInUserData
}

Код: Выделить всё

//This is the Repository class
import com.logomo.logomo.retrofit.SignInUserData
import javax.inject.Singleton

@Singleton
class NetworkLogInRepository(
private val logInApiService: LogInApiService
) {
suspend fun signInUser(uid: String): SignInUserData {
return logInApiService.signInUser(uid)
}
}
Я попробовал несколько правил proguard, чтобы предотвратить запутывание классов Retrofit2. Но, похоже, ничего не работает. Я** уверен, что это проблема proguard, поскольку я попробовал переключить isMinifyEnabled на false, и все сработало нормально.** Как я могу изменить правила или что-то в этом роде, чтобы заставить его работать?

Подробнее здесь: https://stackoverflow.com/questions/790 ... but-not-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»