Неразрешенная ссылка: toByteString

#android #build.gradle

#Android #build.gradle

Вопрос:

Я использую SDK, для которого требуются данные в «ByteString».

Когда я пытаюсь преобразовать BigInteger в toByteString , он выдает мне сообщение об ошибке.

 BigInteger("d693a400", 16).toByteString()
 

Неразрешенная ссылка: toByteString

Я попытался включить protobuf плагин, но все равно ошибка есть.

Уровень проекта — Build.gradle

 dependencies {
    classpath "com.android.tools.build:gradle:4.1.1"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
 

Уровень приложения — Build.gradle

 plugins {
    id 'com.android.application'
    id "com.google.protobuf" version "0.8.15"
}
 

Ответ №1:

После того, как я добавил зависимость implementation "com.trustwallet:wallet-core:0.12.31" , я мог бы использовать ByteString из com.google.protobuf

Я проверил репозиторий и нашел эти расширения https://github.com/trustwallet/wallet-core/blob/05375deb1b4b45d491b59ca775aa43e9e9a39b11/android/app/src/main/java/com/trustwallet/core/app/utils/Extensions.kt#L17 который является расширением строки.

Итак, я посмотрел их фактический пример и обнаружил, что они используют там пользовательскую функцию:

 private fun BigInteger.toByteString(): ByteString {
    return ByteString.copyFrom(this.toByteArray())
}
 

Источник: https://github.com/trustwallet/wallet-core/blob/05375deb1b4b45d491b59ca775aa43e9e9a39b11/samples/android/app/src/main/java/com/trust/walletcore/example/MainActivity.kt#L115

Комментарии:

1. Обратите внимание, что я никогда не использовал этот SDK. Но иногда может помочь поиск по коду репозитория.