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

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

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

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

30.01.2015, 04:43. Просмотров 855. Ответов 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 хранить, а поместить их в подпапку или пакедж?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2015, 04:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Gradle и ресурсы - приложение не видит картинки (Программирование Android):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
30.01.2015, 10:15 #2
bufImg = ImageIO.read(new File("src/main/resources/icon.jpg"));
это дичь полная так ресурсы выдергивать.
Все картинки в приложении должны лежать в папке res/drawable
Доступ к ним получать очень просто getResources().getDrawable(R.drawable.my_icon);
0
St@nton
3 / 3 / 0
Регистрация: 04.01.2013
Сообщений: 72
31.01.2015, 04:12  [ТС] #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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2015, 04:12
Привет! Вот еще темы с ответами:

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

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

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

Программа не видит ресурсы - C#
Добрый день. Я добавил в проект визуал студии 2010 ресурс и вот такой код: class Program { static void...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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