Java를 사용하여 React Native에서 네이티브 모듈 만들기
13524 단어 reactandroidreactnativejava
네이티브 모듈은 언제 생성합니까?
예를 들어 암호화/복호화의 사용 사례를 살펴보십시오.
일반적으로 모든 사람은 JavaScript 암호화 라이브러리를 찾아 React Native 프로젝트에 추가합니다. 여기에서 암호화/복호화는 JS 레이어에서 발생합니다. 짧은 텍스트를 암호화할 때 더 성능이 좋아 보입니다. 큰 텍스트를 암호화하는 동안 암호화 라이브러리는 처리하는 데 더 많은 시간이 소요될 수 있으며, 이는 UI 스레드 및 성능 문제를 차단하는 경향이 있습니다.
커스텀 네이티브 모듈을 생성함으로써 위의 문제를 해결할 수 있습니다. 암호화 로직은 JS 레이어에서 네이티브 레이어로 이동해야 합니다. 그래도 동일한 Java 버전의 암호화 라이브러리를 사용할 수 있습니다.
사용자 정의 네이티브 모듈을 생성하는 단계(위의 암호화 사용 사례용):
Java를 사용하는 Android의 경우:
1.
EncryptionModule.java
폴더 안에 android/app/src/main/java/com/your-app-name
라는 새로운 자바 파일을 생성하고 아래 내용을 추가합니다.package com.your-app-name;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
public class EncryptionModule extends ReactContextBaseJavaModule {
@Override
public String getName() {
return "Encryptor"; // Name of the Native Modules.
}
}
2.
encryption
메서드를 EncryptionModule
에 추가합니다./**
* @param plainText Text to be encrypted(from JS layer)
*/
@ReactMethod
public void encrypt(String plainText, Promise promise) {
try {
// Add your encryption logic here
// (can use any JAVA encryption library or use default)
String encryptedText = plainText + "This is encrypted text";
promise.resolve(encryptedText); // return encryptedText
} catch (Exception e) {
promise.reject("ENCRYPTION_FAILED", "Encryption Failed");
}
}
3.
decryption
메소드를 EncryptionModule
에 추가하십시오./**
* @param encryptedText Text to be decrypted(from JS layer)
*/
@ReactMethod
public void decrypt(String encryptedText, Promise promise) {
try {
// Add your decryption logic here
// (can use any JAVA decryption library or use default)
String decryptedText = encryptedText + "This is decrypted text";
promise.resolve(decryptedText); // return decryptedText
} catch (Exception e) {
promise.reject("DECRYPTION_FAILED", "Decryption Failed");
}
}
4. 위 모듈 등록:
EncryptionPackage.java
폴더 안에 android/app/src/main/java/com/your-app-name
라는 새 Java 파일을 만들고 아래 내용을 추가합니다.package com.your-app-name;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class EncryptionPackage implements ReactPackage {
@Override
public List<ViewManager> createViewManagers(
ReactApplicationContext reactContext
) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext
) {
List<NativeModule> modules = new ArrayList<>();
// Register the encryption module
modules.add(new EncryptionModule());
return modules;
}
}
5. 위의 패키지를
MainApplication.Java
( android/app/src/main/java/com/your-app-name/MainApplication.Java
)에 추가합니다....
import com.your-app-name.EncryptionPackage;
...
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Add the encryption package here
packages.add(new EncryptionPackage());
return packages;
}
6. 기본 모듈에 액세스하기 위한 사용자 정의 JS 래퍼 생성: 프로젝트 루트 디렉토리 아래에
Encryptor.js
라는 새 JS 파일을 생성합니다.import {NativeModules} from 'react-native';
const Encryptor = NativeModules.Encryptor;
export const encrypt = (plainText) => {
// Add your additional custom logic here
return Encryptor.encrypt(plainText);
};
export const decrypt = (encrptedText) => {
// Add your additional custom logic here
return Encryptor.decrypt(encrptedText);
};
// You can directly export this and access it
// like Encryptor.enrypt/Encryptor.decrypt
export default Encryptor;
7. 마지막으로 아래와 같은 JS 파일에서 액세스
Encryptor
합니다.import {encrypt, decrypt} from './Encryptor';
const encryptText = await encrypt('some text');
const decryptText = await decrypt('encrypted text');
결론
시간이 많이 걸리는 작업을 위해 기본 모듈을 생성하거나 기본 특정 API에 액세스해 보겠습니다.
Reference
이 문제에 관하여(Java를 사용하여 React Native에서 네이티브 모듈 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pandiarajan_n/how-to-create-and-add-nativemodules-in-react-native-using-java-2a93텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)