Я попытался восстановить приложение для Android, которое содержит Тесс-два как библиотека. При использовании как есть, я получаю эту ошибку
java.lang.NoSuchFieldError: нет поля с именем = ‘mNativeData’
signature = ‘I’ в классе Lcom / googlecode / tesseract / android / TessBaseAPI;
При отмене фиксации bc931c966f5a05745bd4be5833f551643589982d (private long mNativeData; изменено на private int mNativeData;)
Это тогда работает. Это может быть связано с моим CPU / ABI.
Я действительно не андроид и не ndk эксперт, но для меня это звучит как ошибка. Если код cpp не возвращает long или TessBaseAPI.java должен быть адаптирован для получения int или long.
Спасибо
В коммите, на который вы ссылаетесь, это поле было изменено на «long» в коде Java и JNI для поддержки 64-битных устройств.
Его следует оставить как «длинный» по всем направлениям.
Если вы используете проект, который использует предварительно скомпилированную версию tess.so
Вы можете откатить код tess-two до более старой версии, которая предшествует фиксации, вызывающей конфликт, например:
git checkout 69b73ef5952c91b4d5d238f76a027a295f58575d
Кроме того, вы можете создавать новые версии файлов * .so, используя инструкции по сборке tess-two, и заменять эти файлы в своем проекте.