Thumbnail: thi

Advent Projekt - THI App Reboot Pt. 1

von am unter blog
5 Minuten TTR (Time To Read)

Disclamer

Ich möchte niemanden beleidigen, und falls das so rüber kommt tut es mir leid. Ziel ist es den Code/die Anwendung anzuschauen und erklären wie man wo was besser machen hätte können.

Einführung

Die THI-App ist ein Interessantes stück Android Software, im Laufe des Andvent würde ich gerne diese App analysieren, meine Kritik anbringen, um dann eine hoffentlich bessere und vor allem OpenSource Variante Online zu stellen. Dazu gehören nach ersten Einblicken (werde ich im laufe zu den einzelnen Schritten posten) die erstellung eines REST Proxys, der eine “schönere” Darstellung des aktuellen Endpoints erstellt. Sowie eine Native Android App, welche sich an das Material-Design orientiert. Sehr viel Input wird aus der TUM App kommen, da ich diese als eine gelungene Android App bezeichnen würde.

Ist Zustand

Die Aktuelle THI App entspricht wenig meinen Vorstellungen einer Android App, auch auf iOS scheint das Design nicht wirklich angekommen zu sein, da ich aber kein :apple: Mensch bin muss auf eine iOS Implementierung meinerseits verzichtet werden.
Die App wurde mit embarcadero, einem Cross Platform C++ Framework welches damit wirbt nur einmal programmieren zu müssen.
Diese Bequemlichkeit schlägt sich leider drastisch auf das Look&Feel der Anwendung nieder.

Wenn man sich die Screenshots anschaut, wirkt das tatsächlich so also ob da jemand faul war…

Android iOS
Android App iOS App

Leider ist die Anwendung Closed Source, und vom Hören Sagen will keiner daran arbeiten… Ob das Stimmt habe ich nie getestet.

Meine Probleme mit der Anwendung

  1. Closed Source An eine Hochschule wo unter anderem Informatik gelehrt wird, sollten sich die Studenten einbringen können. Die heutige Entwicklung lebt von OpenSource Projekten und deshalb ist das lernen der agilen, verteilten Softwareentwicklung eigentlich essentiell wichtig. Auf diese art und weise kann ein Stundent die erfahrung sammeln, was sinnvolles getan zu haben. Das feedback welches man in seinem PullRequest bekommt,oder auch die Zustimmung anderer in einem Issue. Die Ergebnisse der App Entwicklung sollte nicht unbedingt geschlossen in einem Kurs stattfinden, sondern auch für den hobby coder zuhause zugänglich sein…
    Eine API ist nicht Sicher nur indem sie keiner bedienen kann, sie wird sicher durch die Anwendung der richtigen Konzepte.

  2. Kein Natives Look & Feel Selbst wenn die THI einen UI/UX studiengang hat, taugt mir die APP eigentlich so gar nicht. Wirkt einfach nicht wie Android…
    Wie iOS? Vmtl auch nicht.

  3. REST Endpoints sind komisch Vgl in späteren Posts

  4. Web View Eine webview ist doch toll oder? Ja ne dann brauch ich eigentlich auch keine App Mehr, mache einfach ne PWA und fertig kommt aufs selbe…

  5. Single Activity Nach ersten entpacken der App fällt mir auf dass es nur eine Activity gibt, tolles Framework vmtl einfach ne WebView und daring HTML rendern mit Stylesheet ala Cordova und Phonegap.

  6. Komisches Framework Ok ich habe nochnie etwas davon gehört, das Tool nennt sich wohl RAD Studio und ist irgendein Delphi dings. Es kann Desktop und Mobile UI sachen, doch selbst die Desktop UIs wirken wie HTML forms, zumindest in deren Demo Video. Prinzipiell gibts auch VCL, eine art WinForms Bib für Delphi. Das Framework benötigt irgendwelche Grafik Bibliotheken welche im Manifest angegeben werden.
    Zudem ist die gesammte Anwendung als fertig compilierte Nativ-Bibliothek eingebunden und wird vmtl nur von der MainActivity in eine Grafik kontext geladen. (So zumindest mein eindruck, welcher teil tatsächlich Android ist, und was aus dem Framework raus frankensteint werden wir dann sehen.)

  7. Cleartext Passwort Das wird ein Punkt der schwer zu umgehen ist, da wird etwas an Nachforschung reinfließen müssen… Aktuell scheint es so, dass es nur eine Session gibt und keine autorisierung ala Oauth oder ähnliches was Langzeit-Schlüssel anbietet. Schon irgendwie blöd…

Schritte

  1. Einführung Pt 1
  2. Groben Überblick über die Anwendung verschaffen Pt 2
  3. REST Calls Analysieren
    1. App Vorbereiten Pt 3
    2. Man In The Middle Proxy Pt 4
  4. REST Bridge Basteln
    1. Überlegungen Pt 5
    2. Converter Basteln Pt 6
    3. Gap Gap
    4. JWT Clearify Pt 7
  5. Neues Projekt auf Github anlegen
  6. UI implementieren
  7. REST verknüpfen
android, analyze, reverseengineer, REST, thi