<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi Denis,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>We might add support for fragments to FlowDroid in an internal project in the not-so-far future, but I cannot give you a definite schedule for that. If it happens and when it’s done, it will also be merged into the open-source tool.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The AndroidCallbacks.txt file doesn’t help here. That file only lists the interfaces that contain callback methods. If such an interface is implemented in the app, all of its methods are considered as callbacks. There is no ordering of callbacks, because they can happen at any time in Android. You can’t tell, for instance, whether there is first an incoming SMS message and then a low battery state or vice versa. Fragments, on the other hand, have a well-defined lifecycle just like an Activity. Even more, the Fragment lifecycle integrates with the one of its parent Activity. To faithfully model this lifecycle, you would have to extend the AndroidEntryPointCreator class. If you want to add this support, look at what we already have in that class. You essentially need to create a bigger and more involved dummy main method.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Best regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> Steven<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> soot-list-bounces@CS.McGill.CA [mailto:soot-list-bounces@CS.McGill.CA] <b>Im Auftrag von </b>Denis Bogdanas<br><b>Gesendet:</b> Montag, 6. Juni 2016 00:41<br><b>An:</b> soot-list@CS.McGill.CA<br><b>Betreff:</b> [Soot-list] FlowDroid: adding support for more components<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div><div><div><div><p class=MsoNormal>Hi Steven,<o:p></o:p></p></div><p class=MsoNormal style='margin-bottom:12.0pt'>I'm thinking to add support for more Android components to FlowDroid. At least supporting Fragment is a must for my project.<o:p></o:p></p></div><p class=MsoNormal>I have a few questions:<o:p></o:p></p></div><p class=MsoNormal>- How was the file AndroidCallbacks.txt produced? Manually, or through some tool/methodology?<br clear=all><o:p></o:p></p><div><div><div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>- To support Fragment: if I just read the top-level fragments from Manifest the way Activity classes are read, and add the Fragment to AndroidCallbacks.txt, will that work? If not, could you suggest what shoud I do?<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>thanks,<o:p></o:p></p></div><div><p class=MsoNormal>-- <o:p></o:p></p><div><div><p class=MsoNormal style='margin-bottom:12.0pt'>Denis<o:p></o:p></p></div></div></div></div></div></div></div></div></body></html>