apk包安装到安卓板子上运行
1.用手机数据线连接电脑和手机 2.手机选择使用“加载Sd卡” 3.将电脑中APK拖入Sd盘里 4.手机上取消加载Sd卡 5.取下手机数据线,在手机上“浏览Sd文件 ”或“文件管理器” 选Sd卡,找到你从电脑里拖入的APK,点击安装。
char* jstringTostr(JNIEnv* env, jstring jstr)
{
char* pStr = NULL;
jclass jstrObj = (*env)->FindClass(env, "java/lang/String");
jstring encode = (*env)->NewStringUTF(env, "utf-8");
jmethodID methodId = (*env)->GetMethodID(env, jstrObj, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray byteArray = (jbyteArray)(*env)->CallObjectMethod(env, jstr, methodId, encode);
jsize strLen = (*env)->GetArrayLength(env, byteArray);
jbyte *jBuf = (*env)->GetByteArrayElements(env, byteArray, JNI_FALSE);
if (jBuf > 0)
{
pStr = (char*)malloc(strLen + 1);
if (!pStr)
{
return NULL;
}
memcpy(pStr, jBuf, strLen);
pStr[strLen] = 0;
}
(*env)->ReleaseByteArrayElements(env, byteArray, jBuf, 0);
return pStr;
}
//C字符串转java字符串
jstring strToJstring(JNIEnv* env, const char* pStr)
{
int strLen = strlen(pStr);
jclass jstrObj = (*env)->FindClass(env, "java/lang/String");
jmethodID methodId = (*env)->GetMethodID(env, jstrObj, "<init>", "([BLjava/lang/String;)V");
jbyteArray byteArray = (*env)->NewByteArray(env, strLen);
jstring encode = (*env)->NewStringUTF(env, "utf-8");
(*env)->SetByteArrayRegion(env, byteArray, 0, strLen, (jbyte*)pStr);
return (jstring)(*env)->NewObject(env, jstrObj, methodId, byteArray, encode);
}
2.如何将java传入的String参数转换为 java传入的String参数,char* test,然后 test = (char*)(*env)->GetStringUTFChars(env, jstring, NULL); 注意:test使用完后,必须手动释放内存 (*env)->ReleaseStringUTFChars(env, jstring, test); 3.将c中获取的一个char*的 这个char*如果是一般的字符串的话的buffer,最好作为bytearray能到’\0’就截断了。 有两种方式传递得到的数据 数据类型对应关系。 (libm ),压缩库(libz),Log库(liblog). 参数转换为c的char*,然后使用? ,在c文件中被jni转换为jstring的数据类型,>GetStringUTFChars(env, jstring, NULL); 必须手动释放内存(通知虚拟机平台相关代码无需再访问>ReleaseStringUTFChars(env, jstring, test); 的buffer传递给java? 如果是一般的字符串的话,作为string传回去就可以了。如果是含有array传出,因为可以制定copy的length,如果copy有两种方式传递得到的数据: ,在c文件中声明通知虚拟机平台相关代码无需再访问): 如果是含有’\0’copy到string,可能到\0就截断了,