Skip to content

Commit a5f7aae

Browse files
committed
Deduplicate Codename One stub activity declaration
1 parent 8f71ce1 commit a5f7aae

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

scripts/build-android-app.sh

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,14 +1097,25 @@ if [ -f "$APP_BUILD_GRADLE" ]; then
10971097
fi
10981098

10991099
FQCN="${PACKAGE_NAME}.${MAIN_NAME}Stub"
1100+
STUB_BASENAME="${MAIN_NAME}Stub"
1101+
remove_stub_declaration() {
1102+
local manifest_path="$1"
1103+
[ -f "$manifest_path" ] || return 0
1104+
local tmp
1105+
tmp=$(mktemp)
1106+
perl -0777 -pe "s{<activity\\b[^>]*android:name=\\\"[^\\\"]*${STUB_BASENAME}\\\"[^>]*/>\\s*}{}g; s{<activity\\b[^>]*android:name=\\\"[^\\\"]*${STUB_BASENAME}\\\"[^>]*>.*?<\/activity>\\s*}{}gs" "$manifest_path" >"$tmp"
1107+
if ! cmp -s "$manifest_path" "$tmp"; then
1108+
mv "$tmp" "$manifest_path"
1109+
ba_log "Removed existing ${STUB_BASENAME} declarations from $manifest_path"
1110+
else
1111+
rm -f "$tmp"
1112+
fi
1113+
}
1114+
11001115
SRC_SETS=(main debug release)
11011116
for SS in "${SRC_SETS[@]}"; do
11021117
MANIFEST_PATH="$APP_MODULE_DIR/src/$SS/AndroidManifest.xml"
1103-
[ -f "$MANIFEST_PATH" ] || continue
1104-
if grep -q "android:name=\"$FQCN\"" "$MANIFEST_PATH"; then
1105-
sed -i "/<activity[^>]*android:name=\"$FQCN\"/d" "$MANIFEST_PATH"
1106-
ba_log "Removed existing $FQCN declaration from $MANIFEST_PATH"
1107-
fi
1118+
remove_stub_declaration "$MANIFEST_PATH"
11081119
done
11091120

11101121
MAIN_MANIFEST="$APP_MODULE_DIR/src/main/AndroidManifest.xml"
@@ -1126,11 +1137,19 @@ fi
11261137

11271138
grep -q '<application' "$MAIN_MANIFEST" || sed -i 's#</manifest># <application/>\n</manifest>#' "$MAIN_MANIFEST"
11281139

1129-
if ! grep -q "android:name=\"$FQCN\"" "$MAIN_MANIFEST"; then
1130-
sed -i "/<\/application>/i \
1131-
<activity android:name=\"$FQCN\" android:exported=\"false\" />" "$MAIN_MANIFEST"
1132-
ba_log "Declared $FQCN in $MAIN_MANIFEST"
1133-
fi
1140+
# Ensure no stale stub declarations remain before inserting the canonical entry.
1141+
remove_stub_declaration "$MAIN_MANIFEST"
1142+
1143+
awk -v fqcn="$FQCN" '
1144+
BEGIN{inserted=0}
1145+
/<\/application>/ && !inserted {
1146+
print " <activity android:name=\"" fqcn "\" android:exported=\"false\" />"
1147+
inserted=1
1148+
}
1149+
{print}
1150+
' "$MAIN_MANIFEST" >"$MAIN_MANIFEST.tmp"
1151+
mv "$MAIN_MANIFEST.tmp" "$MAIN_MANIFEST"
1152+
ba_log "Canonicalized stub activity declaration in $MAIN_MANIFEST"
11341153

11351154
ba_log "Validating manifest merge after stub declaration"
11361155
set +e

0 commit comments

Comments
 (0)