vortexwolf / 2ch-Browser

Source code of the 2ch Browser Android application
https://play.google.com/store/apps/details?id=com.vortexwolf.chan
MIT License
87 stars 16 forks source link

Move to android studio 2 #64

Closed kalyaganov closed 10 years ago

kalyaganov commented 10 years ago

Структура осталась. Тесты не находятся вообще. Их нужно будет переместить куда-то в особую папку и прописать это в build.gradle. В зависимостях автоматически подгружаются Support library, jackson, tagsoup, httpmime. Гугл аналитикс остался в jar. Гиф библиотеки тоже упакованы в jar. Билдить релиз не пробовал, нужно проверить правильно ли сработает proguard.cfg. В остальном норм.

vortexwolf commented 10 years ago

Что-то все равно не понимаю, зачем были удалены библиотеки и строки из манифеста, надо вернуть на место. Попробую тогда установить gradle для эклипса и проверить, как это все будет работать.

kalyaganov commented 10 years ago

Библиотеки в gradle автоматически подгружаются из репозитория (maven например). Для добавления библиотеки в файл build.gradle добавляется описание зависимостей.

dependencies {
+    compile 'com.android.support:support-v4:20.0.+'
+    compile 'org.codehaus.jackson:jackson-core-asl:1.9.13'
+    compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.0'
+    compile 'org.ccil.cowan.tagsoup:tagsoup:1.2'
+    compile('org.apache.httpcomponents:httpcore:4.3.2') {
+        exclude module: "httpclient"
+    }
+    compile('org.apache.httpcomponents:httpmime:4.3.5') {
+        exclude module: "httpclient"
+    }
+    compile fileTree(dir: 'libs', include: '*.jar')
+}

Для обновления библиотеки всего лишь надо будет поменять цифру в версии и все.

Версионность можно вести и в манифесте, но удобнее(на мой взгляд) через gradle. В студии заходишь в настройки модуля и выставляешь нужные цифры. 2014-10-02 12 34 21

MarmaladeSky commented 10 years ago

Господа, шел 2014 год. Привязываться к репозиторию ЭТО НОРМА.

vortexwolf commented 10 years ago

Ну да, полезные файлы вроде formatter profile удалены, зато добавлены какие-то graddle-wrapper.jar, graddle-wrapper.properties и gradlew. Этот реквест я проверю и буду исправлять следующие пункты:

MarmaladeSky commented 10 years ago

Алсо, ты проверял, как собирается и работает с "httpmime:4.3.5"?

Нет, не проверял. Предлагаю сохранять атомарность в коммитах и пулл-реквестах - оставить версию 4.1.2 и обновлять версии библиотек отдельно.

Очевидно, основные плюсы, такие как гибкое управление тьмой зависимостей не столь приемлимы к данному проекту. Но все равно - поменял версию в файле -> IDE подтянула -> запустил статический анализ -> почистил deprecated-ы и норм. Стильно-модно-молодёжно. Т.к. есть жизненный цикл процесса сборки - удобно прикручивать CI, тестирование и т.д.

kalyaganov commented 10 years ago

Алсо, ты проверял, как собирается и работает с "httpmime:4.3.5"? Например, там MultipartEntity объявлен как deprecated.

Так можно использовать любую версию из репозитория, не обязательно эту. Я просто вставил последнюю. Кстати кроме maven есть еще jcenter репозиторий. https://bintray.com/bintray/jcenter Из плюсов зависимостей - не надо таскать везде jar файлы, достаточно запустить синхронизацию и все подтянется.

зато добавлены какие-то graddle-wrapper.jar, graddle-wrapper.properties и gradlew.

Это обертка для gradle, чтобы можно было в любое время перейти на новую версию, поменяв ее в файле build.gradle.

а proguard то нафига?

Ну там обрезание неиспользованного кода, оптимизация и обфускация(если кому она нужна).

vortexwolf commented 10 years ago

Вчера установил эту андроид студию, нормально так и не запустилась. Раз 50 делал Clean Project, Invalidate cache and Restart, и постоянно ошибки: вначале "Local path doesn't exist", потом "Gradle version 1.10 is required. Current version is 2.0", и еще видел "Duplicate files copied". И нигде нет нормального ответа что с ними делать. Так я и не понял, чего это все так рекламируют эту студию. В эклипсе таких проблем не было.

Я еще поразбираюсь, какие из сгенерированных файлов важны, и закомитаю build.gradle, settings.gradle. А также, возможно, эти сгенерированные gradlew и wrapper, если без них не заработает.

kalyaganov commented 10 years ago

Gradlew и wrapper нужно оставить. А в студии выбрать "Open project" и выбрать build.gradle.

В gradle-wrapper.properties прописывается какой файл для gradle брать из репозитория.

В build.gradle прописывается версия classpath 'com.android.tools.build:gradle:0.13.0'

Для синхронизации проекта не надо делать clean project. Можно просто нажать на иконку слева 2014-10-03 23 00 07

http://tools.android.com/tech-docs/new-build-system тут есть больше инфы про версии gradle.

vortexwolf commented 10 years ago

Ну да, в gradle-wrapper я указывал и 1.10-all, и 1.12-all. Но иногда студия зачем-то скачивала версию 2.0, хотя я и не просил. В build.gradle у меня версия 0.12.+. Можно потом попробовать с 0.13 и 2.0, но я сомневаюсь, что у меня заработает.

vortexwolf commented 10 years ago

Сделал по-своему, добавив примерно те же файлы, но без удаления библиотек и настроек эклипса. Теперь открывается одинаково и в Эклипсе, и в Студии.