SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
ISTLab

                                                                                     java.lang.RuntimeException: Unable to resume activity {com.pinapps.android/
   java.lang.RuntimeException: Unable to start activity                              com.facebook.LoginActivity}: com.facebook.FacebookException: Cannot call LoginActivity
   ComponentInfo{com.pinapps.android/com.pinapps.android.ActAppDetails}:             with a null calling package. This can occur if the launchMode of the caller is singleInstance.
   java.lang.NullPointerException                                                    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2138)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2153)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1682)
   at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3553)    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
   at android.app.ActivityThread.access$700(ActivityThread.java:140)                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233)           at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Handler.dispatchMessage(Handler.java:99)                            at android.os.Looper.loop(Looper.java:130)
   at android.os.Looper.loop(Looper.java:137)                                        at android.app.ActivityThread.main(ActivityThread.java:3701)
   at android.app.ActivityThread.main(ActivityThread.java:4898)                      at java.lang.reflect.Method.invokeNative(Native Method)




                   What BigData tell us about
   at java.lang.reflect.Method.invokeNative(Native Method)                            at java.lang.reflect.Method.invoke(Method.java:507)
   at java.lang.reflect.Method.invoke(Method.java:511)                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
   1008)                                                                             at dalvik.system.NativeStart.main(Native Method) Caused by:
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)                   com.facebook.FacebookException: Cannot call LoginActivity with a null calling package.
   at dalvik.system.NativeStart.main(Native Method) Caused by:                       This can occur if the launchMode of the caller is singleInstance.
   java.lang.NullPointerException                                                    at com.facebook.LoginActivity.onResume(LoginActivity.java:110)




                        Android Errors
   at com.pinapps.android.FragAppMedia.onCreateView(FragAppMedia.java:126)           at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1176)
   at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)          at android.app.Activity.performResume(Activity.java:3882)
                                                                                     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2128)
   ... 12 more                                                                       ... 12 more
   java.lang.RuntimeException: Unable to start activity                              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pinapps.android/
   ComponentInfo{com.pinapps.android/com.pinapps.android.ActSplash}:                 com.pinapps.android.ActAppDetails}: java.lang.IllegalStateException: ViewPager does not
   android.view.InflateException: Binary XML file line #2: Error inflating class        have adapter instance.
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1670)     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1686)      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
   at android.app.ActivityThread.access$1500(ActivityThread.java:118)                at android.app.ActivityThread.access$600(ActivityThread.java:130)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:932)            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
   at android.os.Handler.dispatchMessage(Handler.java:99)                            at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:130)                                        at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:3706)                      at android.app.ActivityThread.main(ActivityThread.java:4745)
   at java.lang.reflect.Method.invokeNative(Native Method)                            at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:507)                                at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
   841)                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)                   at dalvik.system.NativeStart.main(Native Method) Caused by:
   at dalvik.system.NativeStart.main(Native Method) Caused by:                       java.lang.IllegalStateException: ViewPager does not have adapter instance.
   android.view.InflateException: Binary XML file line #2: Error inflating class        at com.viewpagerindicator.TitlePageIndicator.setViewPager(TitlePageIndicator.java:716)
   at android.view.LayoutInflater.createView(LayoutInflater.java:518)                  at com.pinapps.android.ActAppDetails.onCreate(ActAppDetails.java:129)
   at                                                                                at android.app.Activity.performCreate(Activity.java:5008)
   com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInfl   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
   ater.java:56)                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)           ... 11 more




                                     What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                                                                  1
Tuesday, April 9, 13
ISTLab
                                                                                                             ISTLab




                       I’m Panos Papadopoulos
                       Founder & CEO at BugSense
                       @panosjee



                                                            I’m Maria Kechagia
                                                          PhD student at AUEB
                                                          Researcher at ISTLab


                           What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013            2
Tuesday, April 9, 13
You are here because of

  ANDROID BUGS
Tuesday, April 9, 13
ISTLab
                                                                                                           ISTLab


                                     BigData Research

                                40M crashes
                                 3M stack traces
                               320M devices
                       From Mar 1 to May 30 2012

                         What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             4
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab


                   Crashing apps lead to user churn
                       Total Users



                       Affected Users



                       Lost Users




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             5
Tuesday, April 9, 13
ISTLab
                                                                                                                      ISTLab


                                                The Process


                        Android        Java Stack               Data
                                                              Cleaning                Data               Heuristics
                         Apps            Traces




                                               API                         Crash
                       Suggestions           Design                       Causes
                                                                       Categorization                   Signatures
                                            Problems




                                                                   6
                             What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                    6
Tuesday, April 9, 13
ISTLab
                                                                                                             ISTLab


                                    Heuristic Function

                                       (﴾F+ (﴾A+ I∗)﴿∗)﴿ | (﴾F∗ (﴾A+ I∗)﴿+)﴿E
                       This expresses various scenarios in which an exception can occur

                          Within the Android framework: F + E

                          Within the application: F ∗ A+ E

                          When the application calls an api: F∗ A+ I+ E

                          Within an api-‐registered application callback: F∗ (﴾A+ I+ A+)﴿+ E

                          When an api-‐registered application callback calls an api: F∗ (﴾A+ I+)﴿+ E




                           What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             7
Tuesday, April 9, 13
ISTLab
                                                                                                         ISTLab


                                        API Minefield




                       What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             8
Tuesday, April 9, 13
ISTLab
                                                                                                                     ISTLab


                                             Crash Categories

                         Memory Exhaustion                                                                            28

            Rece conditions and deadlocks                                                                             28

                Missing/Corrupted Resource                                           14

                                 Unclassified                             10

                        Invalid format/syntax                  5

                           Indexing problem                    5

                       Connectivity Problems               4

      Improper component identification                3

                       Insufficient Permission         3

                                                 0                  7.5                   15                  22.5         30




                                 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                9
Tuesday, April 9, 13
ISTLab
                                                                                                         ISTLab


          You are not to blame for all crashes!


                           86% app context
                            3% Android context
                           11% API context

                       What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             10
Tuesday, April 9, 13
ISTLab
                                                                                                                ISTLab

                                  Memory Exhaustion
                                    java.lang.outofmemory
                                      java.lang.outofmemory

                       37%      Although after Honeycomb bitmaps are stored into the
                                Dalvik heap, such exceptions continue to puzzle
                                developers. as mobile devices become smaller and
                                applications have heavier graphics, there is a need for
                                thrifty memory use and good performance.

                                                            Resource auto-‐resize interface
                                                            Restricted use of cache structures
                                                            Cheap file formats
                                                            Fixed heap memory
                                                            Use profiling (﴾Tracker Tab, MAT, HeapViz, etc.)﴿




                             What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013              11
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab

                       Race Conditions & Deadlocks
                       android.database.sqlite.SQLiteOpenHelper.getReadableDatabase
                                        android.os.AsyncTask.execute
                              java.util.concurrent.RejectedExcutionException


                   28%      A lot of problems arise around the SQLite and the AsyncTask
                            classes, as they require extra attention concerning
                            multithreading errors.




                                                      Use non-‐blocking algorithms
                                                      Use Java’s non-‐locking primitives and higher level
                                                    concurrency abstractions.
                                                      Verification (﴾Java PathExplorer)﴿
                                                      Static checking (﴾Dimmunix, Jlint, FindBugs, Julia)﴿




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             12
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab

                       Missing/Corrupted Resources
                       org.jaudiotagger.audio.exceptions.InvalidAudioFrameException



                   14%      The system fails to locate or open an external file. Note that,
                            here, we refer to external resources, such as an image or an
                            audio file, and not application components..




                                                       Use try/catch blocks
                                                       Use static analysis tools like Motorola Dev checker




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             13
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab

            Improper Component Identification
                                 android.content.ActivityNotFoundException


                            A lot of applications crash due to either undeclared
                       3%   application components (﴾i.e. activities, services, broadcast
                            receivers, or content providers)﴿, in the AndroidManifest.xml
                            file, or system failure to detect a suitable component for a
                            specific task.
                            Malicious apps can try to launch an activity in order to exploit
                            the permissions of the running app.

                                                              Check the existence of the necessary
                                                            application
                                                              User easy to remember codes




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             14
Tuesday, April 9, 13
ISTLab
                                                                                                              ISTLab

                             Insufficient Permission
                                         android.app.Activity.startActivity
                                              java.lang.SecurityException

                            This case can be probably caused by a missing or insufficient
                       3%   permission for the particular activity, in the
                            AndroidManifest.xls file. Also, there is the possibility for more
                            than one entries to exist (﴾with different properties)﴿, for this
                            activity, in the AndroidManifest.xls file. The system manager,
                            however, allows unique activities characterized by a unique id.

                                                              Check the permissions related to a
                                                            component, before calling it to start.
                                                              Provide Clear documentation
                                                              User menu




                            What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             15
