@@ -1097,14 +1097,25 @@ if [ -f "$APP_BUILD_GRADLE" ]; then
10971097fi
10981098
10991099FQCN=" ${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+
11001115SRC_SETS=(main debug release)
11011116for 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 "
11081119done
11091120
11101121MAIN_MANIFEST=" $APP_MODULE_DIR /src/main/AndroidManifest.xml"
@@ -1126,11 +1137,19 @@ fi
11261137
11271138grep -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
11351154ba_log " Validating manifest merge after stub declaration"
11361155set +e
0 commit comments