5. Source code
• JAVA Source code is available
– Via Twitter
• Our IP: free to use
– Too low to qualify for protection
– Plus, you have to listen to us so
8. The @tamhanna show is co
GottaTxt is the best app at
#droidconnl
After listening to
@tamhanna, my app doesn‘t
crash anymore!!!
@tamhanna threw chocolate on
my head. Ouch! #droidconnl
10. Market is crowded
• Bad ratings kill an application
• BUT: responding to feedback helps
– „The developer responds to ME!!!“
– I am important
– Ego issues => superhappy customer
11. Why track crashes?
• Isn‘t it better not to crash?
– Matthew A Brenner, UnME2
• Yes, but
– Ever-increasing number of LOC
– Fragmentation (to see /me mention that )
– Margin pressure
• TU144 / Concorde problem
12. Users are stupid
• What OS version do you use?
– Common question for developers
– Perceived as denigration by some users
• Send me a file from the file system!
– Common question for developers
– But for developer‘s wife or husband?
13. Crash vs stat
tracking• Stat tracking
– Which flows are used
– Entry/Exit path analysis
– e.g. Google Analytics
• Crash tracking
– What causes crashes
– Where do users „die“
14. And there‘s more
• Track „points of pain“ for users
– Rejection of user input
– Games: user death
• Fix them in the next release
– First 2min with application are critical
16. What‘s that
• Special mode of operation
– Allows developer access to internals
– ON the users phone
• Can be accessed via secret key
– Must be easy to enter, difficult to guess
– Prevent users from entering it by mistake
• Customer provides info to developer
28. public class ErrorReporter extends IntentService
{
public static final String INTENTSTRING
="com.tamoggemon.a360crash1.intent.CALLERRORREPORTER";
public ErrorReporter()
{
super("TAG");
}
@Override
public void onCreate()
{
super.onCreate();
}
40. Problem of all
solutions• Integration requires manual work
– Find all classes
– Integrate logging code
• Better solution: „stub objects“
41.
42. How to implement it
• By foot
• Loads of leeway for developers
– Abstract actual logging?
43. Example
public abstract class TMGNActivity extends Activity
{
@Override
public final void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
logThis("Creating Activity");
logThis(getClass().getName());
tmgnOnCreate(savedInstanceState);
}
public abstract void tmgnOnCreate(Bundle savedInstanceState);
45. Google Play Crash
tracking• Google Play provides crash tracking
– Rudimentary, can‘t add own data
• Better than nothing
– Check often
– Log-in freq. could (!!!) be used for ranking
46. Crash Trackers
• BugSense
– Specialized service
• Flurry
– Afterthought for premium analytics
• Yours?
– Tell us in Q&A
48. Crashes will happen
• Today‘s mobile apps are
– Highly complex
– Underfunded (thanks, Apple!)
• Even the OS crashes sometimes
• Users tolerate reasonable crashingUsers tolerate reasonable crashing
49. Work-arounds are
needed• Paid users expect frequent updates
– Let them generate their wishes themselves
• Monitoring is first step to improvement
– See what users really think
50. Olympic spirit
• Important:
– TRACK CRASHES
– Perform PDCA cycle on data
• Not so important
– How to track them
– Track 100% of them