看到一位这样用!应该是可行的,但自己没试!!!我的Cygwin下的NDK环境配好了,并可以成功编译ndk目录下的sample目录下的例子并生成.so文件.我的warpo_test_SKiaView.cpp内容如下:#include "warpo_test_SKiaView.h" #include "SkCanvas.h" #include "SkPaint.h" #include "SkGraphics.h" #include "SkColor.h" #include "SkTypes.h" #include "GraphicsJNI.h"JNIEXPORT jint JNICALL Java_warpo_test_SKiaView_renderHello (JNIEnv *env, jobject thizz, jobject canvas) { SkCanvas* canv = GraphicsJNI::getNativeCanvas(env, canvas); if (!canv) { return 0; } SkPaint paint; paint.setColor(SK_ColorRED); canv->drawText("hello skia", 10, 20, 20, paint);return 1; }我的SKIA源代码在\Cygwin\home\Android\external\skia\include\core下面.比如里面有SkCanvas.h,SkBitmap.h文件等. 我的Android.mk文件内容如下: # Android.mk by warpo, 20110526LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)MY_ANDROID_SOURCE:=/home/AndroidLOCAL_MODULE:=skiajniLOCAL_CPP_EXTENSION:=.cppLOCAL_SRC_FILES:=warpo_test_SKiaView.cppLOCAL_CPPFLAGS:= \ -I $(MY_ANDROID_SOURCE)/frameworks/base/core/jni/android/graphics \ -I $(MY_ANDROID_SOURCE)/external/skia/include/core \ -I $(MY_ANDROID_SOURCE)/external/skia/include/images \ -I $(MY_ANDROID_SOURCE)/frameworks/base/include \ -I $(MY_ANDROID_SOURCE)/system/core/includeLOCAL_LDLIBS := -llog -lsgl -landroid_runtime -L/home/Android/out/skia/libinclude $(BUILD_SHARED_LIBRARY)我的make版本如下: $ make -v GNU Make 3.81但是$NDK/ndk-build后的结果是: Administrator@CHINA-WARPO /cygdrive/e/android-ndk-r5b/samples/SKiaTest $ $NDK/ndk-build Compile++ thumb : skiajni <= warpo_test_SKiaView.cpp E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:2:22: error: SkCanvas.h: No such file or directory E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:3:21: error: SkPaint.h: No such file or directory E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:4:24: error: SkGraphics.h: No such file or directory E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:5:21: error: SkColor.h: No such file or directory E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:6:21: error: SkTypes.h: No such file or directory E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:7:25: error: GraphicsJNI.h: No such file or directory E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp: In function 'jint Java_warpo_test_SKiaView_renderHello E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:12: error: 'SkCanvas' was not declared in this scope E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:12: error: 'canv' was not declared in this scope E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:12: error: 'GraphicsJNI' has not been declared E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:17: error: 'SkPaint' was not declared in this scope E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:17: error: expected ';' before 'paint' E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:18: error: 'paint' was not declared in this scope E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:18: error: 'SK_ColorRED' was not declared in this scope make: *** [/cygdrive/e/android-ndk-r5b/samples/SKiaTest/obj/local/armeabi/objs/skiajni/warpo_test_SKiaView.o] Error 1 请教为什么找不到头文件呢.是Android.mk文件里的错吗.如果我把这些头文件放到Android.mk文件所在目录中就能找到了. 请问是什么原因呢?
传了这个下去的话,肯定要得把画图的接口弄下去,因为文字写到图上才可以成为OPENGL的纹理。还有字库的类型接口,这样就太多太复杂了,有没更简单的方法?
JAVA层其实也获取不到的,必须借助那些封好的字库类JAVA层才可以访问到字库点阵的。
就是ANDROID下的跟字库有关的类库,比如TYPEFACE什么的,CANVAS类之类。
#include "SkCanvas.h"
#include "SkPaint.h"
#include "SkGraphics.h"
#include "SkColor.h"
#include "SkTypes.h"
#include "GraphicsJNI.h"JNIEXPORT jint JNICALL Java_warpo_test_SKiaView_renderHello
(JNIEnv *env, jobject thizz, jobject canvas)
{
SkCanvas* canv = GraphicsJNI::getNativeCanvas(env, canvas);
if (!canv)
{
return 0;
}
SkPaint paint;
paint.setColor(SK_ColorRED);
canv->drawText("hello skia", 10, 20, 20, paint);return 1;
}我的SKIA源代码在\Cygwin\home\Android\external\skia\include\core下面.比如里面有SkCanvas.h,SkBitmap.h文件等.
我的Android.mk文件内容如下:
# Android.mk by warpo, 20110526LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)MY_ANDROID_SOURCE:=/home/AndroidLOCAL_MODULE:=skiajniLOCAL_CPP_EXTENSION:=.cppLOCAL_SRC_FILES:=warpo_test_SKiaView.cppLOCAL_CPPFLAGS:= \
-I $(MY_ANDROID_SOURCE)/frameworks/base/core/jni/android/graphics \
-I $(MY_ANDROID_SOURCE)/external/skia/include/core \
-I $(MY_ANDROID_SOURCE)/external/skia/include/images \
-I $(MY_ANDROID_SOURCE)/frameworks/base/include \
-I $(MY_ANDROID_SOURCE)/system/core/includeLOCAL_LDLIBS := -llog -lsgl -landroid_runtime -L/home/Android/out/skia/libinclude $(BUILD_SHARED_LIBRARY)我的make版本如下:
$ make -v
GNU Make 3.81但是$NDK/ndk-build后的结果是:
Administrator@CHINA-WARPO /cygdrive/e/android-ndk-r5b/samples/SKiaTest
$ $NDK/ndk-build
Compile++ thumb : skiajni <= warpo_test_SKiaView.cpp
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:2:22: error: SkCanvas.h: No such file or directory
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:3:21: error: SkPaint.h: No such file or directory
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:4:24: error: SkGraphics.h: No such file or directory
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:5:21: error: SkColor.h: No such file or directory
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:6:21: error: SkTypes.h: No such file or directory
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:7:25: error: GraphicsJNI.h: No such file or directory
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp: In function 'jint Java_warpo_test_SKiaView_renderHello
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:12: error: 'SkCanvas' was not declared in this scope
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:12: error: 'canv' was not declared in this scope
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:12: error: 'GraphicsJNI' has not been declared
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:17: error: 'SkPaint' was not declared in this scope
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:17: error: expected ';' before 'paint'
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:18: error: 'paint' was not declared in this scope
E:/android-ndk-r5b/samples/SKiaTest/jni/warpo_test_SKiaView.cpp:18: error: 'SK_ColorRED' was not declared in this scope
make: *** [/cygdrive/e/android-ndk-r5b/samples/SKiaTest/obj/local/armeabi/objs/skiajni/warpo_test_SKiaView.o] Error 1
请教为什么找不到头文件呢.是Android.mk文件里的错吗.如果我把这些头文件放到Android.mk文件所在目录中就能找到了.
请问是什么原因呢?
http://blog.csdn.net/beiai1014/archive/2007/04/12/1561857.aspx