[ 
https://issues.apache.org/jira/browse/CB-11117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15261785#comment-15261785
 ] 

ASF GitHub Bot commented on CB-11117:
-------------------------------------

Github user vladimir-kotikov commented on a diff in the pull request:

    https://github.com/apache/cordova-android/pull/295#discussion_r61393298
  
    --- Diff: bin/templates/cordova/lib/prepare.js ---
    @@ -295,25 +344,47 @@ function handleIcons(projectConfig, platformRoot) {
     
         // The source paths for icons and splashes are relative to
         // project's config.xml location, so we use it as base path.
    -    var projectRoot = path.dirname(projectConfig.path);
    -    var destination = path.join(platformRoot, 'res');
         for (var density in android_icons) {
    -        copyImage(path.join(projectRoot, android_icons[density].src), 
destination, density, 'icon.png');
    +        var targetPath = getImageResourcePath(
    +            platformResourcesDir, density, 'icon.png', 
path.basename(android_icons[density].src));
    +        resourceMap[targetPath] = android_icons[density].src;
         }
    +
         // There's no "default" drawable, so assume default == mdpi.
         if (default_icon && !android_icons.mdpi) {
    -        copyImage(path.join(projectRoot, default_icon.src), destination, 
'mdpi', 'icon.png');
    +        var targetPath = getImageResourcePath(
    +            platformResourcesDir, 'mdpi', 'icon.png', 
path.basename(default_icon.src));
    +        resourceMap[targetPath] = default_icon.src;
         }
    +
    +    events.emit('verbose', 'Updating icons at ' + platformResourcesDir);
    +    FileUpdater.updatePaths(
    +        resourceMap, { rootDir: cordovaProject.root }, logFileOp);
     }
     
    -// remove the default resource name from all drawable folders
    -function deleteDefaultResourceAt(baseDir, resourceName) {
    -    shell.ls(path.join(baseDir, 'res/drawable-*'))
    +function cleanIcons(projectRoot, projectConfig, platformResourcesDir) {
    +    var icons = projectConfig.getIcons('android');
    +    if (icons.length > 0) {
    +        var resourceMap = mapImageResources(projectRoot, 
platformResourcesDir, 'icon.png');
    +        events.emit('verbose', 'Cleaning icons at ' + 
platformResourcesDir);
    +
    +        // No source paths are specified in the map, so updatePaths() will 
delete the target files.
    +        FileUpdater.updatePaths(
    --- End diff --
    
    Just like in `cleanWww` - is there any advantage of calling this rather 
than doing `shell.rm` on these files? This would  eliminate the need to know 
how `mapImageResources` and `FileUpdater.updatePaths` works internally and IMO 
improve readability a lot.


> Preparing platforms should skip copying files which haven't changed
> -------------------------------------------------------------------
>
>                 Key: CB-11117
>                 URL: https://issues.apache.org/jira/browse/CB-11117
>             Project: Apache Cordova
>          Issue Type: Improvement
>          Components: Android, iOS, Windows
>            Reporter: Jason Ginchereau
>            Assignee: Jason Ginchereau
>
> Many cordova CLI commands include a "prepare" operation, including 'cordova 
> build', 'cordova run', 'cordova plugin add', and more. Every time each of 
> those commands runs, the target platform is "prepared", which involves 
> copying all files from the [<project>/www, 
> <project>/platforms/<platform>/platform_www, <project>/merges/<platform>] to 
> the platform's target www folder, as well as copying a bunch of icons and 
> splash screens to platform-specific locations.
> For the very first prepare of a platform, all that file copying is necessary. 
> But most of the time after that most of the files being copied have not 
> changed and therefore don't really need to be copied again. So the typical 
> developer inner loop (edit a few source files, build and run the app, repeat) 
> is a lot slower than it could be for a Cordova project, especially one that 
> includes a significant number of source files or resources.
> Instead, Cordova should be smart enough to skip copying of files that haven't 
> changed, based on their last-modified timestamp. (But also there should still 
> be a way to force a clean/full/non-incremental build if desired.)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to