Expo (React Native)
Configurações e plugin para uso em apps Expo
Conforme detalhado na página de Configuração, é necessário aplicar filtros de ABI, uma vez que a SDK compila exclusivamente para 32 bits (armeabi-v7a). Adicionalmente, é preciso habilitar o Legacy Packaging utilizando a configuração useLegacyPackaging.
No Expo, essas definições são aplicadas via Continuous Native Generation (CNG), que ajusta as configurações nativas após a geração das pastas correspondentes.
Para implementar essas mudanças:
- Legacy Packaging: Utilize o plugin expo-build-properties configurando
useLegacyPackaging: true. - Filtros de ABI: Aplique um config plugin customizado. O código necessário (em TypeScript) é apresentado abaixo:
import {
type ConfigPlugin,
withAppBuildGradle,
withGradleProperties,
} from '@expo/config-plugins';
export const withArchSplits: ConfigPlugin = (config) => {
const abiSplits = ['armeabi-v7a'];
const buildGradleConfig = withAppBuildGradle(config, (newConfig) => {
if (newConfig.modResults.contents.includes('splits')) {
return newConfig;
}
const abiSplitsString = abiSplits.map((abi) => `"${abi}"`).join(',');
const regex =
/(androidResources\s*{\s*ignoreAssetsPattern\s*'!\.svn:!\.git:!\.ds_store:!\*\.scc:!CVS:!thumbs\.db:!picasa\.ini:!\*~'\s*})/;
const replacement = `
$1
splits {
abi {
enable true
reset()
include ${abiSplitsString}
universalApk false
}
}
`;
newConfig.modResults.contents = newConfig.modResults.contents.replace(
regex,
replacement,
);
return newConfig;
});
const gradlePropertiesConfig = withGradleProperties(config, (newConfig) => {
const abiSplitsString = abiSplits.join(',');
const keyIdx = newConfig.modResults.findIndex(
(item) =>
item.type === 'property' && item.key === 'reactNativeArchitectures',
);
if (keyIdx >= 0) {
newConfig.modResults.splice(keyIdx, 1, {
type: 'property',
key: 'reactNativeArchitectures',
value: abiSplitsString,
});
} else {
newConfig.modResults.push({
type: 'property',
key: 'reactNativeArchitectures',
value: abiSplitsString,
});
}
return newConfig;
});
Object.assign(config, gradlePropertiesConfig, buildGradleConfig);
return config;
};
Updated about 1 month ago
Did this page help you?