Lerg
@Lerg
Defold, Corona, Lua, GameDev

Как использовать assets/ директорию вместо res/?

Есть JAR библиотека, которую мне нужно встроить в своё приложение.
Загвостка в том, что она идёт со своими файлами в res/, а мне по техническим причинам нельзя изменять эту директорию, но у меня есть полный доступ к assets/.

В res/ находятся различные картинки разных разрешений, layouts, файл шрифта, файл звука и просто локализованные строки в xml.

Библиотека легко декомпилировалась и внутри неё нашёл следующий класс.
package com.purplebrain.giftiz.sdk.util;
 
import android.content.Context;
import android.content.res.Resources;
 
public class GDKId
{
  public static int getId(String paramString, Context paramContext)
  {
    return paramContext.getResources().getIdentifier(paramString, "id", paramContext.getPackageName());
  }
 
  public static int getString(String paramString, Context paramContext)
  {
    return paramContext.getResources().getIdentifier(paramString, "string", paramContext.getPackageName());
  }
 
  public static int getLayout(String paramString, Context paramContext)
  {
    return paramContext.getResources().getIdentifier(paramString, "layout", paramContext.getPackageName());
  }
 
  public static int getAnim(String paramString, Context paramContext)
  {
    return paramContext.getResources().getIdentifier(paramString, "anim", paramContext.getPackageName());
  }
 
  public static int getRaw(String paramString, Context paramContext)
  {
    return paramContext.getResources().getIdentifier(paramString, "raw", paramContext.getPackageName());
  }
 
  public static int getDrawable(String paramString, Context paramContext)
  {
    return paramContext.getResources().getIdentifier(paramString, "drawable", paramContext.getPackageName());
  }
}


Похоже он отвечает за загрузку всех ресурсов.

Как его модифицировать так, чтобы вместо res/ он использовал, скажем, assets/res/ ?

Или другой вариант - сконвертировать все файлы в base64 и хранить как строки прямо внутри .java файлов. Если это легче, то тоже можно.

C Java мне раньше не приходилось сталкиваться.

UPD Понял, что этот класс всего лишь возвращает ID ресурсов, а не сами ресурсы, но вопрос остаётся в силе, как обойтись без res/ директории?
  • Вопрос задан
  • 2864 просмотра
Решения вопроса 1
Lerg
@Lerg Автор вопроса
Defold, Corona, Lua, GameDev
Оказывается это невозможно. Но я всётаки смог решить свою проблему с использованием apktool.
Распаковываю APK, копирую дополнительные ресурсы в res/, запаковываю обратно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Collosteam
@Collosteam
Android кодирую
Посмотрите сдесь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы