Воллієва мережа бібліотека Android


120

У мене є кілька питань щодо використання Воллі в моїх проектах:

  1. Чи можна цю бібліотеку використовувати в будь-якому проекті Java або просто Android?
  2. Я бачу тут кілька відділень і жодної документації, з якої гілки слід починати. З якої гілки я повинен почати?
  3. Як ви інтегруєте цю бібліотеку у власний проект? Який підхід краще: Створіть Воллі як окремий проект бібліотеки, накрутіть банку і покладіть її у свій проект або скопіюйте весь вихідний код всередині вашого проекту?

7
Щоразу, коли ви бачите кілька гілок у git repo, завжди слід припускати, що вони хочуть, щоб ви клонувались і почали використовувати головну гілку. Будь-яка інша галузь є вторинною.
ІгорГанапольський

Ви також можете додати Volley як підмодуль git. Детальне пояснення: gitsubmoduleasandroidtudiomodule.blogspot.in
Ратан

Відповіді:


204
$ git clone https://android.googlesource.com/platform/frameworks/volley
$ cd volley
$ android update project -p .
$ ant jar

Потім скопіюйте bin/volley.jarу свою libs/папку і ви перейдете!

джерело


8
ПРИМІТКА. Для цього вам доведеться виправити вашу змінну PATH, для цього в Linux зробіть наступні дії (у своєму .profile або де б ви не помістили змінні PATH): 1. експортуйте ANDROID_HOME = <android-sdk-dir>
Johan S

104
Дивно, що мені довелося перейти до 5 різних результатів Google, щоб знайти вказівки щодо встановлення власної мережевої бібліотеки.
Gowiem

24
Серйозне питання: Чому ніде не існує прямого завантаження файлу Jar від залпу? Чи є якась проблема з одним універсальним файлом JAR для цього?
PGMacDesign

5
Хтось ще отримує "залп - це не валідний проект (AndroidManifest.xml не знайдено)
Ерсен Осман

8
@ChintanSoni, ~ 3 місяці тому, перед подачею git c9ef93a сказано: "Переїзд з Градле в Мейвен". Замість запуску "android update -p.", Ви запускаєте команди maven, "mvn compile", а потім "mvn package."
Джаред Месенджер

73

На уроці "Волейбол" Google дає вказівку як додати Воллі до нашого проекту як проект бібліотеки Android, чи як .jarфайл.

Ось як створити .jarфайл Volley за допомогою Android Studio або Eclipse :

ПРИМІТКА:

В обох випадках я пропоную перейменувати .jarфайл на дату останнього вчинення Воллі, тобто volley_20150319.jarщоб зробити версію простою.


Android Studio:

  1. Клоніруйте сховище Volley через Git.
  2. Імпортуйте проект у Android Studio. (Я зазвичай вибираю файл gradle проекту при імпорті в Android Studio)
  3. Побудуйте проект. (Мені довелося змінити параметри збірки gradle, щоб відображати останні інструменти збирання та версію gradle, але зазвичай це актуально).
  4. У файловому провіднику перейдіть до [your local path to volley]/build/intermediate/bundles/
  5. І в папках, debugі в releaseпапках ви знайдете файл JAR з назвоюclasses.jar .
  6. Скопіюйте файл JAR у свою libs/папку.
  7. Синхронізація Gradle, і ви закінчили.

Затемнення:

  1. Клоніруйте сховище Volley через Git.
  2. Імпортуйте проект у затемнення.
  3. Клацніть правою кнопкою миші проект та виберіть Експорт ...
  4. Виберіть файл Java / JAR .
  5. Нас цікавить лише папка src та більше нічого. Найпростіший спосіб переконатися, що вибрано лише це - скасувати вибір проекту, а потім вибрати папку src всередині.
  6. Перевірте параметр Експортувати файли та ресурси, створені класом .
  7. ВІДКЛЮЧНО: Якщо ви хочете, щоб Javadoc був видимим, також виберіть Експорт ресурсів вихідних файлів Java .
  8. Створіть файл JAR і помістіть його у свою libs/папку.

1
Це чудово. Найважливішою порадою для мене була №5 (виберіть лише src), оскільки це допомогло в інших бібліотеках, які я намагався включити.
wblaschko

1
Ти врятуєш мені день! "тільки перевірити src папку" працює для мене :)
Wooseong Кім

48

