<div dir="ltr">I completely agree with you that we shouldn't change LLDB too much just to speed up the startup time at the first use.<div><br></div><div>For android we already have a host side disk cache in place similar to what you described for iOS and we already using ADB (an android specific interface) to download the files from the device but unfortunately its speed is only ~4-5MB/s on most device.</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Feb 23, 2016 at 9:23 PM Greg Clayton <<a href="mailto:gclayton@apple.com">gclayton@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> On Feb 23, 2016, at 10:31 AM, Nico Weber <<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>> wrote:<br>
><br>
> On Tue, Feb 23, 2016 at 1:21 PM, Tamas Berghammer via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a>> wrote:<br>
> Yes we already have a disk cache on the host. I agree with you that waiting 30s at the first startup shouldn't be an issue in general (Pavel isn't sharing my opinion). The only catch is that in case of iOS there are only a few different builds released so if you downloaded the modules once then I think you won't have to download them the next time when you try to use a different device. In case of Android we have to download the symbols from each device you are using and at that point 30s might be an issue (I still don't think it is).<br>
><br>
> With my app developer hat on, if some program makes me wait 30s for something then I won't like that program.<br>
<br>
I agree, but if the first time you hook your phone up Android Studio pops up a dialog box saying "This is the first time you have connected this device, hold on while I cache the shared libraries for this device..." then it wouldn't be too bad. It is primarily the fact that the 30 seconds is happening without feedback during first launch or attach. Also, you can probably use something faster than the lldb-platform to download all of the files. In Xcode, we download all symbols into the users home directory in a known location:<br>
<br>
~/Library/Developer/Xcode/iOS DeviceSupport<br>
<br>
This folder contains the exact OS version and a build number:<br>
<br>
(lldb) platform select remote-ios<br>
  Platform: remote-ios<br>
 Connected: no<br>
 SDK Roots: [ 0] "~/Library/Developer/Xcode/iOS DeviceSupport/9.0 (WWWWW)"<br>
 SDK Roots: [ 1] "~/Library/Developer/Xcode/iOS DeviceSupport/9.1 (XXXXX)"<br>
 SDK Roots: [ 2] "~/Library/Developer/Xcode/iOS DeviceSupport/9.2 (YYYYY)"<br>
<br>
Where WWWWW, XXXXX, YYYYY are build numbers. We know we can look in these folders for any files that are from the device. They get populated and these SDK directories get searched by LLDB's PlatformRemoteiOS so they get found (we don't use the file cache that the PlatformAndroid currently uses).<br>
<br>
So with a little work, I would add some functionality to your Android Studio, have something that knows how to copy files from device as quickly as possible (using lldb-platform is sloooowww and that is the way it is currently done I believe) into some such directory, all while showing a progress dialog to the user on first device connect, and then debugging will always be quick. And you can probably make it quicker than 30 seconds.<br>
<br>
Greg Clayton<br>
<br>
<br>
</blockquote></div>