Раздайте библиотеку отдельно от apk
Я хочу использовать библиотеку в своем приложении для Android, но хочу, чтобы эта библиотека была необязательной для пользователей.
Чтобы сделать его необязательным, я хочу распространять библиотеку отдельно от apk. Чтобы:
Пользователи, которые намереваются использовать эту опцию, могут загрузить библиотеку из приложения
А те, кто не хочет использовать это, получают файл apk меньшего размера.
Я хочу спросить, можно ли раздавать библиотеку отдельно от apk?,
Я видел некоторые игры, загружающие файлы после их установки. Итак, я чувствую, что это возможно, но не знаю, как этого добиться.
Примечание: пожалуйста, имейте в виду следующее:
Классы или методы будут использоваться только в том случае, если библиотека была загружена пользователем, и не будут использоваться в другом случае.
Не путайте раздачу библиотеки с раздачей ресурсов. Поэтому имейте в виду, что я хочу раздавать библиотеку, а не ресурсы.
2 ответа
Я не думаю, что вы можете использовать библиотеку в качестве файла расширения, потому что если вы используете какой-либо класс, методы библиотеки в вашем проекте, вы должны импортировать их, и вы не можете импортировать их без использования библиотеки в проекте, но я не уверен.
Пожалуйста, смотрите ниже ссылку для более подробной информации.
https://developer.android.com/google/play/expansion-files.html
- Вы можете распространять свою базовую функциональность с помощью вашего APK
- Если пользователь выбирает, ваше приложение может загружать дополнительные файлы, включая библиотеки. Если они не являются файлами расширения (OBB), вам следует позаботиться о том, чтобы разместить их.
Эти дополнительные библиотеки должны быть загружены аналогичным образом:
for (File pluginFile : pluginFiles) { try { JarFile jarFile = new JarFile(pluginFile); Enumeration<? extends JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { JarEntry entry = entries.nextElement(); if (entry.getName().endsWith(".class")) { URLClassLoader loader = URLClassLoader.newInstance(new URL[]{pluginFile.toURI().toURL()}); System.out.println(entry.getName()); Class<?> entryClass = loader.loadClass(entry.getName().replace(".class", "").replace("/", ".")); if (isPlugin(entryClass)) { IPlugin plugin = (IPlugin)entryClass.newInstance(); plugins.add(plugin); System.out.println("Added plugin \'" + plugin.getPluginId() + "\' from \'" + pluginFile.getName() + "\'"); } } } } catch (InstantiationException | ClassNotFoundException | IOException | IllegalAccessException e) { e.printStackTrace(); } }
Предполагается, что вы хотите загрузить файлы JAR.