10 Android Libraries, die Architektur und Entwicklung einer Android App enorm verbessern

Beim Konzipieren und Programmieren von Android Apps wird es - je größer die App wird - immer unübersichtlicher und der Code immer umfangreicher und komplizierter. Wie kann man wieder mehr Übersicht in die Architektur der App bringen? Und wie kann man beim Erstellen des Codes für immer wiederkehrende Basisfunktionalitäten Zeit und Platz sparen? Die wachsende Zahl von Android Libraries bietet hierfür einen umfangreichen Fundus an Helfern. Wir haben uns zahlreiche Libraries angeschaut und die 10 besten rausgesucht, die die Arbeit eines Android-Programmierer wirklich einfacher machen.

 

1.    Retrofit

Retrofit ist der Standard um Netzwerk-Calls in Android-Projekten zu handeln. Retrofit zeichnet sich durch eine einfache Nutzung und hohe Erweiterbarkeit aus.

Beispiel-Code:

public interface RetrofitInterface {
    @GET("/api/user")
    Call<User> callback getUser(@Query("user_id") String user);
}

// example
RetrofitInterface retrofitInterface = new RestAdapter.Builder()
 .setEndpoint("http://example.com/").build().create(RetrofitInterface.class);

// fetch user with name userName
retrofitInterface.getUser("userName").enqueue(new Callback<User>() {
    @Override
    public void success(User user, Response response) {
    }
    @Override
    public void failure(RetrofitError retrofitError) {
    }
});

Hier geht’s zum Github Repository: http://square.github.io/retrofit/

 

2.    Butterknife

Butterknife ist eine View-Injection-Libary für Android mit der man den ganz findViewById Overhead los wird.

Beispiel-Code:

@InjectView(R.id.user) protected EditText mUser;

@InjectView(R.id.password) protected EditText mPassword;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_login);
  ButterKnife.inject(this);
}

Hier geht’s zum Github Repository: http://jakewharton.github.io/butterknife/

 

3.    Dagger 2

Ein Dependency-Injection-Framework für Android und Java. Mit Hilfe von Dagger 2 lassen sich komplexe Android-Apps endlich lose gekoppelt entwickeln.

Beispiel-Code:

public class MainActivity extends Activity {
    @Inject ApiClient mApiClient;
    public void onCreate(Bundle savedInstance) { 
       // assign singleton instances to fields
       InjectorClass.inject(this);
    }

Hier geht’s zum Github Repository: https://google.github.io/dagger/

 

4.    AutoValue

Mit AutoValue lassen sich immutable Value-Classes einfach per Annotation generieren. AutoValue generiert dabei die getter und weitere Funktionen wie quals, hashCode und toString.

Beispiel-Code:

@AutoValue public abstract class User {
    public abstract String username();
    public static User create(String username) {
        return new AutoValue_User(username);
    }
}

Hier geht’s zum Github Repository: https://github.com/google/auto/tree/master/value

 

5.    GreenDAO und ObjectBox

Immer noch zählt greenDAO zu einem der Standard OR-Mapper für Android. Mit ObjectBox kam vor Kurzem der vielversprechende Nachfolger raus. Mit beiden Libaries kann man schnelles und effizientes Mapping und Speichern von Objekten in Android erreichen.

Beispiel-Code:

userBox = ((App) getApplication()).getBoxStore().boxFor(User.class);
User user = new User("UserName");
userBox.put(user);

Hier geht’s zum Github Repository von GreenDAO: https://github.com/greenrobot/greenDAO

Hier geht’s zum Github Repository von ObjectBox: https://github.com/greenrobot/ObjectBox

 

6.    EventBus

Sehr leichtgewichtige und einfache Library um lose gekoppelte Komponenten innerhalb einer Android-App über einen Event-Bus kommunizieren zu lassen.

Beispiel-Code:

//Post Event
EventBus.getDefault().post(new MessageEvent());

//Subscribe for Event
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};

Hier geht’s zum Github Repository: https://github.com/greenrobot/EventBus

 

7.    CompositeAndroid

In Android-Projekten entstehen oft abstrakte Basis-Activities die über die Projektlaufzeit zu Monolithen wachsen. CompositeAndroid durchbricht dies nach dem Konzept "Composition over inheritance".

Beispiel-Code:

public class MainActivity extends CompositeActivity {
    public MainActivity() {
        addPlugin(new ViewTrackingPlugin("Main"));
    }
}

Hier geht’s zum Github Repository: https://github.com/passsy/CompositeAndroid

 

8.    RxJava

RxJava ist ein Library um asynchrone und event-basierte Anwendungen zu erstellen.

Flowable.just("Hello world")
    .subscribe(new Consumer<String>() {
        @Override public void accept(String s) {
            System.out.println(s);
        }
    );

Beispiel-Code:

Hier geht’s zum Github Repository: https://github.com/ReactiveX/RxJava

 

9.    Otto

Ein weiterer Event-Bus für Android um entkoppelte Systeme einfach zu erstellen. Otto ist einfach zu benutzen und erlaubt eine flexible Kommunikation.

Beispiel-Code:

Bus bus = new Bus();

//Sending
bus.post(new AnswerAvailableEvent(42));

//Subscribing
@Subscribe public void answerAvailable(AnswerAvailableEvent event) {
    // TODO: React here
}

Hier geht’s zum Github Repository: http://square.github.io/otto/

 

10. DeepLinkDispatch

Einfache und effizient Library zur Integration von DeepLinks in die App per Annotation. Activities können sich gezielt zum handeln von Links registrieren und diese bei Aufruf handeln.

Beispiel-Code:

@DeepLink("foo://example.com/deepLink/{id}")
public class MainActivity extends Activity {
    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        if (intent.getBooleanExtra(DeepLink.IS_DEEP_LINK, false)) {
            Bundle parameters = intent.getExtras();
            String idString = parameters.getString("id");
        }
    }

}

Hier geht’s zum Github Repository: https://github.com/airbnb/DeepLinkDispatch