You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by er...@apache.org on 2026/05/27 03:10:31 UTC
(cordova-android) branch feat/improved-gradle-build updated (82a938e6 -> 8d20f842)
This is an automated email from the ASF dual-hosted git repository.
erisu pushed a change to branch feat/improved-gradle-build
in repository https://gitbox.apache.org/repos/asf/cordova-android.git
discard 82a938e6 feat: support adding project build script dependencies
add f490531d chore(INFRA): Set up default protection ruleset for default and release branches (#1927)
add 08c4fd1e chore(ci): improve workflows & dependabot (#1928)
add 0baa901d chore(deps): bump erisu/license-checker-action from 2.0.1 to 2.1.0 (#1930)
add 90b4b057 chore(deps-dev): bump jasmine from 6.1.0 to 6.2.0 (#1932)
add c636f8bb chore(deps): bump semver from 7.7.4 to 7.8.0 (#1934)
add b91144c0 fix: webview loses scrollability and creates empty bottom space (#1924)
add 4ce731da chore(deps): bump erisu/apache-rat-action from 2.0.0 to 3.0.0 (#1937)
add 56e263fe chore: remove redundant Hello World template files (#1926)
add a1f75a3e chore(deps): bump github/codeql-action from 4.35.5 to 4.36.0 (#1944)
new 8d20f842 feat: support adding project build script dependencies
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (82a938e6)
\
N -- N -- N refs/heads/feat/improved-gradle-build (8d20f842)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.asf.yaml | 19 +++-
.ratignore => .github/dependabot.yml | 23 +++--
.github/workflows/ci.yml | 16 +--
.github/workflows/draft-release.yml | 19 ++--
.github/workflows/release-audit.yml | 15 +--
.../src/org/apache/cordova/CordovaActivity.java | 15 ++-
package-lock.json | 20 ++--
.../libFile => templates/project/assets/www/README | 6 +-
templates/project/assets/www/css/index.css | 115 ---------------------
templates/project/assets/www/img/cordova.png | Bin 19932 -> 0 bytes
templates/project/assets/www/img/logo.png | Bin 21814 -> 0 bytes
templates/project/assets/www/index.html | 49 ---------
templates/project/assets/www/js/index.js | 51 ---------
13 files changed, 87 insertions(+), 261 deletions(-)
copy .ratignore => .github/dependabot.yml (70%)
copy spec/fixtures/org.test.plugins.dummyplugin/plugin-lib/libFile => templates/project/assets/www/README (90%)
delete mode 100644 templates/project/assets/www/css/index.css
delete mode 100644 templates/project/assets/www/img/cordova.png
delete mode 100644 templates/project/assets/www/img/logo.png
delete mode 100644 templates/project/assets/www/index.html
delete mode 100644 templates/project/assets/www/js/index.js
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org
(cordova-android) 01/01: feat: support adding project build script dependencies
Posted by er...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
erisu pushed a commit to branch feat/improved-gradle-build
in repository https://gitbox.apache.org/repos/asf/cordova-android.git
commit 8d20f842a32a0ebc29750896fa1ec5819cb3dee6
Author: Erisu <er...@apache.org>
AuthorDate: Tue May 12 13:02:42 2026 +0900
feat: support adding project build script dependencies
---
lib/AndroidProject.js | 14 ++++++++++++++
lib/builders/ProjectBuilder.js | 15 +++++++++++++++
lib/pluginHandlers.js | 12 ++++++++++--
spec/unit/pluginHandlers/handlers.spec.js | 14 ++++++++++++++
templates/project/app/build.gradle | 3 +++
5 files changed, 56 insertions(+), 2 deletions(-)
diff --git a/lib/AndroidProject.js b/lib/AndroidProject.js
index bc5f36c5..6665b3a2 100644
--- a/lib/AndroidProject.js
+++ b/lib/AndroidProject.js
@@ -124,6 +124,20 @@ class AndroidProject {
this._dirty = true;
}
+ addAppBuildScriptDependency (parentDir, value) {
+ const parentProjectFile = path.resolve(parentDir, 'project.properties');
+ const parentProperties = this._getPropertiesFile(parentProjectFile);
+ addToPropertyList(parentProperties, 'cordova.appbuildscript.dependency', value);
+ this._dirty = true;
+ }
+
+ removeAppBuildScriptDependency (parentDir, value) {
+ const parentProjectFile = path.resolve(parentDir, 'project.properties');
+ const parentProperties = this._getPropertiesFile(parentProjectFile);
+ removeFromPropertyList(parentProperties, 'cordova.appbuildscript.dependency', value);
+ this._dirty = true;
+ }
+
addSystemLibrary (parentDir, value) {
const parentProjectFile = path.resolve(parentDir, 'project.properties');
const parentProperties = this._getPropertiesFile(parentProjectFile);
diff --git a/lib/builders/ProjectBuilder.js b/lib/builders/ProjectBuilder.js
index 94658ee6..23345d82 100644
--- a/lib/builders/ProjectBuilder.js
+++ b/lib/builders/ProjectBuilder.js
@@ -153,6 +153,7 @@ class ProjectBuilder {
return {
libs: findAllUniq(data, /^\s*android\.library\.reference\.\d+=(.*)(?:\s|$)/mg),
gradleIncludes: findAllUniq(data, /^\s*cordova\.gradle\.include\.\d+=(.*)(?:\s|$)/mg),
+ appBuildScriptDependencies: findAllUniq(data, /^\s*cordova\.appbuildscript\.dependency\.\d+=((?!.*\().*)(?:\s|$)/mg),
systemLibs: findAllUniq(data, /^\s*cordova\.system\.library\.\d+=((?!.*\().*)(?:\s|$)/mg),
bomPlatforms: findAllUniq(data, /^\s*cordova\.system\.library\.\d+=platform\((?:'|")(.*)(?:'|")\)/mg)
};
@@ -280,6 +281,20 @@ class ProjectBuilder {
includeList += 'apply from: "../' + includePath + '"\n';
});
buildGradle = buildGradle.replace(/(PLUGIN GRADLE EXTENSIONS START)[\s\S]*(\/\/ PLUGIN GRADLE EXTENSIONS END)/, '$1\n' + includeList + '$2');
+
+ // Injecting buildscript dependencies
+ if (propertiesObj.appBuildScriptDependencies.length > 0) {
+ const buildScriptClasspaths = propertiesObj.appBuildScriptDependencies.map(d => `classpath "${d}"`);
+ buildGradle = buildGradle.replace(
+ /^([ \t]*)(\/\/ APP-BUILDSCRIPT-DEPENDENCIES START)[\s\S]*(\/\/ APP-BUILDSCRIPT-DEPENDENCIES END)/m,
+ (match, indentLevel, startLine, endLine) => [
+ startLine,
+ ...buildScriptClasspaths,
+ endLine
+ ].map(l => `${indentLevel}${l}`).join('\n')
+ );
+ }
+
// This needs to be stored in the app gradle, not the root grade
fs.writeFileSync(path.join(this.root, 'app', 'build.gradle'), buildGradle);
}
diff --git a/lib/pluginHandlers.js b/lib/pluginHandlers.js
index 14b0744f..eb3035cf 100644
--- a/lib/pluginHandlers.js
+++ b/lib/pluginHandlers.js
@@ -83,12 +83,16 @@ const handlers = {
copyNewFile(plugin.dir, src, project.projectDir, subRelativeDir, !!(options && options.link));
subDir = path.resolve(project.projectDir, subRelativeDir);
} else {
- obj.type = 'sys';
+ if (obj.type !== 'appBuildScriptDependency') {
+ obj.type = 'sys';
+ }
subDir = src;
}
if (obj.type === 'gradleReference') {
project.addGradleReference(parentDir, subDir);
+ } else if (obj.type === 'appBuildScriptDependency') {
+ project.addAppBuildScriptDependency(parentDir, subDir);
} else if (obj.type === 'sys') {
project.addSystemLibrary(parentDir, subDir);
} else {
@@ -113,12 +117,16 @@ const handlers = {
fs.rmdirSync(parDir);
}
} else {
- obj.type = 'sys';
+ if (obj.type !== 'appBuildScriptDependency') {
+ obj.type = 'sys';
+ }
subDir = src;
}
if (obj.type === 'gradleReference') {
project.removeGradleReference(parentDir, subDir);
+ } else if (obj.type === 'appBuildScriptDependency') {
+ project.removeAppBuildScriptDependency(parentDir, subDir);
} else if (obj.type === 'sys') {
project.removeSystemLibrary(parentDir, subDir);
} else {
diff --git a/spec/unit/pluginHandlers/handlers.spec.js b/spec/unit/pluginHandlers/handlers.spec.js
index b2145af8..2447fd57 100644
--- a/spec/unit/pluginHandlers/handlers.spec.js
+++ b/spec/unit/pluginHandlers/handlers.spec.js
@@ -197,6 +197,7 @@ describe('android project handler', function () {
spyOn(dummyProject, 'addSystemLibrary');
spyOn(dummyProject, 'addSubProject');
spyOn(dummyProject, 'addGradleReference');
+ spyOn(dummyProject, 'addAppBuildScriptDependency');
common.__set__('copyNewFile', copyNewFileSpy);
});
@@ -241,6 +242,12 @@ describe('android project handler', function () {
expect(copyNewFileSpy).toHaveBeenCalledWith(dummyPluginInfo.dir, framework.src, dummyProject.projectDir, someString, false);
expect(dummyProject.addGradleReference).toHaveBeenCalledWith(dummyProject.projectDir, someString);
});
+
+ it('Test#013 : should install app buildscript dependency using project.addAppBuildScriptDependency', () => {
+ const framework = { src: 'plugin-dependency', type: 'appBuildScriptDependency' };
+ android.framework.install(framework, dummyPluginInfo, dummyProject);
+ expect(dummyProject.addAppBuildScriptDependency).toHaveBeenCalledWith(dummyProject.projectDir, someString);
+ });
});
describe('of <js-module> elements', function () {
@@ -402,6 +409,7 @@ describe('android project handler', function () {
spyOn(dummyProject, 'removeSystemLibrary');
spyOn(dummyProject, 'removeSubProject');
spyOn(dummyProject, 'removeGradleReference');
+ spyOn(dummyProject, 'removeAppBuildScriptDependency');
});
it('Test#020 : should throw if framework doesn\'t have "src" attribute', function () {
@@ -433,6 +441,12 @@ describe('android project handler', function () {
expect(rmSyncSpy).toHaveBeenCalledWith(someString, { recursive: true, force: true });
expect(dummyProject.removeGradleReference).toHaveBeenCalledWith(dummyProject.projectDir, someString);
});
+
+ it('Test#025 : should uninstall app buildscript dependency using project.removeAppBuildScriptDependency', () => {
+ const framework = { src: 'plugin-dependency', type: 'appBuildScriptDependency' };
+ android.framework.uninstall(framework, dummyPluginInfo, dummyProject);
+ expect(dummyProject.removeAppBuildScriptDependency).toHaveBeenCalledWith(dummyProject.projectDir, someString);
+ });
});
describe('of <js-module> elements', function () {
diff --git a/templates/project/app/build.gradle b/templates/project/app/build.gradle
index 8bfae15e..393b9804 100644
--- a/templates/project/app/build.gradle
+++ b/templates/project/app/build.gradle
@@ -59,6 +59,9 @@ buildscript {
println "Adding classpath: ${gradlePluginGoogleServicesClassPath}"
classpath gradlePluginGoogleServicesClassPath
}
+
+ // APP-BUILDSCRIPT-DEPENDENCIES START
+ // APP-BUILDSCRIPT-DEPENDENCIES END
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org