2012-10-16 43 views
6

Tôi nhận được lỗi như thế này trên điện thoại của tôi khi tôi chạy chương trình AndEngine tôi nó thành công được điều hành trên điện thoại frnds của tôi, nhưng khi tôi đã cố gắng để chạy tôi đang nhận được lỗi như thiết bị không tương thích Bẩm Sinh phát hiện ...AndEngineRuntimeException: Đã phát hiện thiết bị không tương thích.

logcat của tôi dưới

10-16 14:13:23.061: E/AndroidRuntime(4533): FATAL EXCEPTION: GLThread 10 
    10-16 14:13:23.061: E/AndroidRuntime(4533): java.lang.ExceptionInInitializerError 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.vbo.attribute.VertexBufferObjectAttributeFix.glVertexAttribPointer(VertexBufferObjectAttributeFix.java:39) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.vbo.attribute.VertexBufferObjectAttributes.glVertexAttribPointers(VertexBufferObjectAttributes.java:50) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.shader.ShaderProgram.bind(ShaderProgram.java:126) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.shader.PositionTextureCoordinatesShaderProgram.bind(PositionTextureCoordinatesShaderProgram.java:86) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.vbo.VertexBufferObject.bind(VertexBufferObject.java:162) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.texture.TextureWarmUpVertexBufferObject.warmup(TextureWarmUpVertexBufferObject.java:97) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.texture.TextureManager.updateTextures(TextureManager.java:257) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.engine.Engine.onDrawFrame(Engine.java:613) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.view.EngineRenderer.onDrawFrame(EngineRenderer.java:105) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1332) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): Caused by: org.andengine.util.exception.AndEngineRuntimeException: Inherently incompatible device detected. 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.GLES20Fix.<clinit>(GLES20Fix.java:39) 

Trả lời

9

Như là stated here by 42labs:

may mắn nó là rất dễ dàng để sửa chữa - trong thư mục gốc nguồn của bạn (thư mục nơi AndroidManifest.xml là) làm một thư mục có tên libs bên trong đó sau đó tạo một thư mục có tên là armeabi. Bây giờ nhận được AndEnginesources (từ một chi nhánh Open2 ES 2.0 của chi nhánh Open2 ES 2.0) - from here. Bạn có thể sao chép kho lưu trữ hoặc tải xuống. Không quan trọng.

Điều quan trọng là bạn nên sao chép libandengine.so sẵn có trong libs/armeabi vào thư mục libs/armeabi bạn vừa tạo trong thư mục của bạn. Sẽ khắc phục vấn đề :)

Có lẽ đây không phải là giải pháp chính thức, có lẽ chúng ta chưa thấy một lưu ý ở đâu đó trên các diễn đàn AndEngine, nhưng phương pháp này sửa chữa vấn đề trong 30 giây và không tạo ra bất kỳ khác vấn đề.

Và - Tại sao nó bị lỗi? Nó sửa chữa cái gì?

Thực sự khá buồn cười. Các nhà phát triển của Google, khi chuẩn bị Froyo Java SDK, đã quên triển khai các phiên bản Java của một số chức năng (chuẩn!) OpenGL ES 2.0. Giải pháp cho vấn đề này là sử dụng JNI để tạo một cây cầu gọi đến một hàm gốc bị thiếu trong SDK. AndEngine có cây cầu này trong libandengine.so đã đề cập. Khi động cơ được khởi động, nó sẽ kiểm tra phiên bản của hệ điều hành. Nếu đó là Froyo (hoặc thấp hơn), nó sẽ cố gắng tải thư viện. Nếu thư viện không có mặt, không có cách nào để giải quyết vấn đề này và phải sụp đổ.

Các vấn đề liên quan