Невозможно получить привязку gomobile для работы с Java

Версия Go: 1.7.5

GOPATH = D: / GoWork

React Native версия 0.41

Приведенный ниже код - это пакет связывания go в D:\GoWork\src\rngo\rngo\rngo.go

Очень просто, просто возвращая строку

package rngo

// RNcall is used to bind with RN
func RNcall()  string {
    return "From Go platform"
}

Выполнение приведенной ниже команды из> D: \ GoWork \ src \ rngo

gomobile bind -target android -o rngo.aar -v  .

Подробный вывод ниже, кажется, хорошо

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\classes.go

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\classes.h

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\classes.c

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gen\src\Java\interfaces.go rngo/rngo

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\fakegopath\pkg\android_arm\rngo\rngo.a напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\go_rngomain.go

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\go_main.go

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\androidlib\main.go

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\android\src\main\java\rngo\Rngo.java

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\java_rngo.c

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\rngo.h

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\android\src\main\java\go\Universe.java

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\android\src\main\java\go\error.java

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\java_universe.c

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\universe.h

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq_android.go

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq_android.c

напишите C:\Users\Minty\AppData\Local\Temp\gomobile-work-855641675\gomobile_bind\seq.h

напишите C: \ Users \ Minty \ AppData \ Local \ Temp \ gomobile-work-855641675 \ gomobile_bind \ seq.go

Java / C / Пользователи /Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind аргументы командной строки rngo / rngo Java

/ C / Users /Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind аргументы командной строки rngo / rngo Java

/ C / Users /Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind аргументы командной строки rngo / rngo Java

/ C / Пользователи /Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind

/ # / C / Пользователи /Minty/AppData/Local/Temp/gomobile-work-855641675/gomobile_bind

D:\Android\ SDK \ NDK-расслоение \ компилированные инструменты \x86_64-4.9\ прекомпилированное \ Windows-x86_64/ Библиотека / GCC /x86_64-линукс-андроид /4.9.x/../../../../x86_64-linux-android/bin\ld: предупреждение: пропуск несовместимых D:\Android\sdk\ndk-bundle\ платформы \android-21\arch-x86_64/usr/lib/liblog.so при поиске журнала

D:\Android\ SDK \ NDK-расслоение \ компилированные инструменты \x86_64-4.9\ прекомпилированное \ Windows-x86_64/ Библиотека / GCC /x86_64-линукс-андроид /4.9.x/../../../../x86_64-linux-android/bin\ld: предупреждение: пропуск несовместимых D:\Android\sdk\ndk-bundle\ платформы \android-21\arch-x86_64/usr/lib/libdl.so при поиске dl

D:\Android\ SDK \ NDK-расслоение \ компилированные инструменты \x86_64-4.9\ прекомпилированное \ Windows-x86_64/ Библиотека / GCC /x86_64-линукс-андроид /4.9.x/../../../../x86_64-linux-android/bin\ld: предупреждение: пропуск несовместимых D:\Android\sdk\ndk-bundle\ платформы \android-21\arch-x86_64/usr/lib/libc.so при поиске c

D:\Android\ SDK \ NDK-расслоение \ компилированные инструменты \x86_64-4.9\ прекомпилированное \ Windows-x86_64/ Библиотека / GCC /x86_64-линукс-андроид /4.9.x/../../../../x86_64-linux-android/bin\ld: предупреждение: пропуск несовместимых D:\Android\sdk\ndk-bundle\ платформы \android-21\arch-x86_64/usr/lib/libdl.so при поиске dl

командная строка-аргументы

aar: AndroidManifest.xml

aar: proguard.txt

aar: classes.jar

банка: МЕТА-ИНФ / МАНИФЕСТ.МФ

jar: go / LoadJNI.class

jar: go / Seq $ GoObject.class

jar: go / Seq $ Proxy.class

jar: go / Seq $ Ref.class

jar: go / Seq $ RefMap.class

jar: go / Seq $ RefTracker.class

jar: go / Seq.class jar: go / Universe $ proxyerror.class jar: go / Universe.class

jar: go / error.class

jar: rngo / Rngo.class

aar: jni / armeabi-v7a / libgojni.so

aar: jni / arm64-v8a / libgojni.so

aar: jni / x86 / libgojni.so

aar: jni / x86_64 / libgojni.so

aar: R.txt

aar: res /

Успешно создан rngo.aar, поскольку сообщения об ошибке нет, и я вижу этот файл в D:\GoWork\src\rngo\rngo.aar

Затем я вручную импортирую файл rngo.aar в проект React Native из студии Android

  1. Файл> Создать> Новый модуль> Импортировать пакет.aar/.jar> # дать путь к rngo.aar#
  2. Файл> Структура проекта> приложение> Зависимости> Зависимость модуля> rngo.aar

Внутри IDE, в MainActivity.java я могу успешно выполнить 'import go.rngo. *;', но я не могу получить 'go.rngo.Rngo.RNcall()' или 'go.rngo.Rngo;' работать

Сборка этого приложения для Android выдает ошибку "не удается найти символ"

D: \ RN \ gomobile \ android \ app \ src \ main \ java \ com \ gomobile \ RngoModule.java: 10: ошибка: не удается найти символ

import go.rngo;
^

символ: класс рнго
местоположение: пакет идти
1 ошибка
:app:compileDebugJavaWithJavac FAILED

Заключение

Я делаю что-то ужасно неправильно, что я не могу заставить эту простую вещь работать. Я потратил весь день на Google, но безрезультатно. Поэтому мне нужна помощь, чтобы заставить это работать. Все, что мне нужно, это простой код go, который подключается для реакции на native hasselfree.

Спасибо за чтение всего этого. Я ценю его.

1 ответ

Решение

Благодаря Элиаснаур. Наконец-то у меня все заработало. Начиная с версии 1.7.* У вас нет доступа к пакету go. Вместо этого получите доступ к вашей посылке напрямую, как это

До:

import go.rngo.Rngo;

После:(с 1.7.*)

import rngo.Rngo;
Другие вопросы по тегам