420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
1 | |
Можно ли просто перекинуть код, манифест и ресурсы из рабочей программы в заготовку-пустышку на Gradle08.08.2014, 21:32. Показов 4032. Ответов 19
Метки нет (Все метки)
Наконец решил попробовать перевести часть своих проектов на Gradle. Работаю в студии. И возникли вопросы:
1) Можно ли просто перекинуть код, манифест и ресурсы из рабочей программы в заготовку-пустышку на градле? Или надо хитро распределять по папкам? (в пустышке нашел исходники в разных папках ) 2) Тяжело ли подключать библиотеки на яве? 3) Тяжело ли подключить библиотеки на с++? Где должны хранится NDK? Не нашел пока папки jni (в чужих проектах). 4) Можно ли изменить положение кода в папке на старый (так привычнее и дерево файлов проще)? Повлечет ли это проблемы? 5) Тяжело ли подключить обфускацию(шифрование кода) из студии или командной строки? 6) Тяжело ли "подписывать" ключем приложение из студии или командной строки? 7) Есть ли сложности полной сборки из консоли? С обфускацией и подписыванием? 8) Есть ли нюансы компиляции в градле для выкладывания на гугл-маркет? 9) Какие ключи нужны для компиляции из командной строки релиз версии? Пока учился работать с пустышкой, при запуске долго думало, а потом писало что-то вроде "не могу синхронизировать Gradle": Error running app: Gradle project sync failed. Please fix your project and try again. Кто и с кем синхроинизруется? Как это отключить? Проект личный - исходники должны всегда оставаться на моем комьютере и только на нем - никаких SVN... В пустышке созданной Студией в заголовке студии пишет "My Application". Похоже это было введено при создании проекта. Но изменить не могу - уже все (вроде) настройки проекта перебрал - только в фалах проекта нашел(в XML), но боюсь менять. Привык делать пустышку, насыщать ее отладочными классами-утилитами и моими стандартными класами-ползеностями, а потом ее копировать для новых проектов и изменять названия, а не создавать проект с нуля студией каждый раз... Что еще посоветуете узнать знать о Градле до работы? В основном нужна надежная компиляция из командной строки без редких, но глюков Студии и без обязательного запуска на устройстве или эмуляторе...
0
|
08.08.2014, 21:32 | |
Ответы с готовыми решениями:
19
Линейная задача. Можно просто код программы Gradle и ресурсы - приложение не видит картинки можно ли упростить этот код ,код не мой просто нужно чтобы он был проще) Gradle объединить ресурсы для двух сборок |
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
11.08.2014, 13:43 [ТС] | 2 |
Ну-же! помоги-и-ите! Очень нужна помощь... Ну ОЧЕНЬ нужна сборка релиза через консоль (с подписаными ключами и обсфукцией)!
уже сотню часов потратил(не считая попыток с АНТ), но и половины ответов не получил... Скачал половину гитхаба с упоминанием градле, но запустилость 2 проекта (и то в старой схеме) - в упор градле не видит. Студия последняя, обновленная. И никто не захотел после установки запускаться из консоли. Даже после подкидывания local.properties (путь к СДК) из единственного рабочего проекта, созданого в самой студии. Некоторы без вопроса откуда-то и не известно куда качают сдк нужной ей версии(не нужна такая самодеятельность! проект должен быть оффлайн! отключать инет могу только для тестов). Раньше знал - любой проект станет рабочим, если из пустышки (старой схемы) в него перекинуть папку .idea и файл Zero.iml (проект назывался зеро)... Потом 3-4 переименовывания настроек из самой студии и возможно добавление библиотек... как сделать рабочей проект градле? Ни импорт ни открытие не помогают! "My Application" победил(хотя через Ж...) - вручную нахожу файл .idea\.name и там меняю... обновится после переоткрытия проекта в студии... В настройках проекта в студии так и не нашел поля, отвечающего за это...
0
|
12.08.2014, 15:37 | 3 | ||||||||||
Можно. Но проще просто написать свой build-скрипт.
Нет. Вот пример подключения бибилиотек с репозитория и локальной:
Можно, проблем не будет. Новая структура проектов намного удобней, имо. Две строчки. Правила, конечно, нужно отдельно писать.
Из консоли - это одна команда. Нет. Релизные, конечно. И почему ключи? Ключ, ведь. Добавлено через 1 минуту Еще одно замечания. Сборка в студии и сборка в консоли, это одно и тоже. Потому что, студия собирает через консоль.
1
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||||||||||||||||
12.08.2014, 19:51 [ТС] | 4 | |||||||||||||||
Этот гранлде - кошмар какой-то! Никогда на криворукость не жаловался.... А тут много месяцев "вьехать" не получается.... Накачал уже гиги примеров с гитхабов, но даже запустить их не получилось!
Скачал этот пример (https://github.com/DrKLO/Telegram), но как запустить его в студии??? Простое открытие конечно не сработало (хотя надеялся). Импорт потребовал указать кучу настроек... и ни одна из комбинаций пока не сработала. Что значит Use local gradle distribution? Gradle home? Project format? Use customizable gradle wrapper (почти сработало только с этой галочкой)? После этого проект открылся, но кнопка запуска (зеленая стрелка) не активировалась! Хотелось бы работать с этими проектами в студии. Что нужно для подключения? Студия последняя (обновлена). Я так понял, "build-скрипт" это build.gradle. Но в некоторых проектах их 2(!) второй в папке gradle. За что отвечает этот скрипт??? В скаченом примере (телеграм) он вообще пустой и один. Его нужно заполнить своими настройками? По инструкциям пробовал работать со своей пустышкой (созданной в студии без начинки - Hello world). ЭТО работает:
Раньше код и ресурсы были в первом уровне вложености папок. Причем понятных и рядом... В пустышке у меня код находится в app\src\... (2й уровень) и здесь app\src\main\java\... (4й уровень) почему? Манифеста 3 штуки: app\src\main\AndroidManifest.xml app\build\intermediates\manifests\release\AndroidManifest.xml app\build\intermediates\manifests\debug\AndroidManifest.xml Причем все разные. Ресурсы нашел здесь: app\src\main\res\ Это все в build.gradle???
0
|
12.08.2014, 22:05 | 5 |
Только один:
app\src\main\AndroidManifest.xml все остальное не трогай. суть в том, что есть такая штука как манифест мерджер. в билд-скрипте указываешь версию и сдк: minSdkVersion 8 targetSdkVersion 19 versionCode 1 versionName "1.0" а потом этот мерджер сам добавит их в манифест при сборке. Для того что бы заработал assembleRelease, нужно в билд-скрипте задать инструкции для релизной сборки. это в секции buildTypes. там должны быть указаны путь к ключу, пароль, алиас и его пароль. Здесь все есть: https://github.com/DrKLO/Teleg... ild.gradle в папку gradle пока что вообще не ходи. в студии все иначе чем в эклипсе, здесь проект один. для всего проекта создается свой билд-скрипт, в проекте может быт несколько модулей, для каждого модуля так же свой билд-скрипт. Вот это проект: https://github.com/DrKLO/Telegram а это модуль: https://github.com/DrKLO/Teleg... ssagesProj Ну хз, что там такого не понятного. Если я захочу написать часть кода на другом языке, например scala, я просто создам еще одну папку в app\src\main\ и у меня получится их две app\src\main\java\ app\src\main\scala\ потом добавлю немного магии и все это соберу в один проект без проблем. разве не удобно?
1
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
13.08.2014, 06:07 [ТС] | 6 |
Кажется начал понимать... По крайней мере смог что-то вставить в свой файл из https://github.com/DrKLO/Teleg... ild.gradle
И оно проглотило изменения (раньше по учебника пробовал - без ошибок проглотило лишь "version"). Надо теперь помучить систему изменениями несколько дней... тогда уже появятся следующая "партия" вопросов... А пока... 1) Уточните пожалуста: Если это не указывать в билд-файле, будет использоваться то что было в оригинальном манифесте? Или обязательно указывать в билдере? 2) Что нужно для импорта старых (еклипс-овских) проектов в градле? Если не пользоваться для импорта Студией (все равно обычно не работает). Если я напишу билдер-переходник (со старыми позициями папок) и буду перекидывать папку .idea из пустышки, этого хватит для тестового запуска??? Раньше перекидывал эту папку и файл *.iml из заготовки в старой схеме для нормального подхватывания в старой схеме...
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
13.08.2014, 07:45 | 7 |
1. Да, обязательно.
2. Из эклипса экспорт в градл. Потом импорт полученого в студию.
0
|
13.08.2014, 11:39 | 8 | |||||
Можно делать экспорт-импорт, но я просто писал свой билд-скрипт, т.к. эклипс уже давно удалил.
Не совсем понятна роль проекта-пустышки, АС должна при импорте проекта сама создать папку .idea. Вот типичный билд-скрипт для проектов из эклипса:
2
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
13.08.2014, 16:49 [ТС] | 9 |
Я тоже удалил эклипс, но часто изучаю код из гитхаба. Импорт в студию редко срабатыват "по человечески". Проще перекинуть .idea и *.iml из пустышки и проект уже просто открывается как студийный. Больше ничего не надо. Не думает над "превращением" по несколько минут, а просто открывает. Иногда нужно в настройках студии просто добавить библиотеки (если они есть) и все... Любой китайкий код откроется. Если в нем ошибок...
А еще... Если я начинаю новый проект, то проще воспользоваться заготовкой-пустышкой, чем проходить визард в студии. Заготовка уже подогнана под мой стандарт. И напичкана кучей отладочных и просто полезных классов. Хотя-бы цветным диалогом "вы действительно хотите выйти - ДА/НЕТ" на бэк кнопку. За билд скрипт спасибо! Буду изучать... p.s. Кто и зачем поменял тему моего вопроса? "Переход на Gradle" логичнее чем первый из 9ти моих вопросов... "Можно ли просто перекинуть код, манифест и ресурсы из рабочей программы в заготовку-пустышку на Gradle?" Уже давно что однозначно ответили НЕТ и перешли к следующим нюансам... Теперь отвечают на вопрос "Можно ли изменить положение кода в папке на старый и чем новый удобнее".
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
14.08.2014, 17:42 [ТС] | 10 |
Еще одна причина разобраться с градле... после очередного обновлении студии она просто выдает ошибку на попытке скомпилировать не градле проекты... Работа остановилась! Проекты подвисли... Если что-нибудь новое придумал, по быстрому внедрить не могу. А так, хоть в блокноте, если вдруг обнаружил ошибку (я или заказчик) исправить смогу... Теперь надо потратить часа полтора минимум что-бы переустановить студию с нуля и вернуть мои настройки... Самое обидное - градле проект продолжает работать! Интеренсно, это супер-надежность градле или "ненавязчивое" подталкивание гугла к новой платформе? И ведь гады не предусмотрели режим "переустановки" студии с сохранением юзерских настроек - все сносят, а иногда и это не помогает - надо ставить в чистую папку...
0
|
14.08.2014, 17:50 | 11 |
Чтоо??
Я ставил студию два раза. Первый - когда только перешел, версия была 0.2.+, успешно ее обновлял аж пока не вышла бета. Второй - бета версия, пришлось удалить старую и поставить заново, после чего просто импортнул настройки вместе с плагинами.
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
14.08.2014, 18:43 [ТС] | 12 |
После обновления с 0.8.2 на 0.8.6 перестали работать все старые (не градле) проекты.
Выдает мутную ошибку: Кликните здесь для просмотра всего текста
Error:Internal error: (java.lang.NoSuchMethodError) com.google.common.io.Closeables.closeQuietly(Ljava/io/CloseableV
java.lang.NoSuchMethodError: com.google.common.io.Closeables.closeQuietly(Ljava/io/CloseableV at com.android.sdklib.internal.project.ProjectProperties.parsePropertyStream(Projec tProperties.java:541) at com.android.sdklib.repository.local.LocalPlatformPkgInfo.createAndroidTarget(Loc alPlatformPkgInfo.java:158) at com.android.sdklib.repository.local.LocalPlatformPkgInfo.getAndroidTarget(LocalP latformPkgInfo.java:95) at com.android.sdklib.repository.local.LocalSdk.getTargets(LocalSdk.java:725) at com.android.sdklib.repository.local.LocalSdk.getTargetFromHashString(LocalSdk.ja va:745) at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidTarget(AndroidJpsUtil.java:37 5) at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidPlatform(AndroidJpsUtil.java: 448) at org.jetbrains.jps.android.builder.AndroidPreDexBuildTarget.computeRootDescriptor s(AndroidPreDexBuildTarget.java:110) at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.addRoots(BuildRootIndexImpl.j ava:72) at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.<init>(BuildRootIndexImpl.jav a:62) at org.jetbrains.jps.cmdline.BuildRunner.load(BuildRunner.java:76) at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:198) at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:113) at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:133) at org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.j ava:41) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) У меня подобное случилось тоже впервые. Возможно криво установилось обновление. Тоже преустанавливал только 2 раза. Теперь думаю чем заняться... переустанавливать студию (надеясь что все исправится) - востанавливать настройки и кучу настроек (благо самое ценное выписывал в текстовый файлик). или добить градле и начать переводит самое ценное на него (долго, но в случае подобной лажи смогу компилить из удобного батника)... Склоняюсь в сторону второго... Надежность исходников и инструментов превыше всего! А если бы это была моя основная работа(что надеюсь когда-нибудь случится)? Добавлено через 2 минуты Еще бесит/удивляет... В обновлении пишет - обновление занимает 9 Мб... Но для обновления ему 500 мегабайт не хватает для "временных файлов"...
0
|
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
|
|
14.08.2014, 19:59 | 13 |
Tester64, самое главное, это app/src, там и манифест и res и java, это и старайся сохранить) А уж как ты это все потом подключишь, через какую систему, будь то градл мрадл мармеладр, так и будет работать.
Мне тоже не понравился поначалу Gradle, но вроде как с новыми версиями Android Studio его становится все проще и проще использовать. Главное запомнить, что править надо app/build.gradle а то я правил build.gradle с верхнего уровня, и естественно советы из интернета не помогали))) А мучался я также как ты, и до сих пор иногда мучаюсь.
1
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
14.08.2014, 20:10 [ТС] | 14 |
Спасибо! Я тоже повторил эту ошибку!
А где можно получить все ключи по build.gradle? Help/man/html/pdf...
0
|
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
|
|
14.08.2014, 21:35 | 15 |
Tester64, я думаю что тут: gradle.org )))
но если надо быстрое решение, то в гугле.
1
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
15.08.2014, 00:27 [ТС] | 16 |
не... пока нужно просто просмотреть основные возможности скриптов... Что я вообще могу туда запихнуть...
Уже нашел необычное команду println 'text'... буду тестить все по очереди... ...жаль на руском статей мало. Хотя-бы таблицу заголовков хелпа перевели... Я знаю английский, но не на столько что-бы учить новые технологии без словаря... А переводчики сильно коверкают термины. Добавлено через 2 часа 11 минут Пока ничего не получается! Когда-то сделал успешную пустышку. Лежала она в папке wzg. Как добился - не помню. Начинал с визарда а потом гонял параметры по примерам с гитхаба. Без махинаций в коде - только градле параметры... Сделал с нее копию в папку test2. Тоже запустилась (тот-же результат - хеллоуворд). Обрадовался.... Удалил (переместил/спрятал) wzg. test2 тут-же перестал работать! Глобальным поиском по папке test2 нашел кучу упоминаний полной ссылки к проекту wzg (d:\my...path\wzg\) Как его "отвязать" от старой папки? Значок с зеленым роботом около зеленой стрелки пуска стал с красным ошибочным крестиком. Пишет что не может найти манифест по указаному пути... Где поменять путь в настройках не нашел! Моя текущая цель - научиться надежно клонировать градле проекты и переносить их в произвольные папки без потери работоспособности кода...
0
|
15.08.2014, 17:26 | 17 |
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
15.08.2014, 18:40 [ТС] | 18 |
Встречал это... Это основы. Полезны для явы, и не очень для студии...
Меня сейчас беспокоит такое: Рабочий проект из папки test6 переношу в test7. Запускаю, и получаю "мяггую ошибку" (которую можно проигноровать) с прошлыми переносами - не найден test6, test5, test4 Сказал что папка не добавлена к градле проекту - добавить? ... очущение буд-то вернулся в еклипс-разработку - каждый проект нужно импортировать и не нельзя переносить Можно ли не привязывать проект к полному пути и папке??? И если нельзя, то как по быстрому ее привязывать к новому пути, полностью отвязав от старого?
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
15.08.2014, 21:51 | 19 |
А в чем проблема импортировать? Делается за 10 секунд. Если полностью скопировать папку, ее уже не открыть как проект - только импорт. Хотя может есть скрипты и на этот случай, но как по мне удобнее просто импортировать.
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
16.08.2014, 01:45 [ТС] | 20 |
Не знаю как Студия импортирует из грандле проектов, но чужие обычно гадко... У меня работает после этого меньше 1% проектов...
Старые проекты (не градле) можно просто перенести и сразу открыть. У меня в них куча батников собственного изготовления - они тоже сами выясняют откуда запускаются... Думал градле умнее моих батников... Согласен что нужо указать папку с SDK и ADB... Но все остальное зачем указывать? И почему не имею права просто переименовать папку? Тут-же посл открытия проекта в нем создается еще один файл НоваяПапка.iml . Причем наглое стирание СтараяПапка.iml убивает проект... Причем (кажется - вроде работало) компиляция через gradlew.bat не зависит от папки проекта... Лишь бы код был правильным...
0
|
16.08.2014, 01:45 | |
16.08.2014, 01:45 | |
Помогаю со студенческими работами здесь
20
Каким образом можно вычистить весь код из рабочей книги Excel? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |