Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518

Gradle объединить ресурсы для двух сборок

02.09.2016, 18:17. Показов 771. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Гуру, посоветуйте!

Делаю "заготовку" под проекты (отлаживаю технологию).

В ней будет 6(!) видов сборки:
debug free
debug shared
debug pro
release free
release shared
release pro

Сделал папки:
debug\
debug_pro\
debug_shared\
main\
release\
release_pro\
release_shared\

Пока все работает, но... ПУТАЮСЬ! одинаковый файл должен лежать в каждой "паре" free/pro/shared (например файл хелпа или класс отладки).

Можно ли хранить лишь одну копию класса или ресурса под (например) "debug free" и "release free" и только один(с другой "начинкой") для "debug pro" и "release pro"?

(тяжело отслеживать "одинаковость" хелпов в релизе и дебюге, но они разные у фрии и про версий - в про нет ограничений)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.09.2016, 18:17
Ответы с готовыми решениями:

Gradle и ресурсы - приложение не видит картинки
Всем привет. Написали адресную книгу. Имеет несколько дефолтных картинок. Структура проекта: src/main/java src/main/java ...

Можно ли просто перекинуть код, манифест и ресурсы из рабочей программы в заготовку-пустышку на Gradle
Наконец решил попробовать перевести часть своих проектов на Gradle. Работаю в студии. И возникли вопросы: 1) Можно ли просто...

Многопоточность для Windows. Ресурсы языка программирования vs Ресурсы WinAPI
Добрый день. Подскажите пож-та, если пишется многопоточное приложение для Windows например на C++ (2011 и выше), то в каких случаях...

5
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
02.09.2016, 20:06
Tester64, я не гуру и не сталкивался пока что с такой сложностью, но примерно понял, о чём речь.
https://blog.robustastudio.com... pp-gradle/ - здесь пишут, что действительно, надобно создать папку на каждый случай отдельно. Если тут не решается при помощи Gradle (нельзя, например, просто выставить путь к файлу вместо того, чтобы держать копии), то может помочь система контроля версий вместе с триггерами. Только вы, вроде, ей не пользуетесь, а зря.
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
02.09.2016, 23:45  [ТС]
Уверен что Git на такое способен (разве что на уровне "библиотек"). Я когда-то поднимал подобную тему по возможностям гита в ветке "контроля версий". https://www.cyberforum.ru/vers... 75337.html

Не по теме:

У меня для подобного на 1С целая система контроля версий написана - между именными файлами между разными проектами из разных папок. Например Rep.r() - есть во всех моих проектах на стадии отладки - когда что-то исправил/дополнил, надо раскидать/обновить Rep.java по всем моим проектам - тяжело развивать/поддерживать 5 проектов сверяя все одинаковые файлы, которые ОЧЕНЬ часто пересекаются в разных коомбинациях.



Вся проблема в том что нагло переназначить пути я не могу!
В каждой из этих папок есть файлы нужные только им! Например файл-класс version.java который статик-константами возвращает мне static final isDebug=true...

или во ВСЕХ Debug/ есть классы отладки заменяющие Log.g(), а во ВСЕХ release есть класс-пустышка с тем-же названием и теми-же методами-пустышками (сжимает код на сотни Килобайт). Сложная система взаимо-пересечений!

Можно конечно так попробовать http://tools.android.com/tech-... -Structure
но это похоже ЗАМЕНИТ папки, а не дополнит/обьединит...

хотел-бы узнать, может кто сталкивался, прежде чем дорабатывать свою программу на 1С... думаю это многим может пригодится!

Добавлено через 3 часа 11 минут
Уря-я-я-я! Кажется получилось! После долгих танцев с бубном! Хвастаюсь:

Добавил независимый блок вида:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
    sourceSets{
        debug{
            java.srcDirs = ['src/main/java', 'src/debug/java', 'src/main_debug/java']
            res.srcDirs = ['src/main/res', 'src/debug/res', 'src/main_debug/res']
            assets.srcDirs = ['src/main/assets', 'src/debug/assets', 'src/main_debug/assets']
        }
        debug_pro{
            java.srcDirs = ['src/main/java', 'src/debug/java', 'src/main_debug/java']
            res.srcDirs = ['src/main/res', 'src/debug/res', 'src/main_debug/res']
            assets.srcDirs = ['src/main/assets', 'src/debug/assets', 'src/main_debug/assets']
        }
// и.т.д.... 6 блоков!
    }
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
02.09.2016, 23:49
Tester64, Андроид весь построен на костылях, как верно недавно заметил Паблито. Тоже недавно колупался с логами, написал примерно так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Log2 {
 
    private static final boolean isDebuggable =  имя_пакета.app.BuildConfig.DEBUG;
 
    public static void i(String tag, String msg) {
        if (isDebuggable)
            Log.i(tag, msg == null ? null : msg);
    }
 
    public static void e(String tag, String msg) {
        if (isDebuggable)
            Log.e(tag, msg == null ? null : msg);
    }
}
В build.gradle прописал:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
    buildTypes {
        debug {
            debuggable true
            buildConfigField "String", "Key", '"abcdef"'
        }
        release {
            debuggable false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            buildConfigField "String", "Key", '"123456"'
        }
    }
