Android NDK中SKIA无法画出文字

发布于 2021-11-20 23:21:55 字数 2073 浏览 863 评论 4

我在Windows下,搭建了cygwin
使用的NDK是android-ndk-r6,
使用的Android SDK版本是2.3.1
Android源码使用的是git下载的:git clone http://android.git.kernel.org/...其中包括了external/skia
然后在模拟器中把libskia.so, libskiagl.so,libjnigraphics.so和libandroid_runtime.so提取了出来,
放在了NDK下的platformsandroid-9arch-armusrlib中
我的mk文件是这样的:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

MY_ANDROID_SOURCE=/cygdrive/d/Android_Source

LOCAL_MODULE := libSkiaDemo
LOCAL_CPP_EXTENSION := .cpp
LOCAL_CXXFLAGS :=

LOCAL_C_INCLUDES := $(MY_ANDROID_SOURCE)/frameworks/base/core/jni/android/graphics 
$(MY_ANDROID_SOURCE)/external/skia/include/core 
$(MY_ANDROID_SOURCE)/external/skia/include/images 
$(MY_ANDROID_SOURCE)/external/skia/include/config 
$(MY_ANDROID_SOURCE)/frameworks/base/include 
$(MY_ANDROID_SOURCE)/system/core/include

LOCAL_SRC_FILES := SkiaDemoJni.cpp

LOCAL_LDLIBS := -llog -lsgl -lskia -lskiagl -ljnigraphics -landroid_runtime 
-L$(MY_ANDROID_SOURCE)/out/target/product/generic/system/lib/

include $(BUILD_SHARED_LIBRARY) 
NDK中的画字符的代码是这样的:
void Java_com_whtr_example_skiademo_SkiaView_renderText(JNIEnv *env, jobject thizz, jobject canvas)
{
SkCanvas* canv = GraphicsJNI::getNativeCanvas(env, canvas);
if (!canv)
{
__android_log_print(ANDROID_LOG_DEBUG, "bug", "canvas is null ");
//LOGE("!canv");
return;
}
__android_log_print(ANDROID_LOG_DEBUG, "bug", "canvas is NOT null ");

SkPaint paint;
char text[256] = {0};
paint.setColor(SK_ColorBLACK);
strcpy(text, "Hello");
canv->drawText(text, strlen(text), 20, 20, paint);

strcpy(text, "what when");
paint.setAntiAlias(true);
canv->drawText(text, strlen(text), 20, 60, paint);

strcpy(text, "oh, god");
paint.setSubpixelText(true);
canv->drawText(text, strlen(text), 20, 100, paint);

}

然后在cygwin中用$NDK/ndk-build编译并且运行,结果是画不出来。然后我又试了画线和画矩形,是可以画出来的。

大家知道是什么原因吗?

我在下载源码的时候并没有选择那个版本,只是写了路径,如:
git clone http://android.git.kernel.org/framework/base,跟版本有关系吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

躲猫猫 2021-11-22 18:58:34

在windows 下它使用gdi 绘制文本的。

while text is drawn directly by Windows. 

详细请参考:http://blog.chromium.org/2008/10/graphics-in-google-chrome.html

傾城如夢未必闌珊 2021-11-22 18:03:17

Android has the advantage of controlling the entire operating system graphics layer. Skia's font layer implements all text rendering for the Android system, so all text looks consistent. However, we wanted to match the host OS's look and feel. This means using native text rendering routines so that, for example, we can get 
ClearType on Windows.

柒夜笙歌凉 2021-11-22 14:32:59

libskia.so与android版本有关

命硬 2021-11-22 09:55:41

skia版本不完整

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文