def fill_classpaths(self): # classpaths: # 1. patch classes # 2. dependent modules' patch classes # 3. android.jar # 4. third party jars # 5. generated classes in build directory patch_classes_cache_dir = self._finder.get_patch_classes_cache_dir() self._classpaths.append(patch_classes_cache_dir) self._classpaths.append(self._finder.get_dst_classes_dir()) for module in self._module_info['local_module_dep']: finder = GradleDirectoryFinder(module, self._module_dir_map[module], self._cache_dir) self._classpaths.append(finder.get_patch_classes_cache_dir()) self._classpaths.append(os.path.join(self._config['compile_sdk_directory'], 'android.jar')) self._classpaths.extend(self._module_info['dep_jar_path']) # remove existing same-name class in build directory srcdirs = self._config['project_source_sets'][self._name]['main_src_directory'] for dirpath, dirnames, files in os.walk(patch_classes_cache_dir): for fn in files: if self._is_r_file_changed and self._module_info['packagename'] + '.R.' in fn: android_tools.delete_class(dirpath, fn.replace('.class', '')) if fn.endswith('.class') and '$' not in fn and 'R.' not in fn and 'Manifest.' not in fn: cp = os.path.join(dirpath, fn) java_src = cp.replace('.class', '.java').split('classes' + os.path.sep)[1] existence = True for src_dir in srcdirs: if os.path.exists(os.path.join(src_dir, java_src)): existence = True break # if not os.path.exists(os.path.join(src_dir, java_src)): # android_tools.delete_class(dirpath, fn.replace('.class', '')) if not existence: android_tools.delete_class(dirpath, fn.replace('.class', ''))
def fill_classpaths(self): # classpaths: # 1. patch classes # 2. dependent modules' patch classes # 3. android.jar # 4. third party jars # 5. generated classes in build directory patch_classes_cache_dir = self._finder.get_patch_classes_cache_dir() self._classpaths.append(patch_classes_cache_dir) self._classpaths.append(self._finder.get_dst_classes_dir()) for module in self._module_info['local_module_dep']: finder = GradleDirectoryFinder(module, self._module_dir_map[module], self._cache_dir) self._classpaths.append(finder.get_patch_classes_cache_dir()) self._classpaths.append(os.path.join(self._config['compile_sdk_directory'], 'android.jar')) self._classpaths.extend(self._module_info['dep_jar_path']) # remove existing same-name class in build directory srcdirs = self._config['project_source_sets'][self._name]['main_src_directory'] for dirpath, dirnames, files in os.walk(patch_classes_cache_dir): for fn in files: if self._is_r_file_changed and self._module_info['packagename'] + '.R.' in fn: android_tools.delete_class(dirpath, fn.replace('.class', '')) if fn.endswith('.class') and '$' not in fn and 'R.' not in fn and 'Manifest.' not in fn: cp = os.path.join(dirpath, fn) java_src = cp.replace('.class', '.java').split('classes' + os.path.sep)[1] existence = True for src_dir in srcdirs: if os.path.exists(os.path.join(src_dir, java_src)): existence = True break # if not os.path.exists(os.path.join(src_dir, java_src)): # android_tools.delete_class(dirpath, fn.replace('.class', '')) if not existence: android_tools.delete_class(dirpath, fn.replace('.class', ''))