Вроде, работает, но кто его знает, может, когда-то и неверно определит константу DEBUG.
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
03.09.2016, 00:40  [ТС]
Вопрос в принципе закрываю... заработало!

Цитата Сообщение от CoolMind Посмотреть сообщение
public class Log2 {
Я вижу ты тоже не фанат стандартного механизма отладчика...
Когда-то (года 2-3 назад) я(новичок) предлагал общими усилиями улучшить этот инструмент - меня высмеяли, обьяснив что и стандартный не плохо работает...

Держи кусочек из моей коллекции:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    public static void i(String tag, String msg){
        String tread_id = "      "+Thread.currentThread().getId();
        int len1 = tread_id.length();
        tread_id = tread_id.substring(len1-6, len1);
        msg = "("+tread_id+"): "+msg;
 
        String trace_str="";
        Throwable t1 = new Throwable();
        StackTraceElement[] frames1 = t1.getStackTrace();
        int count = 0;
        for(StackTraceElement f : frames1) {
 
            if (f.getClassName().equals("com.my.Log2")) continue; // класс с классом лога У ТЕБЯ!
 
            count++;
            if (count == 1) {
                trace_str = trace_str + "" + f.getFileName() + ":" + f.getLineNumber() + " {" + f.getMethodName() + "} [" + f.getClassName() + "]";
                trace_str = trace_str + " ("+f.getFileName()+":"+f.getLineNumber()+")";
            }else{
                trace_str = trace_str + " << "+f.getFileName()+":"+f.getLineNumber()+"";
            }
            if (count >= 3) break;
        }
        if(trace_str!="") {
            int len2=120; // ПОДГОНИ размер до 120 символов, или больше!
            if (msg.length() < len2) {
                for (int i = msg.length(); i < len2; i++) {
                    msg = msg + " ";
                }
            }
            msg = msg + "  | " + trace_str;
        }
        Log.i(tag, msg);
    }
пользуйся... ИМХО удобнее "стандарта".
1) в скобках номер "потока" - удобно для отладки многопоточников
2) в конце стек вызова этого лога (откуда его вызвали с возможностью в Студии прыгнуть прямо на точку вызова)
3) 120 подгони под монитор.
ВАЖНО! не забудь заменить com.my.Log2 на свой класс.


Как видишь мой Log.i НАМНОГО больше стандартного (почти 100кб) - его проще заменить пустыми функциями прямо при сборке релиза...
1
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
04.09.2016, 21:05
Tester64, классно! Я даже и не думал о том, что можно выводить стек других потоков.
У себя заметил глупую ошибку: вместо null надо выводить пустую строку:
Java
1
Log.i(tag, msg == null ? "" : msg);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2016, 21:05
Помогаю со студенческими работами здесь

Посоветуйте пожалуйста какую сборку ОС поставить, либо выберете из двух сборок
У меня просто слабый бюджетный ноутбук ( всего 10к грн стоит ), нужна сборка винды 10 чтобы работала шустро баз сбоев. Краткие...

Gradle sync failed: Invalid Gradle JDK configuration found
Спустя пару часов все таки решил открыть тему. Intellij IDEA 15.0.2 Решил освоить Intellij. Создаю Gradle: Android Application....

Какая из сборок круче для игр
Intel Core i5-4440 Haswell - 9000 рублей ASUS B85M-G - 3000 рублей ASUS GeForce GTX 960 - 11000 рублей Kingston HX318C10F*/8 - 4000...

Какая из этих сборок лучше для игр?
Всем привет, уже который день ломаю голову... Собираюсь купить сборку, но никак не могу определиться какая из них будет лучше для игр. ...

Как отключить генерацию .pdb файлов для сборок?
Суть такова: при открытии приложения студия откуда-то берет кучу .pdb файлов для всех сборок, прописаных в Reference, и помещает их в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru