네트워크 사용의 경우 교환 된 데이터를 압축해야합니다. 성능 향상을 위해 JNI와 함께 Android NDK를 사용하는 것이 더 나은 방법이라고 생각합니다. 저는 C/JNI에 능숙하지 않아 성공하지 못했습니다.JNI에서 문자열 압축 및 압축 해제
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_my_app_utils_CompressUtils */
#ifndef _Included_com_my_app_utils_CompressUtils
#define _Included_com_my_app_utils_CompressUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_my_app_utils_CompressUtils
* Method: compressData
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_my_app_utils_CompressUtils_compressData
(JNIEnv *, jclass, jstring);
/*
* Class: com_my_app_utils_DecompressUtils
* Method: decompressData
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_my_app_utils_CompressUtils_decompressData
(JNIEnv *, jclass, jstring);
#ifdef __cplusplus
}
#endif
#endif
그리고 마지막으로 C 본체 : 내가 해봤
JNIEXPORT jstring JNICALL Java_com_my_app_utils_CompressUtils_compressData
(JNIEnv * env, jclass cl, jstring input)
{
}
JNIEXPORT jstring JNICALL Java_com_my_app_utils_CompressUtils_decompressData
(JNIEnv *env, jclass cl, jstring input)
{
}
여기
public class CompressUtils
{
// Declare native method
private static native String compressData(String data);
private static native String decompressData(String data);
public static String compress(String data)
{
return compressData(data);
}
static
{
System.loadLibrary("compressData");
}
}
는 C 헤더 파일입니다
나는 자바 클래스를 만들었습니다 실제 C 코드를 넣으려면 여기에서해야 할 일과 좋은 압축 algorythm이 존재하는지 이해하지 못합니다.
좋은 압축 압축 algorythm을 찾고 여기에서 사용하는 방법을 찾을 수 있습니까?
감사합니다.
JNI가 전혀 필요 없다고 잘못 생각한 것 같습니다. 압축을 원하면 JDK에서 제공하는 압축 출력 스트림 중 하나를 사용하십시오. java.util.zip을 참조하십시오. – EJP