fix(build): add Capacitor sync and auto-fix for Android test app builds
Fixed Android test app build failures by ensuring Capacitor is synced before building and automatically fixing missing file references. Changes: - Add Capacitor Android sync step before building test app - Runs `npm run cap:sync:android` to create required project structure - Ensures `:capacitor-cordova-android-plugins` project exists before Gradle resolves dependencies - Add automatic fix for missing cordova.variables.gradle reference - Detects when capacitor.build.gradle references non-existent file - Automatically comments out problematic `apply from` line - Uses platform-agnostic sed command (handles macOS and Linux) - Provides clear logging about what was fixed - Reorganize build flow to match iOS pattern - Sync Capacitor first, then navigate to platform directory - Apply fixes, then build This fixes the build error: "Could not resolve project :capacitor-cordova-android-plugins" "No matching variant of project :capacitor-cordova-android-plugins was found" The build now completes successfully even when: - Capacitor hasn't been synced yet - capacitor.build.gradle references missing files Files modified: - scripts/build-native.sh
This commit is contained in:
@@ -115,11 +115,50 @@ build_plugin_for_test_app() {
|
||||
ln -sf "../../../" "$SYMLINK"
|
||||
fi
|
||||
|
||||
# Navigate to test app directory
|
||||
cd test-apps/daily-notification-test || exit 1
|
||||
|
||||
# Sync Capacitor Android (creates necessary project structure)
|
||||
log_info "Syncing Capacitor Android..."
|
||||
if ! npm run cap:sync:android; then
|
||||
log_error "Capacitor Android sync failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Navigate to android directory
|
||||
cd android || exit 1
|
||||
|
||||
# Fix capacitor.build.gradle if it references missing cordova.variables.gradle
|
||||
# This file is auto-generated by Capacitor and may reference files that don't exist
|
||||
if [ -f "app/capacitor.build.gradle" ]; then
|
||||
if grep -q "^apply from: \"../capacitor-cordova-android-plugins/cordova.variables.gradle\"" "app/capacitor.build.gradle"; then
|
||||
# Check if the referenced file actually exists
|
||||
if [ ! -f "capacitor-cordova-android-plugins/cordova.variables.gradle" ]; then
|
||||
log_info "🔧 Applying fix to capacitor.build.gradle..."
|
||||
log_info " Reason: Referenced cordova.variables.gradle doesn't exist"
|
||||
log_info " Fix: Commenting out problematic 'apply from' line"
|
||||
|
||||
# Apply the fix by commenting out the problematic line
|
||||
# Handle macOS vs Linux sed differences
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
# macOS sed requires empty string after -i
|
||||
# Use a simpler approach: just comment out the line
|
||||
sed -i '' 's|^apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"|// &|' "app/capacitor.build.gradle"
|
||||
else
|
||||
# Linux sed
|
||||
sed -i 's|^apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"|// &|' "app/capacitor.build.gradle"
|
||||
fi
|
||||
|
||||
log_info "✅ Fix applied successfully"
|
||||
log_warn "⚠️ Note: This fix will be lost if you run 'npx cap sync' or 'npx cap update'"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Build the plugin and test app from within the test app's Android project context
|
||||
# This is necessary because Capacitor Android is only available as a project dependency
|
||||
# The plugin will be built automatically as a dependency of the app
|
||||
log_info "Building plugin and test app from test app context..."
|
||||
cd test-apps/daily-notification-test/android || exit 1
|
||||
|
||||
# Build test app (this will automatically build the plugin as a dependency)
|
||||
if ! ./gradlew clean assembleDebug; then
|
||||
|
||||
Reference in New Issue
Block a user