Я борюсь с использованием свойств в AllJoyn. Я новичок в AllJoyn, но не в программировании. У меня есть провайдер, написанный на C++, и я добавляю свои свойства, используя
status = m_Description->AddProperty("ServerName", "s", 1)
После этого статус звонка становится равным ER_OK.
Я определяю свое свойство Java в интерфейсе следующим образом:
@BusProperty(annotation = BusProperty.ANNOTATE_EMIT_CHANGED_SIGNAL)
String getServerName() throws BusException;
Однако, когда я пытаюсь использовать это свойство в Java (Android с использованием Android Studio), вызывая его как:
String str = proxyInterface.getServerName();
Я продолжаю получать следующее исключение:
Примечание. У меня есть метод, возвращающий значение ServerData. Однако это не то, что я вызываю, когда возникает эта ошибка. Я успешно делаю этот вызов задолго до того, как пытаюсь вызвать метод. Именно вызов метода вызывает это исключение. Однако у меня есть ServerData с аннотацией @Position(x) для каждого поля с номерами 0-4.
Что я делаю не так?
Обновлять:
ServerData от поставщика C++
От потребителя Java:
class ServerData {
public:
const char* Id;
const char* Name;
const char* Version;
const char* MachineName;
const char* BaseUrl;
};
ОБНОВЛЕНИЕ: К сожалению, мне не представляется возможным переключить версию gradle. Я сейчас на 2.3.1; переход на 2.1.3 вызывает следующую ошибку во время сборки (я пробовал все перечисленные предложения):
public class ServerData {
@Position(0)
@Signature("s")
public String Id;
@Position(1)
@Signature("s")
public String Name;
@Position(2)
@Signature("s")
public String Version;
@Position(3)
@Signature("s")
public String MachineName;
@Position(4)
@Signature("s")
public String BaseURL;
}
Кэш зависимостей Gradle может быть поврежден (иногда это происходит после истечения времени ожидания сетевого подключения). Повторно загрузите зависимости и проект синхронизации (требуется сеть)
Unfortunately, that doesn't seem possible for me to switch version of gradle. I'm currently on 2.3.1; switching to 2.1.3 causes the following error during build: Error:org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection Possible causes for this unexpected error include:
- Состояние процесса сборки Gradle (демона) может быть повреждено. Остановка всех демонов Gradle может решить эту проблему. Остановить процессы сборки Gradle (требуется перезагрузка)
- В вашем проекте может использоваться сторонний плагин, который несовместим с другими плагинами в проекте или версией Gradle, запрошенной проектом.
- Убедитесь, что рассматриваемые поля ServerData являются общедоступными и что нет опечаток ни в одной из аннотаций @Position(n), которые вы указали непосредственно перед каждым общедоступным полем.