对于网络使用,我需要压缩交换的数据。为了获得更好的性能,我认为将 Android NDK 与 JNI 结合使用会更好。我已经尝试过,但没有成功,因为我对 C 和 JNI 并不精通。
我创建了一个 Java 类:
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头文件:
/* 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)
{
}
我试图将一些真正的 C 代码放入其中,我不明白我应该在这里做什么以及存在哪些好的压缩算法。
你能帮我找到一个好的工作压缩算法和在这里使用它的方法吗?
谢谢