Tuesday, April 9, 13
ISTLab
                                                                                                                            ISTLab


                           Top 10 Root cause Exceptions

                                   java.lang.NullPointerException                                                              29

                                     java.lang.outOfMemoryError                                    14

                              java.lang.IllegalArgumentException                         7

                                      java.lang.RuntimeException                     5

                                   java.lang.IllegalStateException               4

         android.view.WindowManager$BadTokenException                        3

                          android.database.sqlite.SQLiteException            3

                           java.lang.IndexOutOfBoundsException           2

                       java.lang.ArrayIndexOutOfBoundsException          2

                                   java.io.FileNotFoundException         2

                                                                     0                       7.5        15           22.5           30




                                   What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                       16
Tuesday, April 9, 13
10 api calls result in



                       17%
                         of the crashes


Tuesday, April 9, 13
ISTLab
                                                                                                                   ISTLab


                            Most Risky Android APIs
                                  android.app.Activity.setContentView                                              4
                                            android.app.Dialog.dismiss                          2
                                     android.view.LayoutInflater.inflate                        2
                                      android.app.Activity.startActivity             1
                       android.graphics.BitmapFactory.decodeResource                 1
                                              android.app.Dialog.show                1
  com.android.internal.view.BaseSurfaceHolder.unlockCanvasAndPost                    1
                                android.graphics.Bitmap.createBItmap                 1
                                                   java.util.ArrayList.get           1
                                     android.view.LayoutInflater.inflate             1

                                                                             0           1       2             3    4




                             What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013                 18
Tuesday, April 9, 13
ISTLab
                                                                                                         ISTLab




             #DROIDCON #LIVE #BUGSENSE
                            http://www.bugsense.com/live


                        One of the first 10 attendees to
                        tweet wins a mastiha liquor!
                       What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013             19
Tuesday, April 9, 13
ISTLab
                                                                                                            ISTLab




                                     Questions?

                       BugSense helps you analyze & troubleshoot your mobile
                                      applications in minutes

                                           http://www.bugsense.com




                          What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013         20
Tuesday, April 9, 13

Weitere ähnliche Inhalte

Ähnlich wie Bug sense droidcon-13

DEVIEW2013: Automating Performance Tests for Android Applications
DEVIEW2013: Automating Performance Tests for Android ApplicationsDEVIEW2013: Automating Performance Tests for Android Applications
DEVIEW2013: Automating Performance Tests for Android Applications
Kyungmin Lee
 
Icpc2010 bettenburg
Icpc2010 bettenburgIcpc2010 bettenburg
Icpc2010 bettenburg
SAIL_QU
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)
Sauce Labs
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps Platform
Apigee | Google Cloud
 

Ähnlich wie Bug sense droidcon-13 (20)

DEVIEW2013: Automating Performance Tests for Android Applications
DEVIEW2013: Automating Performance Tests for Android ApplicationsDEVIEW2013: Automating Performance Tests for Android Applications
DEVIEW2013: Automating Performance Tests for Android Applications
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
Icpc2010 bettenburg
Icpc2010 bettenburgIcpc2010 bettenburg
Icpc2010 bettenburg
 
JavaYDL18
JavaYDL18JavaYDL18
JavaYDL18
 
Ruby conf2012
Ruby conf2012Ruby conf2012
Ruby conf2012
 
Testing Big in JavaScript
Testing Big in JavaScriptTesting Big in JavaScript
Testing Big in JavaScript
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
Lecture #4 activities & fragments
Lecture #4  activities & fragmentsLecture #4  activities & fragments
Lecture #4 activities & fragments
 
DIY in 5 Minutes: Testing Django App with Pytest
DIY in 5 Minutes: Testing Django App with Pytest DIY in 5 Minutes: Testing Django App with Pytest
DIY in 5 Minutes: Testing Django App with Pytest
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golang
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)
 
Java - OOPS and Java Basics
Java - OOPS and Java BasicsJava - OOPS and Java Basics
Java - OOPS and Java Basics
 
ESW #1 - Developing For Android
ESW #1 - Developing For AndroidESW #1 - Developing For Android
ESW #1 - Developing For Android
 
[Ultracode Munich #4] Short introduction to the new Android build system incl...
[Ultracode Munich #4] Short introduction to the new Android build system incl...[Ultracode Munich #4] Short introduction to the new Android build system incl...
[Ultracode Munich #4] Short introduction to the new Android build system incl...
 
AI_BIRDER: USING ARTIFICIAL INTELLIGENCE AND DEEP LEARNING TO CREATE A MOBILE...
AI_BIRDER: USING ARTIFICIAL INTELLIGENCE AND DEEP LEARNING TO CREATE A MOBILE...AI_BIRDER: USING ARTIFICIAL INTELLIGENCE AND DEEP LEARNING TO CREATE A MOBILE...
AI_BIRDER: USING ARTIFICIAL INTELLIGENCE AND DEEP LEARNING TO CREATE A MOBILE...
 
Ai_Birder: Using Artificial Intelligence and Deep Learning to Create a Mobile...
Ai_Birder: Using Artificial Intelligence and Deep Learning to Create a Mobile...Ai_Birder: Using Artificial Intelligence and Deep Learning to Create a Mobile...
Ai_Birder: Using Artificial Intelligence and Deep Learning to Create a Mobile...
 
Designing and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps PlatformDesigning and Implementing a Multiuser Apps Platform
Designing and Implementing a Multiuser Apps Platform
 
Building Large Scale PHP Web Applications with Laravel 4
Building Large Scale PHP Web Applications with Laravel 4Building Large Scale PHP Web Applications with Laravel 4
Building Large Scale PHP Web Applications with Laravel 4
 
Droidcon: Sean Owen: Driving Downloads via Intents- 29/10/2010
Droidcon: Sean Owen: Driving Downloads via Intents- 29/10/2010Droidcon: Sean Owen: Driving Downloads via Intents- 29/10/2010
Droidcon: Sean Owen: Driving Downloads via Intents- 29/10/2010
 
GDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android NGDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android N
 

Mehr von Droidcon Berlin

Android industrial mobility
Android industrial mobility Android industrial mobility
Android industrial mobility
Droidcon Berlin
 
From sensor data_to_android_and_back
From sensor data_to_android_and_backFrom sensor data_to_android_and_back
From sensor data_to_android_and_back
Droidcon Berlin
 
new_age_graphics_android_x86
new_age_graphics_android_x86new_age_graphics_android_x86
new_age_graphics_android_x86
Droidcon Berlin
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building Android
Droidcon Berlin
 
Matchinguu droidcon presentation
Matchinguu droidcon presentationMatchinguu droidcon presentation
Matchinguu droidcon presentation
Droidcon Berlin
 
Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3
Droidcon Berlin
 
The artofcalabash peterkrauss
The artofcalabash peterkraussThe artofcalabash peterkrauss
The artofcalabash peterkrauss
Droidcon Berlin
 
Raesch, gries droidcon 2014
Raesch, gries   droidcon 2014Raesch, gries   droidcon 2014
Raesch, gries droidcon 2014
Droidcon Berlin
 
Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Android open gl2_droidcon_2014
Android open gl2_droidcon_2014
Droidcon Berlin
 
20140508 quantified self droidcon
20140508 quantified self droidcon20140508 quantified self droidcon
20140508 quantified self droidcon
Droidcon Berlin
 
Tuning android for low ram devices
Tuning android for low ram devicesTuning android for low ram devices
Tuning android for low ram devices
Droidcon Berlin
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
Droidcon Berlin
 
Droidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicroDroidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicro
Droidcon Berlin
 
Droidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenbergDroidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenberg
Droidcon Berlin
 
Droidcon2013 bootstrap luedeke
Droidcon2013 bootstrap luedekeDroidcon2013 bootstrap luedeke
Droidcon2013 bootstrap luedeke
Droidcon Berlin
 

Mehr von Droidcon Berlin (20)

crashing in style
crashing in stylecrashing in style
crashing in style
 
Raspberry Pi
Raspberry PiRaspberry Pi
Raspberry Pi
 
Android industrial mobility
Android industrial mobility Android industrial mobility
Android industrial mobility
 
Details matter in ux
Details matter in uxDetails matter in ux
Details matter in ux
 
From sensor data_to_android_and_back
From sensor data_to_android_and_backFrom sensor data_to_android_and_back
From sensor data_to_android_and_back
 
droidparts
droidpartsdroidparts
droidparts
 
new_age_graphics_android_x86
new_age_graphics_android_x86new_age_graphics_android_x86
new_age_graphics_android_x86
 
5 tips of monetization
5 tips of monetization5 tips of monetization
5 tips of monetization
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building Android
 
Matchinguu droidcon presentation
Matchinguu droidcon presentationMatchinguu droidcon presentation
Matchinguu droidcon presentation
 
Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3Cgm life sdk_droidcon_2014_v3
Cgm life sdk_droidcon_2014_v3
 
The artofcalabash peterkrauss
The artofcalabash peterkraussThe artofcalabash peterkrauss
The artofcalabash peterkrauss
 
Raesch, gries droidcon 2014
Raesch, gries   droidcon 2014Raesch, gries   droidcon 2014
Raesch, gries droidcon 2014
 
Android open gl2_droidcon_2014
Android open gl2_droidcon_2014Android open gl2_droidcon_2014
Android open gl2_droidcon_2014
 
20140508 quantified self droidcon
20140508 quantified self droidcon20140508 quantified self droidcon
20140508 quantified self droidcon
 
Tuning android for low ram devices
Tuning android for low ram devicesTuning android for low ram devices
Tuning android for low ram devices
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
 
Droidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicroDroidcon2013 security genes_trendmicro
Droidcon2013 security genes_trendmicro
 
Droidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenbergDroidcon2013 commercialsuccess rannenberg
Droidcon2013 commercialsuccess rannenberg
 
Droidcon2013 bootstrap luedeke
Droidcon2013 bootstrap luedekeDroidcon2013 bootstrap luedeke
Droidcon2013 bootstrap luedeke
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Bug sense droidcon-13

  • 1. ISTLab java.lang.RuntimeException: Unable to resume activity {com.pinapps.android/ java.lang.RuntimeException: Unable to start activity com.facebook.LoginActivity}: com.facebook.FacebookException: Cannot call LoginActivity ComponentInfo{com.pinapps.android/com.pinapps.android.ActAppDetails}: with a null calling package. This can occur if the launchMode of the caller is singleInstance. java.lang.NullPointerException at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2138) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2153) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1682) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3553) at android.app.ActivityThread.access$1500(ActivityThread.java:117) at android.app.ActivityThread.access$700(ActivityThread.java:140) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:3701) at android.app.ActivityThread.main(ActivityThread.java:4898) at java.lang.reflect.Method.invokeNative(Native Method) What BigData tell us about at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 1008) at dalvik.system.NativeStart.main(Native Method) Caused by: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775) com.facebook.FacebookException: Cannot call LoginActivity with a null calling package. at dalvik.system.NativeStart.main(Native Method) Caused by: This can occur if the launchMode of the caller is singleInstance. java.lang.NullPointerException at com.facebook.LoginActivity.onResume(LoginActivity.java:110) Android Errors at com.pinapps.android.FragAppMedia.onCreateView(FragAppMedia.java:126) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1176) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) at android.app.Activity.performResume(Activity.java:3882) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2128) ... 12 more ... 12 more java.lang.RuntimeException: Unable to start activity java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pinapps.android/ ComponentInfo{com.pinapps.android/com.pinapps.android.ActSplash}: com.pinapps.android.ActAppDetails}: java.lang.IllegalStateException: ViewPager does not android.view.InflateException: Binary XML file line #2: Error inflating class have adapter instance. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1670) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1686) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) at android.app.ActivityThread.access$1500(ActivityThread.java:118) at android.app.ActivityThread.access$600(ActivityThread.java:130) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:932) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:3706) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 841) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) at dalvik.system.NativeStart.main(Native Method) Caused by: at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.IllegalStateException: ViewPager does not have adapter instance. android.view.InflateException: Binary XML file line #2: Error inflating class at com.viewpagerindicator.TitlePageIndicator.setViewPager(TitlePageIndicator.java:716) at android.view.LayoutInflater.createView(LayoutInflater.java:518) at com.pinapps.android.ActAppDetails.onCreate(ActAppDetails.java:129) at at android.app.Activity.performCreate(Activity.java:5008) com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInfl at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) ater.java:56) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568) ... 11 more What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 1 Tuesday, April 9, 13
  • 2. ISTLab ISTLab I’m Panos Papadopoulos Founder & CEO at BugSense @panosjee I’m Maria Kechagia PhD student at AUEB Researcher at ISTLab What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 2 Tuesday, April 9, 13
  • 3. You are here because of ANDROID BUGS Tuesday, April 9, 13
  • 4. ISTLab ISTLab BigData Research 40M crashes 3M stack traces 320M devices From Mar 1 to May 30 2012 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 4 Tuesday, April 9, 13
  • 5. ISTLab ISTLab Crashing apps lead to user churn Total Users Affected Users Lost Users What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 5 Tuesday, April 9, 13
  • 6. ISTLab ISTLab The Process Android Java Stack Data Cleaning Data Heuristics Apps Traces API Crash Suggestions Design Causes Categorization Signatures Problems 6 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 6 Tuesday, April 9, 13
  • 7. ISTLab ISTLab Heuristic Function (﴾F+ (﴾A+ I∗)﴿∗)﴿ | (﴾F∗ (﴾A+ I∗)﴿+)﴿E This expresses various scenarios in which an exception can occur Within the Android framework: F + E Within the application: F ∗ A+ E When the application calls an api: F∗ A+ I+ E Within an api-‐registered application callback: F∗ (﴾A+ I+ A+)﴿+ E When an api-‐registered application callback calls an api: F∗ (﴾A+ I+)﴿+ E What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 7 Tuesday, April 9, 13
  • 8. ISTLab ISTLab API Minefield What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 8 Tuesday, April 9, 13
  • 9. ISTLab ISTLab Crash Categories Memory Exhaustion 28 Rece conditions and deadlocks 28 Missing/Corrupted Resource 14 Unclassified 10 Invalid format/syntax 5 Indexing problem 5 Connectivity Problems 4 Improper component identification 3 Insufficient Permission 3 0 7.5 15 22.5 30 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 9 Tuesday, April 9, 13
  • 10. ISTLab ISTLab You are not to blame for all crashes! 86% app context 3% Android context 11% API context What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 10 Tuesday, April 9, 13
  • 11. ISTLab ISTLab Memory Exhaustion java.lang.outofmemory java.lang.outofmemory 37% Although after Honeycomb bitmaps are stored into the Dalvik heap, such exceptions continue to puzzle developers. as mobile devices become smaller and applications have heavier graphics, there is a need for thrifty memory use and good performance. Resource auto-‐resize interface Restricted use of cache structures Cheap file formats Fixed heap memory Use profiling (﴾Tracker Tab, MAT, HeapViz, etc.)﴿ What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 11 Tuesday, April 9, 13
  • 12. ISTLab ISTLab Race Conditions & Deadlocks android.database.sqlite.SQLiteOpenHelper.getReadableDatabase android.os.AsyncTask.execute java.util.concurrent.RejectedExcutionException 28% A lot of problems arise around the SQLite and the AsyncTask classes, as they require extra attention concerning multithreading errors. Use non-‐blocking algorithms Use Java’s non-‐locking primitives and higher level concurrency abstractions. Verification (﴾Java PathExplorer)﴿ Static checking (﴾Dimmunix, Jlint, FindBugs, Julia)﴿ What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 12 Tuesday, April 9, 13
  • 13. ISTLab ISTLab Missing/Corrupted Resources org.jaudiotagger.audio.exceptions.InvalidAudioFrameException 14% The system fails to locate or open an external file. Note that, here, we refer to external resources, such as an image or an audio file, and not application components.. Use try/catch blocks Use static analysis tools like Motorola Dev checker What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 13 Tuesday, April 9, 13
  • 14. ISTLab ISTLab Improper Component Identification android.content.ActivityNotFoundException A lot of applications crash due to either undeclared 3% application components (﴾i.e. activities, services, broadcast receivers, or content providers)﴿, in the AndroidManifest.xml file, or system failure to detect a suitable component for a specific task. Malicious apps can try to launch an activity in order to exploit the permissions of the running app. Check the existence of the necessary application User easy to remember codes What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 14 Tuesday, April 9, 13
  • 15. ISTLab ISTLab Insufficient Permission android.app.Activity.startActivity java.lang.SecurityException This case can be probably caused by a missing or insufficient 3% permission for the particular activity, in the AndroidManifest.xls file. Also, there is the possibility for more than one entries to exist (﴾with different properties)﴿, for this activity, in the AndroidManifest.xls file. The system manager, however, allows unique activities characterized by a unique id. Check the permissions related to a component, before calling it to start. Provide Clear documentation User menu What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 15 Tuesday, April 9, 13
  • 16. ISTLab ISTLab Top 10 Root cause Exceptions java.lang.NullPointerException 29 java.lang.outOfMemoryError 14 java.lang.IllegalArgumentException 7 java.lang.RuntimeException 5 java.lang.IllegalStateException 4 android.view.WindowManager$BadTokenException 3 android.database.sqlite.SQLiteException 3 java.lang.IndexOutOfBoundsException 2 java.lang.ArrayIndexOutOfBoundsException 2 java.io.FileNotFoundException 2 0 7.5 15 22.5 30 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 16 Tuesday, April 9, 13
  • 17. 10 api calls result in 17% of the crashes Tuesday, April 9, 13
  • 18. ISTLab ISTLab Most Risky Android APIs android.app.Activity.setContentView 4 android.app.Dialog.dismiss 2 android.view.LayoutInflater.inflate 2 android.app.Activity.startActivity 1 android.graphics.BitmapFactory.decodeResource 1 android.app.Dialog.show 1 com.android.internal.view.BaseSurfaceHolder.unlockCanvasAndPost 1 android.graphics.Bitmap.createBItmap 1 java.util.ArrayList.get 1 android.view.LayoutInflater.inflate 1 0 1 2 3 4 What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 18 Tuesday, April 9, 13
  • 19. ISTLab ISTLab #DROIDCON #LIVE #BUGSENSE http://www.bugsense.com/live One of the first 10 attendees to tweet wins a mastiha liquor! What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 19 Tuesday, April 9, 13
  • 20. ISTLab ISTLab Questions? BugSense helps you analyze & troubleshoot your mobile applications in minutes http://www.bugsense.com What BigData Analysis tell us about Android Errors @ DroidCon DE, 11 April 2013 20 Tuesday, April 9, 13