fix: gunakan tools:node=remove agar Gradle merger hapus READ_MEDIA_IMAGES/VIDEO dari semua library manifest
Filter sebelumnya hanya menghapus dari app manifest, tapi expo-image-picker menyuntikkan permission lewat library manifest-nya sendiri saat Gradle build.
This commit is contained in:
@@ -8,12 +8,29 @@ const BLOCKED_PERMISSIONS = [
|
||||
const withRemoveMediaPermissions = (config) =>
|
||||
withAndroidManifest(config, (config) => {
|
||||
const manifest = config.modResults.manifest;
|
||||
const permissions = manifest['uses-permission'] ?? [];
|
||||
|
||||
manifest['uses-permission'] = permissions.filter(
|
||||
// Pastikan xmlns:tools ada di manifest root
|
||||
if (!manifest.$['xmlns:tools']) {
|
||||
manifest.$['xmlns:tools'] = 'http://schemas.android.com/tools';
|
||||
}
|
||||
|
||||
// Hapus entry yang ada (apapun atributnya)
|
||||
const existing = manifest['uses-permission'] ?? [];
|
||||
manifest['uses-permission'] = existing.filter(
|
||||
(perm) => !BLOCKED_PERMISSIONS.includes(perm.$?.['android:name'])
|
||||
);
|
||||
|
||||
// Tambahkan entry dengan tools:node="remove" agar Gradle merger
|
||||
// membuang permission ini dari SEMUA sumber (termasuk library manifests)
|
||||
for (const permission of BLOCKED_PERMISSIONS) {
|
||||
manifest['uses-permission'].push({
|
||||
$: {
|
||||
'android:name': permission,
|
||||
'tools:node': 'remove',
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return config;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user