Интегрируйте приложение Android (.apk) в существующий проект Android

Здесь используется прецедент:

Друг и я строим приложение для Android, вместе с ним хотим интегрировать игру. Ядро приложения было построено в Eclipse, но мы изучаем создание игры с помощью инструмента для создания приложений, такого как Google AppInventer (http://appinventor.googlelabs.com/about/) или Corona (http://www.anscamobile.com/corona/). Мы хотели бы, чтобы существующее приложение, которое мы построили, имеет кнопку "Play Game", которая запустит игру, которую мы построим, используя одну из этих утилит.

Однако, когда я возился с Google App Inventor, я заметил, что я могу экспортировать проект только как .apk, который является двоичным файлом. В идеале я бы создал приложение в AppInventor, экспортировал исходный код и добавил пакет в наш существующий проект в Eclipse. Ну, это не так просто, поскольку у нас есть только доступ к файлу .apk. Итак, мой вопрос: это можно сделать? Как?

Некоторые предложили использовать apk decompiler, но это даже стоило? Есть ли хорошие декомпиляторы apk, которые предоставят нам доступ к некоторому исходному коду (java файлам, xml файлам, ресурсам) без слишком большой головной боли? Есть ли другой инструмент, который может экспортировать исходный код? Любой другой способ интегрировать 2 отдельных .apks?

Или нам нужно будет создать 2 отдельных приложения?: (

Ответы

Ответ 1

Проект, написанный в App Inventor, не может быть экспортирован в Eclipse.

Созданный файл .apk не является двоичным файлом. Это ZIP-архив нескольких файлов и папок, но ни один из них не является Java-кодом.

Что можно сделать, чтобы объединить приложение App Inventor с приложением, созданным в Android SDK, - это использовать компонент ActivityStarter внутри App Inventor. Подробности здесь: http://appinventor.googlelabs.com/learn/reference/other/activitystarter.html

Наконец, имейте в виду, что приложения App Inventor нельзя загружать прямо на рынок. Однако некоторые пользователи создали процесс, который позволяет это сделать, он называется Marketizer.

Если вы потратите некоторое время на чтение сообщений с этого форума: programming-with-app-inventor (это форум Google Groups), вы можете получить еще лучшие идеи.

Ответ 2

Вы можете подумать о создании зависимости Project A как JAR и включить этот JAR файл в путь сборки вашего зависимого проекта B.

Для этого в Eclipse вам нужно нажать Экспорт > Java > JAR > {Выбрать проект и отменить AndroidManifest.xml} > Готово

Если вы не исключаете AndroidManifest.xml из своего проекта A, вы получите сообщение о том, что здесь дублируются файлы манифеста, описанные здесь.

Также вы можете получить следующую ошибку:

преобразование в формат dalvik завершилось с ошибкой 1

Исправить это просто очистить и перестроить проект

Я попробовал это для двух проектов, имеющих ссылку на ту же версию Android SDK, и это сработало. Обратите внимание: если вам нужно запустить активность из проекта A, вам также нужно объявить его в манифесте проекта B