1) Чи може ця бібліотека також використовуватися як мережева бібліотека в звичайних Java-проектах? АБО це суворо лише для Android

Це лише для Android, оскільки це залежить від специфічних для Android класів. Про це можна сказати, подивившись вихідний код такихRequestQueue предметів .

2) Я бачу тут кілька відділень і жодної документації, з якої гілки слід починати. З якої гілки я повинен почати?

Вказівки з презентації Google I | O полягали в тому, щоб просто клонувати gitрепо, які masterза замовчуванням витягнуть з гілки.

3) Як інтегрувати цю бібліотеку у власний проект? Який підхід краще: Створіть Воллі як окремий проект бібліотеки, накрутіть банку і покладіть її у свій проект або Скопіюйте весь вихідний код всередині вашого проекту?

Інструкція з презентації Google I | O полягала в тому, щоб додати вихідний код до вашого проекту. Особисто я вважаю це химерним підходом.


Фатально: віддалена помилка: Заборонено доступ (недоступний у вашій країні)! Якщо я завантажую jar і додаю jar до свого проекту, чи працює він у моїй країні? Або навіть як я можу завантажити банку, не клонуючи її ?!
Dr.jacky

Так, їх вказівки, схоже, пропонують використовувати гілку 'master', але я вважаю це трохи дивним, враховуючи, що майстер, здається, активно змінюється. Можливо, було б краще знайти останню версію випуску.
Том

41

ви можете завантажити vole.jar

Джерело: AndroidHive

скопіюйте в Volley.jarlibs

Тоді

Клацніть правою кнопкою миші volley.jar ->Додати як бібліотеку

введіть тут опис зображення


4
Дуже дякую за це. Всі просто кажуть "скопіюйте банку в папку", а потім залиште її.
Хосер

cURL каже, що цю банку не оновлювали з 01 травня 2014 року
yuval

Як щодо нової банки версон?
f470071

26

Бібліотека Volley тепер опублікована проектом Android Open Source:

dependencies {
    implementation 'com.android.volley:volley:1.1.0'
}

4
Переконайтесь, що ви видалили vole.jar зі своєї папки libs, якщо у вас там є. І видаліть посилання на vole.jar з файлу програми / build.gradle.
Срібний Сагелій

16

ОНОВЛЕННЯ: Volley зараз офіційний і доступний через JCenter. Ось як їх імпортувати:

compile 'com.android.volley:volley:1.0.0'

ДЕПРИКАТИРОВАНИЙ ШЛЯХ:

Якщо ви використовуєте Gradle, ви можете імпортувати Volley звідси .

dependencies {
    compile 'com.mcxiaoke.volley:library:1.0.+'
}

Примітка

Це неофіційне дзеркало (з деяким незначним виправленням, детальніше див. Журнал змін .) Для бібліотеки Android залпів , вихідний код періодично синхронізується з офіційним сховищем залпів.


1
Де у файлі це має бути?
Таш Пемхіва

Якщо ви використовуєте Gradle для створення програми, у вашому проекті має бути файл build.gradle. Якщо ви не використовуєте Gradle, перегляньте інші рішення, розміщені тут.
C0D3LIC1OU5

1
Дякую, але я мав на увазі, де у файлі build.gradle має бути зазначене вище?
Таш Пемхіва

Як заявив у своєму коментарі The Metal Beard Всередині залежностей, якщо у вас є вже заявлена. Якщо ні, оголосити це в кінці файлу, але не включати його всередину тегів Android
Zsolt Boldizsár

2
ПРИМІТКА. Це не офіційно. Це дзеркало Воллейського репо.
Itai Hanski

13

Багато способів

Оскільки є багато відповідей щодо єдиного підходу, але жоден, який порівнює різні способи отримання залпу та бігу, я також поклав свої два центи. Не соромтеся також редагувати / покращувати цю відповідь.

Додати його як бібліотеку - (швидке рішення)

  1. Завантажте його з: androidhive
  2. Помістіть його у свою [MyProjectPath]/app/libs/папку
  3. В Android Studio right-clickна ньому і виберітьAdd As Library...

Вихідні файли з git - (досить офіційне рішення)

  1. Завантажте / встановіть клієнт git (якщо у вас його ще немає у вашій системі) (othervise viagit clone https://github.com/git/git ... sry bad, але не втримався ^^)
  2. Виконати git clone https://android.googlesource.com/platform/frameworks/volley
  3. Скопіюйте comпапку зсередини [path_where_you_typed_git_clone]/volley/srcу app/src/main/javaпапку своїх проектів (або замість неї інтегруйте, якщо у вас вже є папка com !! ;-))

    Файли відображаються відразу в Android Studio. Для Eclipse вам доведеться перейти right-clickв srcпапку і спочатку натиснути refresh(або F5).

    Робити це через git - це те, що офіційно пропонується в навчальних програмах для Android ( дивіться тут ).

Gradle через "неофіційне" дзеркало - (динамічне рішення)

  1. У src/build.gradleфайл вашого проекту додайте наступну залежність від залпу:

        dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            // ...
    
            compile 'com.mcxiaoke.volley:library:1.+'
        }
  2. Клацніть на пункт, Try Againякий повинен відразу з’явитися у верхній частині файлу, або просто, Buildякщо ні

    Основна "перевага" тут полягає в тому, що це дозволить оновлювати версію для вас, тоді як у двох інших випадках вам доведеться вручну оновлювати залп.

    Що стосується "зворотного боку", це офіційно не Google, а дзеркало сторонніх тижнів.

    Але обидва ці пункти дійсно відносяться до того, що вам потрібно / хочете. Крім того, якщо ви не хочете поновлення, просто поставити потрібну версію там замість наприклад compile 'com.mcxiaoke.volley:library:1.0.7'.


11

Якщо ви використовуєте GIT для власного управління кодом, чому б просто не додати його як підмодуль до проекту ...

git submodule add https://android.googlesource.com/platform/frameworks/volley -b master Volley

Таким чином, по мірі оновлення бази коду Volley, оновити її просто ...

git submodule git pull

Ви можете поширити основний клас Volley у своєму власному проекті для модифікації, що не дає вам заважати кодувати свої зміни щоразу, коли рамки Volley оновлюються.


Проблема полягає в тому, що проект залпу не визначається як андроїд-бібліотека.
Ніколя Локін

Ви повинні встановити Volley у своїй IDE як бібліотеку.
Simon.Ponder

Це дозволить змінити властивість проекту, і таким чином підмодуль буде у стані "модифікований". Через це я не хочу використовувати це рішення. З проектом, "правильно визначеним", я мав би використовувати підмодуль, але не для Воллі. Я створив банку Воллі до цих пір.
Ніколя Локін

1
Ви все ще можете витягнути з джерела Google, коли вони вносять зміни. Якщо ви хочете змінити їх код і зберегти його, а потім клонуйте його, зробіть свою локальну репортажну репо-версію двома різними віддаленими пристроями та використовуйте одне, щоб витягнути з них, а друге - для натискання коду, який ви хочете зберегти. Я не впевнений, чому це заважає вам мати підмодуль як змінений, якщо ви зберігаєте свій проект де завгодно, і ви відштовхуєтесь від батьківського проекту, не здійснюючи підмодуль ніде, ви все одно натиснете на посилання на фіксацію підмодуля коли ви додали його.
Simon.Ponder

8

Ось невеликий швидкий старт для запиту на Volley Http, його інтегрувати надзвичайно просто.

  • Вам потрібна програма із залпами RequeQueue:

    1. private static RequestQueue reqQueue;

Ви можете помістити його у свій клас додатків і стати статично доступним через getRequestQueue ().

  • Тоді ви вже можете використовувати метод RequestQueue.add () для виконання першого запиту з Volley.

    2. reqQueue.add(...)
  • Використовуйте JsonObjectRequest для запиту по одному об’єкту, використовуйте JsonArrayRequest для запиту списку об'єктів.

    queue.add(new JsonArrayRequest(URL, new Listener<JSONArray>() {
    
        @Override
        public void onResponse(JSONArray response) {
            //SUCCESS
        }}, new ErrorListener() {
    
        @Override
        public void onErrorResponse(VolleyError error) {
            //ERROR
        }}));
  • Не забудьте правильно встановити заголовок Http Expires на стороні вашого сервера, щоб Воллі міг використовувати вбудовану функцію кешування


2
Перш ніж використовувати api RequestQueue, вам потрібно додати цю бібліотеку до свого проекту ...
IgorGanapolsky

2

Ось ще один спосіб з Android Studio від Gradle:

Вам потрібно наступне у своєму build.gradle проекту (на рівні вашої програми):

repositories {
    maven {
        url 'https://github.com/Goddchen/mvn-repo/raw/master/'
    }
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // You must install or update the Support Repository through the SDK manager to use this dependency.
    compile 'com.android.support:support-v4:20.+'
    compile 'com.android:volley:1.+'
}

Погана ідея це зробити. Ця бібліотека там 1 рік. І сумнівайтеся, він буде оновлений ;-)
Патрік Боос

1

Спочатку клонували проект від Git

$git clone https://android.googlesource.com/platform/frameworks/volley
  • імпорт залпу в затемнення.
  • Клацніть правою кнопкою миші на вашому проекті-> Властивість-> Android
  • Додайте бібліотеку-> виберіть залп (якщо ви там не бачите залп, бібліотека волейболу rigth click, майно goto та android та натисніть бібліотеку)
  • після додавання залпу в якості бібліотеки ви можете почати використовувати його у своїй програмі.

Базовий клас залпу, який ви повинні знати, є

  • Черга запитів
  • JsonArrayRequest
  • JsonObjectRequest

Для використання залпу спочатку потрібно створити об’єкт RequestQueue

RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());

Друге -> зробіть Запит, використовуючи або JsonArrayRequest або JsonObjectRequest

JsonArrayRequest mJsonRequest = new JsonArrayRequest(url, 
            new Listener<JSONArray>() {

                @Override
                public void onResponse(JSONArray response) {
                    // here you can parse response and use accordingly
                }
            }, new ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // here you will receive errors and show proper message according to error type

                }
            });

і нарешті поставив запит у чергу. тобто

mQueue.add(mJsonRequest);

Також я б запропонував вам зробити Singleton із RequestQuery.


1

Додавання банку "Волей" (або будь-яку банку) до Android Studio 1.0.2 тепер значно простіше. Скопіюйте за межами Android Studio, скопіюйте volley.jarїх <yourproject>/app/libs(що вже має існувати). Оскільки налаштування Gradle за замовчуванням включає цей рядок:

 compile fileTree(dir: 'libs', include: ['*.jar'])

... все зараз налаштовано. Можливо, це не так, тому що за замовчуванням у структурі проекту (File -> Project Structure)не відображається libsкаталог. Щоб побачити її потрібно вам потрібно використовувати блешню трохи вище точки зору структури проекту до зміни Androidдо Project.

Ви можете бачити, що він працює, створивши додаток (можливо, не потрібно), а потім почати вводити такий код:

 RequestQueue request

Ви побачите, що Android Studio пропонує вам завершити роботу RequestQueue (com.android.volley).


1

Це також досить легко отримати налагодження AAR, побудований, якщо це ваші уподобання.

git clone https://android.googlesource.com/platform/frameworks/volley

Потім зробіть новий проект студії Android (просто звичайний проект додатків) в іншому каталозі. Після завершення додайте новий підмодуль (Файл | Новий модуль). Виберіть імпортувати існуючий варіант проекту та наведіть його на каталог, де ви перевірили залп. Як тільки це буде зроблено, ви можете зробити свій модуль, і він створить файл aar.


1

Використовуючи затемнення Луни, ви повинні:

  • клонують його з GIT.
  • вирізати (скопіювати та видалити) папку COM у папці JAVA нижче папки SRC, як у звичайному проекті Android.
  • змінити цільовий проект.властивості на 15 замість 8.
  • побудувати проект.
  • експортуйте проект у вигляді файлу jar, включаючи джерело - використовуйте інструмент експорту.
  • зберігайте в експортованій банці лише папку COM і папку META-INF, видаліть усі інші папки - використовуйте інструмент zip, щоб видалити вміст банку.
  • використовуйте цю банку як проект для баночки Volley.
  • помістіть банку «Волей» у папку «lib» вашого цільового проекту Android.

1

Якщо ви використовуєте Android Studio, який вам слід зробити, покладіть цей рядок у файл gradle

compile 'com.mcxiaoke.volley:library:1.0.15'

Якщо ви хочете використовувати метод GET, у вас повинно бути щось подібне.

private void weatherData() {
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(
        Request.Method.GET,
        "URL with JSON data",
        new Response.Listener<JSONObject>() {
             @Override
             public void onResponse(JSONObject response) {
                 try {
                      //Your code goes here      
                 } catch (JSONException e) {
                      Log.e("TAG", e.toString());
                 }
             }
        }, 
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
            }
        });
    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(jsonObjReq);
}

Але якщо ви хочете розміщувати дані на сервері, вам слід побудувати бібліотеку HashMap і Volley перетворює ці значення ключів / пар в об'єкти JSON, перш ніж публікувати їх на сервері. Ось приклад.

final HashMap<String, String> postParams = new HashMap<String, String>();
postParams.put("username", username);
postParams.put("password", password);

Response.Listener<JSONObject> listener;
Response.ErrorListener errorListener;
final JSONObject jsonObject = new JSONObject(postParams);

JsonObjectRequest jsonObjReq = new JsonObjectRequest(
    "YOUR URL WITH JSON DATA", 
    jsonObject,
    new com.android.volley.Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            Log.d("TAG", response.toString());
            try {
                if (response.getString("status").equals("fail")) {

                } else if (response.getString("status").equals("success")) {

                } catch (JSONException e) {
                     Log.e("TAG", e.toString())
                }
            }
        }, 
        new com.android.volley.Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
             //VolleyLog.d("TAG", "Error: " + error.getMessage());
            //pDialog.dismiss();

        }
    }) {
        @Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8";
        }
    };
    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);

    VolleySingleton.getInstance(getApplicationContext()).
    addToRequestQueue(jsonObjRequest);
 }

0

Я клонував проект Volley і додав файли конфігурації, які дозволяють будувати бібліотеку за допомогою Gradle.

За допомогою цього ви можете встановити бібліотеку у свій локальний сховище Maven та посилатись на неї з проекту Android через Gradle.

Вимоги

  1. Мейвен
  2. Градле

Як використовувати

  1. Клоніруйте моє сховище
  2. Створіть та встановіть бібліотеку Volley
  3. Посилайтеся на бібліотеку в проект Android

Виправлення помилок

Зверніть увагу, що там є різні клони, які покращують бібліотеку . Можливо, буде потрібно їх інтегрувати і скласти вашу приватну розширену версію бібліотеки.

Переваги

На додаток до самої бібліотеки сценарій збірки генерує JavaDoc та джерела архівів .


0

Я зіткнувся з проблемою, коли бібліотека підтримки була зазначена у другому рядку. Переписування цих двох тверджень спрацювало на мене.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.mcxiaoke.volley:library:1.0.6'
    compile 'com.android.support:support-v4:20.+'
}

0

Volley може бути доданий як підмодуль git у вашому поточному репо-проекті. Цей підмодуль git вказуватиме на офіційне git repo Volley. Отже, ви можете отримати оновлення від офіційного git repo, просто оновивши покажчик підмодуля.

Більше того, якщо ви додасте Volley як модуль бібліотеки у свій основний проект, ви можете легко налаштувати його. Це буде дуже корисно і для налагодження.

Для цього виконайте наступні кроки:

Крок I:

Додайте залп як підмодуль в проект програми Android GIT Repo. підмодуль git add -b master https://android.googlesource.com/platform/frameworks/volley Бібліотеки / Volley

Крок II:

У settings.gradle додайте наступне, щоб додати залп як модуль студійного проекту. включити проект:: Volley '(': Volley '). projectDir = новий файл (' ../ Бібліотеки / Volley ')

Крок III:

У додатку / build.gradle додайте наступний рядок, щоб скласти проект збирання Volley (': Volley')

Це було б все! Воллей успішно доданий у проект.

Кожен раз, коли ви хочете отримати останній код від репо репортажу від Google Volley, просто запустіть команду нижче

git submodule foreach git pull

Більш детальна інформація: https://gitsubmoduleasandroidtudiomodule.blogspot.in/

Зразок коду GIT Repo: https://github.com/arpitratan/AndroidGitSubmoduleAsModule


0

Для майбутніх читачів

Я люблю працювати з Воллі . Щоб заощадити час на розробку, я спробував написати невелику зручну бібліотеку Gloxey Netwok Manager для налаштування Воллі зі своїм проектом. Він включає аналізатор JSON та інші інші методи, що допомагають перевірити наявність мережі.

Бібліотека надає ConnectionManager.classрізні методи для запитів Volley String і Volley JSON . Ви можете робити запити GET, PUT, POST, DELETE із заголовком або без нього. Повну документацію ви можете прочитати тут .

Просто покладіть цей рядок у свій файл gradle.

залежності {

   compile 'io.gloxey.gnm:network-manager:1.0.1'

}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.