今天在虚拟机ubuntu18.04上编译AOSP,因为加了个ALOGE输出一些日志,涉及到JNI的变量,明明设置的都是long类型,但是一直报错。
问题:
format specifies type ‘long long’ but the argument has type ‘jlong’ (aka ‘long’)
static void android_view_JniTest_nChangeFactorDown(JNIEnv *env, jobject clazz, jlong down) {
nFactorDown = down;
ALOGE("MyTest: JNI: Write FactorDown: %ld", down);
}
解决:
起初想着报错提示类型不对,改成%lld
总行了吧,没想到它反过来报错:
format specifies type ‘long’ but the argument has type ‘jlong’ (aka ‘long long’)
最后干脆直接来个强制转换解决问题,特发此贴留给遇到同样问题的朋友。
static void android_view_JniTest_nChangeFactorDown(JNIEnv *env, jobject clazz, jlong down) {
nFactorDown = down;
ALOGE("MyTest: JNI: Write FactorDown: %ld", (long)down);
}