Файлы Android в библиотеке jar недоступны при использовании с Unity

Я новичок в Unity. У меня есть фляга библиотеки Android, которую я хочу предложить также как плагин с Unity.

В библиотеке JAR у меня есть папка HTML, которая содержит файл temp.json. В файле jar (если я его разархивирую) структура выглядит следующим образом: html / temp.json (обратите внимание, что jar отлично работает при работе с любым Android-приложением вне Unity)

Вот шаги, которые я выполнил, чтобы вызвать мою библиотеку через Unity:

1) Созданная папка Assets / Plugins / Android в моей иерархии проекта Unity

2) Поместил туда мой jar-файл библиотеки вместе с AndroidManifest.xml

3) Создал файл bridge.cs, который я использую для вызова функций в файле jar

Функции из jar вызываются, но в коде jar где-то на стороне Android во время жизненного цикла библиотеки я называю:

InputStream inputStream = MyClass.class.getClassLoader()
.getResourceAsStream("html/temp.json");

и я получаю исключение ResourceNotFound

Из того, что я прочитал, Unity игнорирует эти файлы (например,.json) при упаковке. Поэтому из того, что я понял, чтобы сохранить их в банке при упаковке, я создал следующую структуру Unity:

Assets/Plugins/Android/assets/StreamingAssets/html/temp.json

Я понимаю, что любой файл, помещенный в папку StreamingAssets, копируется в папку активов библиотеки.

и в Java я звоню сейчас:

inputStream = activity.getResources().getAssets().open("html/temp.json");

Однако я все еще получаю исключение, что файл не найден.

Может ли кто-нибудь помочь мне / объяснить мне процедуру, которой я должен следовать, чтобы иметь возможность читать эти файлы на стороне Java при выполнении на Unity для Android?

1 ответ

Решение

Попробуйте этот код:

    private void readJson() {
    String json = null;
            try {

                InputStream is = getAssets().open("html/temp.json");

                int size = is.available();

                byte[] buffer = new byte[size];

                is.read(buffer);

                is.close();

                json = new String(buffer, "UTF-8");


            } catch (IOException ex) {
                ex.printStackTrace();
            }
    }

И сохраните файл JSON в:

Assets/Plugins/Android/assets/html/temp.json

Если вы все еще не можете сделать это, пожалуйста, свяжитесь со мной

Br,

Фрэнк

Другие вопросы по тегам