mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-07 23:03:11 +08:00
CB-9149 Make gradle alias subprojects in order to handle libs that depend on libs. This closes #182
This commit is contained in:
parent
6d334c05e9
commit
899daa9ea7
34
bin/templates/cordova/lib/build.js
vendored
34
bin/templates/cordova/lib/build.js
vendored
@ -102,6 +102,19 @@ function hasCustomRules() {
|
|||||||
return fs.existsSync(path.join(ROOT, 'custom_rules.xml'));
|
return fs.existsSync(path.join(ROOT, 'custom_rules.xml'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function extractRealProjectNameFromManifest(projectPath) {
|
||||||
|
var manifestPath = path.join(projectPath, 'AndroidManifest.xml');
|
||||||
|
var manifestData = fs.readFileSync(manifestPath, 'utf8');
|
||||||
|
var m = /<manifest[\s\S]*?package\s*=\s*"(.*?)"/i.exec(manifestData);
|
||||||
|
if (!m) {
|
||||||
|
throw new Error('Could not find package name in ' + manifestPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
var packageName=m[1];
|
||||||
|
var lastDotIndex = packageName.lastIndexOf('.');
|
||||||
|
return packageName.substring(lastDotIndex + 1);
|
||||||
|
}
|
||||||
|
|
||||||
function extractProjectNameFromManifest(projectPath) {
|
function extractProjectNameFromManifest(projectPath) {
|
||||||
var manifestPath = path.join(projectPath, 'AndroidManifest.xml');
|
var manifestPath = path.join(projectPath, 'AndroidManifest.xml');
|
||||||
var manifestData = fs.readFileSync(manifestPath, 'utf8');
|
var manifestData = fs.readFileSync(manifestPath, 'utf8');
|
||||||
@ -245,18 +258,29 @@ var builders = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var name=extractRealProjectNameFromManifest(ROOT);
|
||||||
var subProjectsAsGradlePaths = subProjects.map(function(p) { return ':' + p.replace(/[/\\]/g, ':'); });
|
var subProjectsAsGradlePaths = subProjects.map(function(p) { return ':' + p.replace(/[/\\]/g, ':'); });
|
||||||
|
//Remove the proj.id/name- prefix from projects: https://issues.apache.org/jira/browse/CB-9149
|
||||||
|
var settingsGradlePaths = subProjects.map(function(p){
|
||||||
|
var realDir=p.replace(/[/\\]/g, ':');
|
||||||
|
var libName=realDir.replace(name+'-','');
|
||||||
|
var str='include ":'+libName+'"\n';
|
||||||
|
if(realDir.indexOf(name+'-')!==-1)
|
||||||
|
str+='project(":'+libName+'").projectDir = new File("'+p+'")\n';
|
||||||
|
return str;
|
||||||
|
});
|
||||||
|
|
||||||
// Write the settings.gradle file.
|
// Write the settings.gradle file.
|
||||||
fs.writeFileSync(path.join(projectPath, 'settings.gradle'),
|
fs.writeFileSync(path.join(projectPath, 'settings.gradle'),
|
||||||
'// GENERATED FILE - DO NOT EDIT\n' +
|
'// GENERATED FILE - DO NOT EDIT\n' +
|
||||||
'include ":"\n' +
|
'include ":"\n' + settingsGradlePaths.join(''));
|
||||||
'include "' + subProjectsAsGradlePaths.join('"\ninclude "') + '"\n');
|
|
||||||
// Update dependencies within build.gradle.
|
// Update dependencies within build.gradle.
|
||||||
var buildGradle = fs.readFileSync(path.join(projectPath, 'build.gradle'), 'utf8');
|
var buildGradle = fs.readFileSync(path.join(projectPath, 'build.gradle'), 'utf8');
|
||||||
var depsList = '';
|
var depsList = '';
|
||||||
subProjectsAsGradlePaths.forEach(function(p) {
|
subProjects.forEach(function(p) {
|
||||||
depsList += ' debugCompile project(path: "' + p + '", configuration: "debug")\n';
|
var libName=p.replace(/[/\\]/g, ':').replace(name+'-','');
|
||||||
depsList += ' releaseCompile project(path: "' + p + '", configuration: "release")\n';
|
depsList += ' debugCompile project(path: "' + libName + '", configuration: "debug")\n';
|
||||||
|
depsList += ' releaseCompile project(path: "' + libName + '", configuration: "release")\n';
|
||||||
});
|
});
|
||||||
// For why we do this mapping: https://issues.apache.org/jira/browse/CB-8390
|
// For why we do this mapping: https://issues.apache.org/jira/browse/CB-8390
|
||||||
var SYSTEM_LIBRARY_MAPPINGS = [
|
var SYSTEM_LIBRARY_MAPPINGS = [
|
||||||
|
Loading…
Reference in New Issue
Block a user