[Android Audit] Eventtus Android app decompiled and reviewed [ Aug 22, 2014 ]


Some notes on how to improve Eventtus for Android, experience and performance:

  1. Constructing keys at runtime from pieces or use bit manipulation (like XOR with some other string) to hide the actual keys would be safer. Currently you have keys in strings.xml,airshipconfig.properties, LinkTwitterActivity.java and TrackedActivity.java files:
  • map_key: you don’t want to make it easy for others to use your quota of daily responses, if I remember correctly some APIs like places had limits.
  • applicationId: com.facebook.sdk.ApplicationId
  • gcmSender
  • ga_trackingId

2. Back stack issues:

  • After login, LoginActivity should have been removed from the stack, so when when backPressed while in MainActivity app would close

3. Custom Typefaces can be loaded in static variables once to avoid loading them in each activity and adapter getView calls:

Typeface typeface = Typeface.createFromAsset(getAssets(), “fontawesome-webfont.ttf”);

4. too_much_actions.png

  • Colors are a bit overwhelming and can district user from the main action “Join the folks”
  • “Join the folks” scrolls up and down, having it in a static position like in ActionBar, sticked to the bottom of the screen, etc… could drive more traction

5. different_transition_animation.png

  • Activity transition animation is inconsistent. When Community header is clicked it opens a new activity from right while clicking content fade-in the new activity

6. hard_to_understand_actions.png

  • There is an actual need for the SatelliteMenu:

___ . It is hard to understand what action does what

___ .Its animation is not that smooth

___ .Incorporating these action within the main UI itself should increase user interaction with these actions

___ .It does not feel original, a Path widget

  • Edit, Timeline related action, maybe it should be “Add” instead
  • Poll, seems like a Timeline related action too
  • Share, can be moved to the ActionBar
  • e-mail, can be moved under date and address, contact organizer
  • Location, I think the map beside the event date and address is enough

7. not_so_android_search_box.png

  • This search UI pattern is more iOS than Android. Android users would be instead familiar with search box in the ActionBar itself or as an icon in it

8. improved_typography.png

  • I made some subtle changes which makes text more readable in my opinion

9. not_so_android_tabs_1.png, not_so_android_tabs_2.png and not_so_android_tabs_3.png

  • Tabs do not feel like Holo/Material Android tabs. they break the design language a bit

10. pager_issue.png

  • Pager indicator indicates there are more than one page even though there is only one available page

11. spacing_issue_1.png, spacing_issue_2.png, spacing_issue_3.png and spacing_issue_4.png

12. tutorial_action_focus_issue.png

  • The image used in the tutorial can distract user from the actual action which is “Get Started”

13. GeneralSearchActivity.java

14. AddFriendActivity.java, AddPollActivity.java, AddPostActivity.java, AgendaUsingTabStrip.java, AttendeesListActivity.java, CheckInActivity.java, CitiesActivity.java, EditProfileActivity.java, EventDetailsActivityNew.java, FeedsFollowUsers.java, GeneralSearchActivity.java, InterestsActivity.java, …

  • Avoid inline resources:
setTextColor(Color.parseColor(“#aaaaaa”))
getSupportActionBar().setTitle(“Create poll”)
setHint(“Answer # “ + …)
getSupportActionBar().setTitle(“Create post”)

15. Maybe add more checks to http://eventtus.com/user/forgot-password/request because this page can expose usernames registered in the system

16. I think http://viewpagerindicator.com/ is better and more widely used thanhttps://github.com/pakerfeldt/android-viewflow. It appears that you are already using that is why I was not sure why would you use ViewFlow too.


Getting in touch

I’d love to help, get in touch with me (mmegazar+audit@gmail.com) for a free Android APK Audit or full Android Audit including your process and sourcecode.