Почему файлы webp не отображаются в aab? - PullRequest
0 голосов
/ 13 апреля 2020

Когда я загружаю свое приложение в консоль Google и загружаю его из Play Store, изображения в формате webp не отображаются, но на моем виртуальном устройстве их можно увидеть. Вот в моем виртуальном телефоне:

enter image description here

В Google Play я получил это:

enter image description here

Код моего адаптера для загрузки изображений следующий:

public void bind(final FruitList fruitList, final OnItemClickListener listener) {
        Glide.with(context).load(loadImage(fruitList.getFruitPicture())).into(fruitImage);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onItemClick(fruitList, getAdapterPosition());
            }
        });
    }

private int loadImage(String mImageName) {
    return context.getResources().getIdentifier(mImageName, "drawable", context.getPackageName());
}

В моей базе данных у меня есть только имя изображения и с помощью метода loadImage моего класса Adapter я получаю целое число Самое смешное, что когда я использую изображение webp непосредственно в ImageView, если я загружаю их.

1 Ответ

1 голос
/ 14 апреля 2020

Я искал в разработчику android и нашел кое-что о Сокращении. Часть, которую я прочитал, находится по следующей ссылке - https://developer.android.com/studio/build/shrink-code#strict -reference-проверок

Но в целом говорится, что Shrink будет игнорировать каждый ресурс или код, который вы не используете, поэтому Я создал метод динамической генерации строк, в моем случае я сгенерировал имя моей картинки, поэтому Shrink проигнорировал все мои картинки, потому что я никогда не использовал их и не вызывал их в своем коде или моих макетах.

Итак, рекомендация Android говорит, что мне нужно использовать String.format для генерации моих динамически строк.

Метод в Java следующий:

String name = String.format("img_%1d", angle + 1);
res = getResources().getIdentifier(name, "drawable", getPackageName());

В моем случае я использовал это следующим образом:

private int loadImage(String mImageName) {
    String newName = String.format("if_%1$s", mImageName.substring(3, mImageName.length()));
    return context.getResources().getIdentifier(newName, "drawable", context.getPackageName());
}

И это все, отлично работает. Спасибо Майку и Нагвадии Вишал за то, что они заинтересованы в помощи мне.

...