use of com.taobao.android.builder.dependency.AtlasDependencyTree in project atlas by alibaba.
the class StandardizeLibManifestTask method preProcess.
@TaskAction
public void preProcess() throws IOException, DocumentException, InterruptedException {
AtlasDependencyTree dependencyTree = AtlasBuildContext.androidDependencyTrees.get(appVariantContext.getVariantName());
androidLibraries = dependencyTree.getAllAndroidLibrarys();
ExecutorServicesHelper executorServicesHelper = new ExecutorServicesHelper("StandardizeLibManifestTask", getLogger(), 0);
List<Runnable> runnables = new ArrayList<>();
ManifestInfo mainManifestFileObject = getManifestFileObject(mainManifestFile);
appVariantContext.getModifyManifestDir().mkdirs();
for (AndroidLibrary androidLibrary : androidLibraries) {
File file = androidLibrary.getManifest();
if (!file.exists()) {
getLogger().error(androidLibrary.getResolvedCoordinates().toString() + " not has manifest : " + file.getAbsolutePath());
return;
}
runnables.add(new Runnable() {
@Override
public void run() {
try {
File modifyManifest = appVariantContext.getModifyManifest(androidLibrary);
// getLogger().error(file.getAbsolutePath() + " -> " + modifyManifest
// .getAbsolutePath());
ManifestFileUtils.updatePreProcessManifestFile(modifyManifest, file, mainManifestFileObject, appVariantContext.getAtlasExtension().getTBuildConfig().isUpdateSdkVersion(), appVariantContext.getAtlasExtension().getTBuildConfig().isIncremental());
} catch (Throwable e) {
e.printStackTrace();
throw new GradleException("preprocess manifest failed " + file.getAbsolutePath(), e);
}
}
});
}
executorServicesHelper.execute(runnables);
}
use of com.taobao.android.builder.dependency.AtlasDependencyTree in project atlas by alibaba.
the class MergeManifestAwbsConfigAction method execute.
@Override
public void execute(MtlParallelTask parallelTask) {
super.execute(parallelTask);
AtlasDependencyTree atlasDependencyTree = AtlasBuildContext.androidDependencyTrees.get(parallelTask.getVariantName());
if (null == atlasDependencyTree) {
return;
}
List<DefaultTask> tasks = new ArrayList<DefaultTask>();
AppVariantOutputContext appVariantOutputContext = getAppVariantOutputContext();
for (final AwbBundle awbBundle : atlasDependencyTree.getAwbBundles()) {
MergeAwbManifests.ConfigAction configAction = new MergeAwbManifests.ConfigAction(appVariantOutputContext.getScope(), awbBundle, appVariantOutputContext);
MergeAwbManifests mergeAwbManifests = TaskCreater.create(appVariantContext.getProject(), configAction.getName(), configAction.getType());
configAction.execute(mergeAwbManifests);
tasks.add(mergeAwbManifests);
}
parallelTask.parallelTask = tasks;
parallelTask.uniqueTaskName = getName();
}
use of com.taobao.android.builder.dependency.AtlasDependencyTree in project atlas by alibaba.
the class ProcessResAwbsTask method run.
@TaskAction
void run() throws ExecutionException, InterruptedException {
AtlasDependencyTree atlasDependencyTree = AtlasBuildContext.androidDependencyTrees.get(getVariantName());
if (null == atlasDependencyTree) {
return;
}
final VariantScope outputScope = appVariantOutputContext.getScope();
ExecutorServicesHelper executorServicesHelper = new ExecutorServicesHelper(taskName, getLogger(), 0);
List<Runnable> runnables = new ArrayList<>();
for (final AwbBundle awbBundle : atlasDependencyTree.getAwbBundles()) {
if (awbBundle.isMBundle) {
continue;
}
runnables.add(new Runnable() {
@Override
public void run() {
File symbolLocation = new File(outputScope.getGlobalScope().getIntermediatesDir(), "awb-symbols/" + outputScope.getVariantConfiguration().getDirName() + "/" + awbBundle.getName());
// Write the resources to the ap for debug
if ("debug".equals(appVariantOutputContext.getVariantContext().getBaseVariantData().getName())) {
appVariantOutputContext.appBuildInfo.getOtherFilesMap().put("awo/" + awbBundle.getPackageName() + ".R.txt", new File(symbolLocation, "R.txt"));
}
ProcessAwbAndroidResources.ConfigAction configAction = new ProcessAwbAndroidResources.ConfigAction(outputScope, symbolLocation, true, awbBundle, getBuilder(), appVariantOutputContext, baseVariantOutput);
ProcessAwbAndroidResources processAwbAndroidResources = TaskCreater.create(getProject(), configAction.getName(), configAction.getType());
processAwbAndroidResources.mainDexSymbolFileCollection = mainDexSymbolFileCollection;
appVariantContext.awbsProcessResourcesTask.put(awbBundle.getName(), processAwbAndroidResources);
configAction.execute(processAwbAndroidResources);
try {
processAwbAndroidResources.doFullTaskAction();
} catch (IOException e) {
throw new GradleException("process awb res exception", e);
}
}
});
}
executorServicesHelper.execute(runnables);
}
use of com.taobao.android.builder.dependency.AtlasDependencyTree in project atlas by alibaba.
the class AwbDataBindingExportBuildInfoTask method run.
@TaskAction
public void run() throws ExecutionException, InterruptedException {
AtlasDependencyTree atlasDependencyTree = AtlasBuildContext.androidDependencyTrees.get(getVariantName());
if (null == atlasDependencyTree) {
return;
}
DataBindingBuilder dataBindingBuilder = new DataBindingBuilder();
dataBindingBuilder.setPrintMachineReadableOutput(false);
dataBindingBuilder.setDebugLogEnabled(appVariantContext.getProject().getLogger().isDebugEnabled());
List<Runnable> tasks = new ArrayList<Runnable>();
for (final AwbBundle awbBundle : atlasDependencyTree.getAwbBundles()) {
if (!appVariantContext.getAtlasExtension().getTBuildConfig().getDataBindingBundles().contains(awbBundle.getPackageName()) || awbBundle.isMBundle) {
continue;
}
tasks.add(new Runnable() {
@Override
public void run() {
AwbDataBindingExportBuildInfoConfigAction exportBuildInfoConfigAction = new AwbDataBindingExportBuildInfoConfigAction(appVariantContext, awbBundle, dataBindingBuilder.getPrintMachineReadableOutput(), dataBindingBuilder);
DataBindingExportBuildInfoTask exportBuildInfoTask = TaskCreater.create(appVariantContext.getProject(), exportBuildInfoConfigAction.getName(), exportBuildInfoConfigAction.getType());
exportBuildInfoConfigAction.execute(exportBuildInfoTask);
exportBuildInfoTask.execute();
}
});
}
ExecutorServicesHelper executorServicesHelper = new ExecutorServicesHelper("dataBindingExportBuildInfo", getLogger(), 0);
executorServicesHelper.execute(tasks);
}
use of com.taobao.android.builder.dependency.AtlasDependencyTree in project atlas by alibaba.
the class MergeAwbsJniFolder method execute.
@Override
public void execute(MtlParallelTask parallelTask) {
super.execute(parallelTask);
AtlasDependencyTree atlasDependencyTree = AtlasBuildContext.androidDependencyTrees.get(parallelTask.getVariantName());
if (null == atlasDependencyTree) {
return;
}
List<DefaultTask> tasks = new ArrayList<DefaultTask>();
for (final AwbBundle awbBundle : atlasDependencyTree.getAwbBundles()) {
MergeAwbAssets.MergeAwbJniLibFoldersConfigAction mergeAwbJniLibFoldersConfigAction = new MergeAwbAssets.MergeAwbJniLibFoldersConfigAction(appVariantContext, baseVariantOutput, awbBundle);
MergeAwbAssets mergeTask = TaskCreater.create(appVariantContext.getProject(), mergeAwbJniLibFoldersConfigAction.getName(), mergeAwbJniLibFoldersConfigAction.getType());
mergeAwbJniLibFoldersConfigAction.execute(mergeTask);
tasks.add(mergeTask);
}
parallelTask.parallelTask = tasks;
parallelTask.concurrent = false;
parallelTask.uniqueTaskName = getName();
}
Aggregations