Android NDK中SKIA无法画出文字
我在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文件是这样的:
git clone http://android.git.kernel.org/framework/base,跟版本有关系吗?
使用的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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在windows 下它使用gdi 绘制文本的。
while text is drawn directly by Windows.
详细请参考:http://blog.chromium.org/2008/10/graphics-in-google-chrome.html
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.
libskia.so与android版本有关
skia版本不完整