반응형
Update: Expo SDK 46 버전부터 공식적으로 expo eject 는 deprecated 되었다.
https://docs.expo.dev/faq/#is-expo-eject-deprecated
expo SDK41 부터 expo prebuild 라는 기능을 제공해준다.
3rd-part-native-module 의 경우, expo 에서 가이드 해주는대로 플러그인 스펙을 지정해놓으면 엑스포에서 클라우드 환경에서 사전에 해당 모듈을 포함시켜서 빌드를 해준다.
기본적으로 플러그인은 app.json 혹은 app.config.js 에 아래와 같은 형태로 적는다.
{
"name": "my app",
"plugins": ["3rd-party-native-module"]
}
별도로 주어야 하는 권한이 있는 경우에는, 아래처럼 명시해줄 수 있다.
{
"name": "my app",
"plugins":[
[
"3rd-party-native-module",
{
"permission": "Allow to access your location"
}
]
]
}
라이브러리에서 간편하게 플러그인을 지원해주고자 하는 경우에는
모듈 루트에 app.plugin.js 파일을 만들어서 커스텀 플러그인을 제공해줄수도 있다.
기본적으로 config 를 받아서 가공한 뒤 리턴하는 형태로 작성하면 된다.
// node_modules/camera-native-module/app.plugin.js
import { withInfoPlist } from "@expo/config-plugins";
const withCameraModule = (config, props) => {
return withInfoPlist(config, (config) => {
const { cameraPermission, microphonePermission } = props || {};
config.modResults.NSCameraUsageDescription =
cameraPermission ||
config.modResults.NSCameraUsageDescription ||
CAMERA_USAGE;
config.modResults.NSMicrophoneUsageDescription =
microphonePermission ||
config.modResults.NSMicrophoneUsageDescription ||
MICROPHONE_USAGE;
return config;
});
};
export default withCameraModule;
{
"name": "my app",
"plugins":[
[
"camera-native-module",
{
"cameraPermission": "Allow $(PRODUCT_NAME) camera",
"microphonePermission": "Allow $(PRODUCT_NAME) microphone",
}
]
]
}
반응형
'React Native' 카테고리의 다른 글
[React Native] Expo Push Notification - API Server (0) | 2024.09.20 |
---|---|
[React Native] Expo Push Notification (3) | 2024.09.20 |
[React Native] react native 작동 원리 (0) | 2024.04.05 |
[React Native] ios, android 폰트 설정 (2) | 2023.12.04 |
[React Native] Navigation 에서 주로 사용하는 개념 (0) | 2023.07.29 |
댓글