Конвертация Netbeans проекта AMShell в проект Android Studio. Статья первая
от MadRat96
В 2013 году появилась Android Midp Shell (далее - AMShell), библиотека для Android, которая позволяла запускать исходный код J2ME на Android, не используя при этом эмулятор. Она давно не обновлялась и циклом статей об этой библиотеке я бы хотел дать ей вторую жизнь.
Первая статья про эту библиотеку появилась в том же году на Annimon'e. Результатом статьи был проект в Netbeans, который мы будем конвертировать в Android'овский проект, скачайте его перед прочтением основного материала - MidEditPortable.zip
Касательно самой библиотеки можно сказать следующее - она была разработана пользователем SilentKing и опубликована на этом сайте, но количество реализованных в ней API не позволяло запускать исходные коды каких-то сложных программ или игр. Однако, в связи с развитием такого крутого эмулятора под Android, как J2ME Loader, работать с такими API становится проще, ведь версия ядра J2ME этого эмулятора содержит как андроидовский, так и J2ME код. А значит, вполне возможно оживить эту библиотеку, этим мы собственно и займёмся.
Часть первая - импорт проекта в AndroidStudio
Примечание: я немного накосячил при создании скриншотов, поэтому, когда будете следовать этому туториалу обратите внимание, что в названиях обоих папок не должны быть пробелы(!!!), иначе AndroidStudio будет выводить при импорте проекта сообщение, что в название папок не должно быть пробелов!
Создайте две папки, в первую распакуйте исходники проекта Netbeans (в моем случае, это будет папка AMShell Netbeans), а другая понадобится для исходников проекта AndroidStudio (папка AMShell)
Запустите AndroidStudio (В этой статье приведены скриншоты AndroidStudio версии 3.6.3), выберите пункт меню Import Project и укажите путь к папке с исходниками проекта Netbeans.
Перед вами отобразится первый экран импорта, на котором нужно будет указать путь к папке, где будет храниться сконвертированный проект (в моем случае, это папка AMShell).
На финальном экране импорта мы не будем ничего менять и просто нажмём "Finish"
На этом стадия импорта завершена, осталось исправить ошибки и кое-что добавить в коде, этим мы займёмся во второй части.
Часть вторая - исправление багов и недочётов
После того, как отработал Gradle, вы увидите следующие сообщения об ошибках:
Для их исправления откройте директорию с файлами Gradle и перейдите в файл build.gradle
А затем добавьте в код файла строки, которые содержат комментарий "// Это нужно добавить", сам комментарий при этой добавлять не нужно. Затем нажмите "Sync now"
Примечание: если вам нужна документация Gradle при использовании проекта, нажмите на "Ok, apply suggestion".
После того, как Gradle внёс изменения, отобразятся три новых ошибки:
Для её исправления выделите третью ошибку и нажмите на "Fix Gradle wrapper and re-import project"
Примечание (да, опять ) - прежде, чем приступать к этому этапу убедитесь в том, что у вас установлен Android SDK 10 версии, это можно проверить таким образом:
Нажмите на иконку SDK Manager и посмотрите, стоит ли галочка напротив API 10, выделенного на картинке ниже:
Если нет, поставьте напротив него галочку и нажмите "apply". Без установленного SDK дальнейшие действия бессмысленные и при сборке AndroidStudio будет выдавать ошибку!
С ошибками пока покончено, теперь перейдём к изменениям в файлах Gradle и коде. После исправлений ошибок с Gradle вы можете заметить, что файлы в директории файлов Gradle изменились:
Перейдите в файл build.gradle (Module: app) (app - это название модуля, создаваемого в AndroidStudio по умолчанию, позднее это можно изменить) и измените версию compileSdkVersion на 10, а buildToolsVersion и вовсе удалите.
Понижение версии SDK нужно для того, чтобы при компиляции на устройствах с более высокой версией не было ошибок о ненайденных SDK (сама библиотека была создана во времена Android 2.3), ну а упоминание buildToolsVersion в Gradle не нужно по той причине, что мы если и будем использовать buildTools, то только версии API 10, который нам нужен для компиляции, а значит, она будет отличаться от данной.
В результате файл build.gradle (Module: app) будет выглядеть так:
Нажмите "Sync Now" и дождитесь, пока Gradle внесёт изменения.
На этом наша работа с проектом завершена, осталось попробовать запустить его
Часть третья - запуск проекта на устройствеПопробуем собрать проект на устройстве. В AndroidStudio можно использовать для этого как эмулятор, так и обычный смартфон. Для этого нажмите на кнопку "Run", которая находится первой после списка устройств.
У нас получилось! Попробуйте проделать те же действия ради интереса.
В следующих статьях мы займёмся либо рефракторингом данного проекта, либо попробуем повысить версию API до современных и исправить ошибки.
Первая статья про эту библиотеку появилась в том же году на Annimon'e. Результатом статьи был проект в Netbeans, который мы будем конвертировать в Android'овский проект, скачайте его перед прочтением основного материала - MidEditPortable.zip
Касательно самой библиотеки можно сказать следующее - она была разработана пользователем SilentKing и опубликована на этом сайте, но количество реализованных в ней API не позволяло запускать исходные коды каких-то сложных программ или игр. Однако, в связи с развитием такого крутого эмулятора под Android, как J2ME Loader, работать с такими API становится проще, ведь версия ядра J2ME этого эмулятора содержит как андроидовский, так и J2ME код. А значит, вполне возможно оживить эту библиотеку, этим мы собственно и займёмся.
Часть первая - импорт проекта в AndroidStudio
Примечание: я немного накосячил при создании скриншотов, поэтому, когда будете следовать этому туториалу обратите внимание, что в названиях обоих папок не должны быть пробелы(!!!), иначе AndroidStudio будет выводить при импорте проекта сообщение, что в название папок не должно быть пробелов!
Создайте две папки, в первую распакуйте исходники проекта Netbeans (в моем случае, это будет папка AMShell Netbeans), а другая понадобится для исходников проекта AndroidStudio (папка AMShell)
Запустите AndroidStudio (В этой статье приведены скриншоты AndroidStudio версии 3.6.3), выберите пункт меню Import Project и укажите путь к папке с исходниками проекта Netbeans.
Перед вами отобразится первый экран импорта, на котором нужно будет указать путь к папке, где будет храниться сконвертированный проект (в моем случае, это папка AMShell).
На финальном экране импорта мы не будем ничего менять и просто нажмём "Finish"
На этом стадия импорта завершена, осталось исправить ошибки и кое-что добавить в коде, этим мы займёмся во второй части.
Часть вторая - исправление багов и недочётов
После того, как отработал Gradle, вы увидите следующие сообщения об ошибках:
Для их исправления откройте директорию с файлами Gradle и перейдите в файл build.gradle
А затем добавьте в код файла строки, которые содержат комментарий "// Это нужно добавить", сам комментарий при этой добавлять не нужно. Затем нажмите "Sync now"
Примечание: если вам нужна документация Gradle при использовании проекта, нажмите на "Ok, apply suggestion".
После того, как Gradle внёс изменения, отобразятся три новых ошибки:
Для её исправления выделите третью ошибку и нажмите на "Fix Gradle wrapper and re-import project"
Примечание (да, опять ) - прежде, чем приступать к этому этапу убедитесь в том, что у вас установлен Android SDK 10 версии, это можно проверить таким образом:
Нажмите на иконку SDK Manager и посмотрите, стоит ли галочка напротив API 10, выделенного на картинке ниже:
Если нет, поставьте напротив него галочку и нажмите "apply". Без установленного SDK дальнейшие действия бессмысленные и при сборке AndroidStudio будет выдавать ошибку!
С ошибками пока покончено, теперь перейдём к изменениям в файлах Gradle и коде. После исправлений ошибок с Gradle вы можете заметить, что файлы в директории файлов Gradle изменились:
Перейдите в файл build.gradle (Module: app) (app - это название модуля, создаваемого в AndroidStudio по умолчанию, позднее это можно изменить) и измените версию compileSdkVersion на 10, а buildToolsVersion и вовсе удалите.
Понижение версии SDK нужно для того, чтобы при компиляции на устройствах с более высокой версией не было ошибок о ненайденных SDK (сама библиотека была создана во времена Android 2.3), ну а упоминание buildToolsVersion в Gradle не нужно по той причине, что мы если и будем использовать buildTools, то только версии API 10, который нам нужен для компиляции, а значит, она будет отличаться от данной.
В результате файл build.gradle (Module: app) будет выглядеть так:
Нажмите "Sync Now" и дождитесь, пока Gradle внесёт изменения.
На этом наша работа с проектом завершена, осталось попробовать запустить его
Часть третья - запуск проекта на устройствеПопробуем собрать проект на устройстве. В AndroidStudio можно использовать для этого как эмулятор, так и обычный смартфон. Для этого нажмите на кнопку "Run", которая находится первой после списка устройств.
У нас получилось! Попробуйте проделать те же действия ради интереса.
В следующих статьях мы займёмся либо рефракторингом данного проекта, либо попробуем повысить версию API до современных и исправить ошибки.