Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
St@nton
3 / 3 / 0
Регистрация: 04.01.2013
Сообщений: 72
#1

Gradle и ресурсы - приложение не видит картинки - Программирование Android

30.01.2015, 04:43. Просмотров 790. Ответов 2
Метки нет (Все метки)

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

Добавлено через 21 минуту
Всем привет. Написали адресную книгу. Имеет несколько дефолтных картинок.
Структура проекта:
src/main/java
src/main/resources
src/test/java
src/test/resources
Картинки лежат в корне папки src/main/resources и в src/test/resources. Gradle нормально строит проект и его можно запустить через gradle run в командной строке и всё прекрасно работает. Но если попытаться запустить созданный грейдлом батник из папки с дистрибутивом или вручную запустить джарник, то приложение запускается, но не грузит картинки. При этом, если открыть джарник, то картинки из src/main/resources в нём есть. Правда лежат сразу в корне. Не пойму в чём дело. В сети пишут, что ресурсы достаточно держать в src/main/resources и они будут грейдлом к джарнику подключаться. Так, вроде, и происходит, но приложение почему-то не видит картинки.
Предполагаю, что я не правильно настроил файл build.gradle
Вот так выглядит jar таск из файла build.gradle:
Java
1
2
3
4
5
6
7
8
9
10
11
12
jar {
    baseName = 'mvk'
 
    manifest {
        attributes 'Implementation-Title': 'ndeploy',
            'Implementation-Version': '0.1.0',
            'Built-By': System.getProperty('user.name'),
            'Built-Date': new Date(),
            'Built-JDK': System.getProperty('java.version'),
            'Main-Class': mainClassName
    }
}
Может кто сталкивался с подобным?

Добавлено через 23 часа 33 минуты
Может я накодил криво?
Вот так вызываются изображения в приложении:
Java
1
bufImg = ImageIO.read(new File("src/main/resources/icon.jpg"));
Как я уже говорил, если открыть джарник винраром, то картинки лежат сразу в корне, т.е. ни папки "resources", ни, тем более, папок src и main там нет. Может потому и не грузятся картинки? Или может надо было их не просто в папке resources хранить, а поместить их в подпапку или пакедж?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2015, 04:43     Gradle и ресурсы - приложение не видит картинки
Посмотрите здесь:

Gradle объединить ресурсы для двух сборок - Программирование Android
Гуру, посоветуйте! Делаю "заготовку" под проекты (отлаживаю технологию). В ней будет 6(!) видов сборки: debug free debug...

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

Не компилируется приложение. Failed to complete Gradle execution - Программирование Android
Не могу скомпилировать приложение в Андроид Студио. При перезапуске появляется розовое сообщение (первый скрин), когда пытаюсь...

Не запускается приложение: Gradle sync failed: A problem occurred configuring project ':app' - Программирование Android
создаю новый проэкт. По видео курсам должен появиться шаблон смартфона, а у меня его нет. messages gradle sync >>Gradle...

Класс не видит ресурсы через контекст - Программирование Android
Доброго вчера. Столкнулся с проблемой, может конечно слишком намудрил с классами но целиком переделывать логику пока не хочется. ...

Android Studio - не видит ресурсы. Бред какой-то - Программирование Android
http://prntscr.com/7fr7xm Такая проблема, помогите

Приложение не видит интернет на планшете - Программирование Android
Здравствуйте! Написал приложение на Java+Eclipse, которое делает Post-запросы (есть разрешения "android.permission.INTERNET",...

Андроид студия не видит библиотек, но приложение компилируется - Программирование Android
Я вчера делал свое приложение, все сохранил а сегодня зашел, а андроид студия не видит библиотек, но приложение компилируется и на телефоне...

Папки .oracle_jre_usage, .gradle - Программирование Android
В моих документах создались папки .gradle, .android. Вроде ничего не устанавливал сам туда. Я так понимаю от эмулятора папки по умолчанию...

Gradle - конфликт библиотек - Программирование Android
Добрый день. Пытаюсь сделать приложение для push собщений от гугл. Добавляю зависмости в Gradle, и он начинает ругаться на ...

MinifyEnabled в build.gradle - Программирование Android
Можете объяснить за что отвечает параметр minifyEnabled в build.gradle файле? Он делает абфускацию кода или что то другое? Добавлено...

TargetSdkVersion в build.gradle - Программирование Android
compileSdkVersion - это версия при помощи которой я компилирую свое приложение, а targetSdkVersion - это версия, максимальная версия,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 402
30.01.2015, 10:15     Gradle и ресурсы - приложение не видит картинки #2
bufImg = ImageIO.read(new File("src/main/resources/icon.jpg"));
это дичь полная так ресурсы выдергивать.
Все картинки в приложении должны лежать в папке res/drawable
Доступ к ним получать очень просто getResources().getDrawable(R.drawable.my_icon);
St@nton
3 / 3 / 0
Регистрация: 04.01.2013
Сообщений: 72
31.01.2015, 04:12  [ТС]     Gradle и ресурсы - приложение не видит картинки #3
Дело в том, что у нас не андроид приложение. Обычное ява-приложение со swing-gui. Я создал тему в этом разделе, потому что тут gradle гораздо чаще обсуждается. Как мне кажется проблема в настройке файла build.gradle, потому что грейдл строит и запускает приложение без проблем, а вот джарник, собранный самим же грейдлом, не корректно работает.

Добавлено через 12 часов 1 минуту

Нашёл решение.
Как я и предполагал, проблема была в настройке файла build.gradle Только нужно было не таск jar конфигугировать,

а таск applicationDistribution.

В итоге, чтобы всё работало, нужно просто в папке с дистрибутивом создать такую же структуру папок, как и путь, по которому приложение обращается к ресурсу.

При такой структуре проекта:
src/main/java
src/main/resources
src/test/java
src/test/resources

и таком обращении к ресурсам:
bufImg = ImageIO.read(new File("src/main/resources/icon.jpg"));

нужно добавить следующее в файл build.gradle:

Java
1
2
3
4
5
6
7
8
9
10
11
task addImages {
    def images = file("$buildDir/resources/main")
    outputs.dir images
    doLast {
        images.mkdirs()
    }
}
 
applicationDistribution.from(addImages) {
    into "bin/src/main/resources"
}
Источник: Gradle Chapter 45
Yandex
Объявления
31.01.2015, 04:12     Gradle и ресурсы - приложение не видит картинки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru