Kick-starts Android application development.

Last update: Aug 8, 2022

Synopsis

If you've made it here, chances are you are not quite as satisfied with the Android application framework as you could be. Same for us, that's why we created ignition.

Ignition helps you getting your Android applications off the ground quickly, by offering ready-to-use components and utility classes that wrap a lot of the boilerplate that's involved when writing Android apps. Areas covered by ignition encompass:

  • UI components such as widgets, adapters, dialogs, and more
  • An HTTP wrapper library that allows you to write simple yet robust networking code
  • A class to load remote images off the web and cache them
  • A simple yet effective caching framework (caches to memory and disk, anything from HTTP responses to entire object trees)
  • Several helper classes for easier API level backwards compatibility, Intents, diagnostics, and more
  • A friendlier and more robust implementation of AsyncTask

Ignition is split up into three sub-projects.

  • ignition-core. This is an Android library project that is compiled straight into your apps. This allows you to re-use views and shared resources right in your own code.
  • ignition-support. This is a standard Java library project, deployed as an ordinary JAR. It contains most of the utility classes. You can use this independently of the core module.
  • ignition-location. This is an Android AspectJ library project that is compiled straight into your apps. It allows your location-aware applications to always have the most recent location without the need to handle location updates within your Activity.

Changelog

The latest version of ignition is 0.2 and was released on April 20th 2012.

Go here for a list of changes.

Documentation

We decided to not write exhaustive documentation, since it would get outdated frequently. Instead, the project is documented both via sample applications that are part of the build, as well as online JavaDoc:

Installation

Please refer to Installation and setup. We are also collecting answers to frequently asked questions.

Getting help

First, please check if your question is answered in the FAQ. If not, you can ask questions and get help by joining ignition-users on Google Groups.

Contributing

Feel like giving back? We'll happily take contributions via GitHub. For questions, please turn to ignition-developers on Google Groups.

License

Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)

Authors

GitHub

https://github.com/mttkay/ignition
Comments
  • 1. App design question: Reconnectable dialogs?

    I'm in the process of adapting my existing code to work with IgnitedAsyncTask (you deprecated android-fu already?) and I'm running into a potential design issue in that most of my asyncTasks are involved in some form of ProgressDialog or AlertDialog, which is tied to the Context object and likely should not survive a reconfiguration.

    Is there value in developing a ProgressDialog-like and/or AlertDialog-like object "in the style" of IgnitedAsyncTask that supports .connect() and .disconnect(), recreating the "real" dialog object as-needed (and hooking all the events into itself) ? Or is there a better way to look at this issue that I'm not seeing?

    This is not a request for development or a pull request (yet), just a query as to whether this is a good direction to go in, as an issue on a project that seems to deal with these issues as one of its central purposes.

    Reviewed by odysseus654 at 2012-02-20 07:12
  • 2. RemoteImageLoader: properly support servers which don't send a Content-Length header

    I noticed there was some code in RemoteImageLoaderJob which purported to deal with servers which fail to send a Content-Length header, but it didn't work properly. This patch fixes that.

    Thanks so much!

    Reviewed by mlc at 2012-02-25 01:41
  • 3. NullPointerException in RemoteImageView

    I'm using the RemoteImageView in a ListView. It works fine for one list but for another it gives the following error in Logcat.

    12-28 14:25:44.843: E/AndroidRuntime(2617): FATAL EXCEPTION: main 12-28 14:25:44.843: E/AndroidRuntime(2617): java.lang.NullPointerException 12-28 14:25:44.843: E/AndroidRuntime(2617): at com.github.ignition.support.images.remote.RemoteImageLoaderHandler.handleImageLoaded(RemoteImageLoaderHandler.java:73) 12-28 14:25:44.843: E/AndroidRuntime(2617): at com.github.ignition.core.widgets.RemoteImageView$DefaultImageLoaderHandler.handleImageLoaded(RemoteImageView.java:228) 12-28 14:25:44.843: E/AndroidRuntime(2617): at com.github.ignition.support.images.remote.RemoteImageLoaderHandler.handleImageLoadedMessage(RemoteImageLoaderHandler.java:52) 12-28 14:25:44.843: E/AndroidRuntime(2617): at com.github.ignition.support.images.remote.RemoteImageLoaderHandler.handleMessage(RemoteImageLoaderHandler.java:45) 12-28 14:25:44.843: E/AndroidRuntime(2617): at android.os.Handler.dispatchMessage(Handler.java:99) 12-28 14:25:44.843: E/AndroidRuntime(2617): at android.os.Looper.loop(Looper.java:123) 12-28 14:25:44.843: E/AndroidRuntime(2617): at android.app.ActivityThread.main(ActivityThread.java:3687) 12-28 14:25:44.843: E/AndroidRuntime(2617): at java.lang.reflect.Method.invokeNative(Native Method) 12-28 14:25:44.843: E/AndroidRuntime(2617): at java.lang.reflect.Method.invoke(Method.java:507) 12-28 14:25:44.843: E/AndroidRuntime(2617): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 12-28 14:25:44.843: E/AndroidRuntime(2617): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 12-28 14:25:44.843: E/AndroidRuntime(2617): at dalvik.system.NativeStart.main(Native Method)

    NOTE: the actual line number for the exception in RemoteImageLoaderHandler.java is 71. I added lines to see where the exact problem was.

    It seems that a null Bitmap is passed to the RemoteImageLoaderHandler and because I get the RemoteImageView from a findViewById(), I don't have an errorDrawable so the NullPointerException is passed.

    I believe the problem is initiated at line 51 in RemoteImageHandler.java

    Bitmap bitmap = data.getParcelable(BITMAP_EXTRA);

    Maybe I'm doing something wrong. Any ideas ?

    Reviewed by saadfarooq at 2011-12-28 04:21
  • 4. Issue on RemoteImageView used together with HorizontalListView (http://www.dev-smart.com/archives/34)

    I can't get any web image to load, not even progress spinner showed up (i only see the spinner for brief moment when doing quick scroll), no errordrawable showed up either. I think there is internal issues here. Can you enlighten me on how to fix this.

    gallery_layout:

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:paddingBottom="4dp"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:paddingTop="4dp" >
    
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="5dp"
            android:paddingLeft="8dp"
            android:paddingTop="5dp"
            android:text="Foods around here:"
            android:textSize="16dp" />
    
        <com.devsmart.android.ui.HorizontalListView 
            android:id="@+id/gallery_list"
            android:layout_width="fill_parent"
            android:layout_height="400dp" />
    
     </LinearLayout>
    

    gallery_listentry:

        <com.github.ignition.core.widgets.RemoteImageView
            android:id="@+id/img"
            android:layout_width="400dp"
            android:layout_height="280dp"
            android:background="@color/dark_brown"
            android:padding="2dp"
            ignition:progressDrawable="@drawable/ic_launcher"
            ignition:autoLoad="false"
            ignition:errorDrawable="@drawable/icon"
            ignition:defaultDrawable="@drawable/place_snacks"
            android:scaleType="fitXY"/>
    

    package com.test;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;

    import com.devsmart.android.ui.HorizontialListView;
    import com.github.ignition.core;

    public class HorizontalListViewDemo extends Activity {

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
    
        setContentView(R.layout.gallery_layout);  
    
        HorizontialListView listview = (HorizontialListView) findViewById(R.id.gallery_list);  
        listview.setAdapter(mAdapter);  
    
    }  
    
    private static String[] url = new String[]{ "http://www.google.com.sg/logos/2012/vday12-res.png",  
        "http://www.google.com.sg/logos/2012/vday12-res.png",  
        "http://www.google.com.sg/logos/2012/vday12-res.png" };   
    
    private BaseAdapter mAdapter = new BaseAdapter() {  
    
        @Override  
        public int getCount() {  
            return url.length;  
        }  
    
        @Override  
        public Object getItem(int position) {  
            return null;  
        }  
    
        @Override  
        public long getItemId(int position) {  
            return 0;  
        }  
    
        @Override  
        public View getView(int position, View convertView, ViewGroup parent) {  
            View retval = LayoutInflater.from(parent.getContext()).inflate(R.layout.gallery_listentry, null);  
            RemoteImageView img = (RemoteImageView) retval.findViewById(R.id.img);  
            img.setImageUrl(url[position]);
            img.loadImage();
    
            return retval;  
        }  
    
    };  
    

    }

    Reviewed by ghost at 2012-02-14 05:50
  • 5. Setting an Android resource image URL

    Since I do have your undivided attention. I'm using RemoteImageView in a ListView. Most of the items are loaded over the web but I want to show a couple from a local resource.

    Is there a way to specify this ?

    It would be really awesome if I could just specify this as a URL from my adapter. I asked a question on StackOverflow. but none of the responses worked for me: http://stackoverflow.com/questions/9296999/android-reference-resource-drawable-as-a-url

    Reviewed by saadfarooq at 2012-02-20 11:33
  • 6. Warning: Cookie Rejected

    I am getting 3 "Cookie Rejected" errors during the build test (Building ignition-location-tests 0.1-SNAPSHOT)...this doesn't seem to effect the final result because I am getting a clear SUCCESS summary, but I do think it's strange. Should I post the full error messages here?

    Reviewed by zakdances at 2012-01-29 22:12
  • 7. Error upon build test: "Failed to execute goal..."

    I am running Windows 7 with Android SDK v. 4.0.3 (API 15).

    Failed to execute goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.0.2:generation-sources (default-generate-sources) on project ignition-core: Execution default-generate-sources of goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.0.2:generate-sources failed: Invalid SDK: Platform/API level 4 not available. This command should give you all you need: C:/Program Files (x86)\Android\android-sdk\tools\android update sdk --no-ui --obsolete --force

    Why do you I need to install obsolete version of the Android SDK just to get ignition to work?

    Reviewed by zakdances at 2012-01-29 20:40
  • 8. Guava Required

    Classes within ignition-support (e.g., AbstractCache) are dependent upon Guava (AKA Google Collections library). This should be documented/communicated.

    Reviewed by onyxmueller at 2012-01-10 19:49
  • 9. No clear instructions on using it as a library for an Android project

    I'm trying to use ignition-core as a library for my Android app. I tried following instructions, and got as far as gradle eclipse, and having the .project files imported into eclipse from /ignition/ignition-core, but it seems that the Android project does not find the classes, despite having it added as a project requirement in the build path settings.

    I looked deeper at your project struction, and realised that ignition-core-lib is an android app project of which I believe I should be including, and in there, lies a build.gradle too. I am however unable to use that gradle build path. Perhaps it would be better if clearer instructions could be posted on this? Thanks!

    PS: There are some dead links in the readme too. Cheers! PS: Nice work btw.

    Reviewed by nubela at 2012-01-18 18:03
  • 10. Gradle: duplicate files during packaging of APK

    This is reproducible with versions 0.1 to 0.3-SNAPSHOT.

    Using Android Studio Preview 130 and Gradle.

    When I include ignition-core as a dependency as a dependency: dependencies { compile 'com.github.ignition:ignition-core:[email protected]' }

    Gradle: Execution failed for task ':App:packageDebug'.

    Duplicate files copied in APK AndroidManifest.xml File 1: /home/user/github/android/AppProject/App/build/libs/App-debug.ap_ File 2: /home/user/github/android/AppProject/App/build/libs/App-debug.ap_

    Extracting ignition-core-0.2.apklib shows an AndroidManifest.xml: image

    Does ignition-core-0.1.apklib need the AndroidManifest.xml? I am assuming the Android Gradle plugin is trying to flatten the jars into an apk.

    Thanks

    Reviewed by hekar at 2013-09-14 03:37
  • 11. Extended RemoteImageLoader to support downloading images to use as Textview's CompoundDrawables.

    Current limitation: the RemoteImageLoaderTextViewAdapter class supports the download of only one image, ideally it should support downloading up to 4 since a TextView can have up to 4 different CompoundDrawables. If one sets more than one CompoundDrawable for a TextView, the same drawable will be used.

    Reviewed by futtetennista at 2012-08-07 16:47
  • 12. Qype dependencies for distribution

    @mttkay given this is an open source project, shouldn't the releases be pushed to maven central or sonatype oss instead of qype's nexus repo?

    Right now I have an issue given qype's repo is down (not sure if decommissioned) and we can fetch the latest releases or snapshots.

    Reviewed by robertoandrade at 2014-01-28 14:52
  • 13. endlessListAdapter.shouldRequestNextPage(firstVisibleItem, visibleItemCount, totalItemCount)

    On a typical implementation with just a few items to fit in the screen, the shouldRequestNextPage() returns true always, resulting in repeated calls to the network fetch function I have. This is supposedly making another issue that, all items in the list are disabled, (possibly because a network fetch is always there in progress)

    Reviewed by subinsebastien at 2013-11-30 18:02
  • 14. IgnitedHttpResponseImpl relies on BufferedHttpEntity which blows up memory limits for large entities

    When trying to consume a large entity via IgnitedHttpResponseImpl it seems like the replacement of the original entity by a BufferedHttpEntity in its implementation seems to allocate memory for the the entire length of the entity you're trying to download.

    So say you have a 100MB file for instance, it will try to allocate that much memory to fetch the InputStream of the HttpEntity (which by the name - buffered - you'd expect it to stream the contents via an internal buffer or sorts rather than cache the entire stream).

    Do you guys have any suggestions to overcoming this issue given AbstractHttpClient seems to call entity.consumeContent() right after the initialization of the response by IgnitedHttpRequestBase.handleResponse()?

    Reviewed by robertoandrade at 2013-07-01 23:25
🔪 AOP development framework implemented through *Annotation + ASM + Gradle Transform API* for Android🤖
🔪  AOP development framework implemented through *Annotation + ASM + Gradle Transform API*  for Android🤖

?? AOP development framework implemented through *Annotation + ASM + Gradle Transform API* for Android??

Jun 29, 2022
UltimateAndroid is a rapid development framework for developing your apps
UltimateAndroid is a rapid development framework for developing your apps

UltimateAndroid Version:0.10.2 UltimateAndroid is a rapid development framework for developing apps Master branch: Dev branch: V0.7.0 Ui Demo screensh

Aug 6, 2022
dexposed enable 'god' mode for single android application.

What is it? Dexposed is a powerful yet non-invasive runtime AOP (Aspect-oriented Programming) framework for Android app development, based on the work

Aug 17, 2022
A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability.

This Project is Deprecated! Thanks to everybody who've used Android Priority JobQueue. It was designed in a world where there was no JobScheduler, RxJ

Jul 25, 2022
Nucleus is an Android library, which utilizes the Model-View-Presenter pattern to properly connect background tasks with visual parts of an application.

Nucleus Deprecation notice Nucleus is not under develpment anymore. It turns out that Redux architecture scales way better than MVP/MVI/MVVM/MVxxx and

Jul 24, 2022
Android part of the Android Studio(IntellijIDEA) OkHttp Profiler plugin
Android part of the  Android Studio(IntellijIDEA) OkHttp Profiler plugin

OkHttpProfiler Android Library Created by LocaleBro.com - Android Localization Platform The OkHttp Profiler plugin can show requests from the OkHttp l

Aug 12, 2022
Android common lib, include ImageCache, HttpCache, DropDownListView, DownloadManager, Utils and so on
Android common lib, include ImageCache, HttpCache, DropDownListView, DownloadManager, Utils and so on

android-common-lib 关于我,欢迎关注 微博:Trinea 主页:trinea.cn 邮箱:trinea.cn#gmail.com 微信:codek2 主要包括:缓存(图片缓存、预取缓存、网络缓存)、公共View(下拉及底部加载更多ListView、底部加载更多ScrollView、

Aug 13, 2022
A Model-View-Presenter / Model-View-Intent library for modern Android apps

Mosby A Model-View-Presenter and Model-View-Intent library for Android apps. Dependency dependencies { compile 'com.hannesdorfmann.mosby3:mvi:3.1.1

Aug 17, 2022
A small, yet full-featured framework that allows building View-based Android applications
A small, yet full-featured framework that allows building View-based Android applications

Conductor A small, yet full-featured framework that allows building View-based Android applications. Conductor provides a light-weight wrapper around

Aug 16, 2022
A plugin system that runs like a browser, but instead of load web pages, it load apk plugins which runs natively on Android system.
A plugin system that runs like a browser, but instead of load web pages, it load apk plugins which runs natively on Android system.

Android Dynamic Loader Android Dynamic Loader is a plugin system. The host application is like a browser, but instead of load web pages, it load plugi

Aug 7, 2022
LiteOrm is a fast, small, powerful ORM framework for Android. LiteOrm makes you do CRUD operarions on SQLite database with a sigle line of code efficiently.

#LiteOrm:Android高性能数据库框架 A fast, small, powerful ORM framework for Android. LiteOrm makes you do CRUD operarions on SQLite database with a sigle line

Aug 7, 2022
🚀Plugin for Android Studio And IntelliJ Idea to generate Kotlin data class code from JSON text ( Json to Kotlin )
🚀Plugin for Android Studio And IntelliJ Idea to generate Kotlin data class code from JSON text ( Json to Kotlin )

JsonToKotlinClass Hi, Welcome! This is a plugin to generate Kotlin data class from JSON string, in another word, a plugin that converts JSON string to

Aug 12, 2022
Rosie is an Android framework to create applications following the principles of Clean Architecture.
Rosie is an Android framework to create applications following the principles of Clean Architecture.

Rosie The only way to make the deadline—the only way to go fast—is to keep the code as clean as possible at all times. — Robert C. Martin in Clean Cod

Jul 25, 2022
Create kotlin android project with one line of command.

README This is an android application template project built with kotlin language and some useful libraries. It provides a creator script to quickly c

Jul 19, 2022
Moxy is MVP library for Android
Moxy is MVP library for Android

Moxy This Moxy repository is deprecated and no longer supported. Please migrate to the actual version of the Moxy framework at Moxy communuty repo. De

Aug 11, 2022
A data-binding Presentation Model(MVVM) framework for the Android platform.

PLEASE NOTE, THIS PROJECT IS NO LONGER BEING MAINTAINED. As personal time contraints, I am currently unable to keep up. Please use official android da

Jun 6, 2022
Minimal UI library for Android inspired by React
Minimal UI library for Android inspired by React

Anvil - reactive views for Android Anvil is a small Java library for creating reactive user interfaces. Originally inspired by React, it suits well as

Jul 30, 2022
A full-featured framework that allows building android applications following the principles of Clean Architecture.

EasyMVP A powerful, and very simple MVP library with annotation processing and bytecode weaving. EasyMVP eliminates the boilerplate code for dealing w

Aug 8, 2022
a MVP library for Android favoring a stateful Presenter

DEPRECATED - no longer actively maintained ThirtyInch - a MVP library for Android This library adds Presenters to Activities and Fragments. It favors

Jul 27, 2022