Я на самом деле ищу аналогичный ответ -
Мне удалось найти способ динамической загрузки файлов JAR в приложение для Android - прямо здесь, на переполнение стека по этой ссылке:
-Все, что вам нужно, здесь - за исключением того, что я добавил некоторые вещи, которые потратил время, пытаясь выяснить ниже ссылки, - которые могут быть полезны для вас
http://stackoverflow.com/questions/11453614/how-can-i-load-a-jar-file-dynamically-in-an-android-application-4-0-3
Вот некоторые вещи, которые следует иметь в виду:
При создании .jar: вам нужен только файл .class, который необходимо динамически загружать - вам не нужно включать интерфейс IPeripheral в файл .jar.
Создайте файл .jar с помощью IDE - я бы не использовал следующую команду для редактирования файла манифеста по умолчанию, вызванного с помощью параметра jar в командной строке - например, так: "jar cmf manifest-extension jar- file input-file (s) ". Вместо этого откройте eclipse, выберите «Файл»> «Экспорт»> «Java»> «Jar File» и следуйте по нему.
Когда дело доходит до выбора файла манифеста - выберите настроенный, и просто создайте файл манифеста в проекте в виде текстового файла с именем без названия и сохраните его как Whothing.manifest. Убедитесь, что в конце этого текстового файла одна пустая строка файла!
В примере кода по ссылке выше: убедитесь, что дважды проверили, что на самом деле делает эта строка:
dalvik.system.PathClassLoader myClassLoader = new dalvik.system.PathClassLoader(urls.get(index).toString(), ModuleLoader.class.getClassLoader());
Причина, по которой я это говорю, заключается в том, что urls.get (index) .toString () вернет file: / pathname, а вам просто нужно указать имя пути. Я просто разобрал это, чтобы все заработало.
Чтобы создать SDCard - просто сделайте это из диспетчера устройств Android - Есть возможность установить внешнее хранилище - выберите размер. В DDMS вы сможете открыть «Проводник», вы найдете sdcard в папке mnt и сможете вставить файл jar в папку sd card.
Вот так выглядит мой класс Main_activity, который вызывает загрузчик модулей.
public class MainActivity extends Activity
{
private static Context context;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get this classes context
MainActivity.context = getApplicationContext();
// method to return a list of modules that all implement the interface IPeripheral
List<IPeripheral> modules = ModuleLoader.loadModules("/mnt/sdcard", getApplicationContext());
//Accessing a method - and display is just a method that toasts.
display(modules.get(0).getName());
}
}
Надеюсь, это поможет - я не думаю, что вы можете динамически добавлять файлы JAR, которые являются файлами Java, которые на самом деле являются "экранами" или действиями Android, так как это потребует от вас программного редактирования файла манифеста Projects Android. что вы пытаетесь динамически загрузить банку в. Я не думаю, что это будет возможно, так как это создает угрозу безопасности.