在 Brother SDK 上的应用程序中检测到 JNI 错误
Posted
技术标签:
【中文标题】在 Brother SDK 上的应用程序中检测到 JNI 错误【英文标题】:JNI DETECTED ERROR IN APPLICATION on Brother SDK 【发布时间】:2018-01-19 06:29:00 【问题描述】:我正在尝试在我的应用程序中打印 Brother SDK 中的图像。
这是我的代码:
`myPrinterInfo = myPrinter.getPrinterInfo();
myPrinterInfo.printerModel = PrinterInfo.Model.QL_810W;
myPrinterInfo.port = PrinterInfo.Port.NET;
myPrinterInfo.printMode = PrinterInfo.PrintMode.FIT_TO_PAGE;
myPrinterInfo.paperSize = PrinterInfo.PaperSize.CUSTOM;
myPrinterInfo.labelNameIndex = 5;
myPrinterInfo.isAutoCut = false;
myPrinterInfo.isCutAtEnd = false;
myPrinterInfo.orientation = PrinterInfo.Orientation.PORTRAIT;
myPrinterInfo.valign = PrinterInfo.VAlign.TOP;
myPrinterInfo.align = PrinterInfo.Align.LEFT;
myPrinterInfo.halftone = PrinterInfo.Halftone.THRESHOLD;
myPrinterInfo.ipAddress = "192.168.1.146";
myPrinterInfo.thresholdingValue = 127;
myPrinterInfo.pjCarbon = false;
myPrinterInfo.pjDensity = 5;
myPrinterInfo.pjFeedMode = PrinterInfo.PjFeedMode.PJ_FEED_MODE_FIXEDPAGE;
myPrinterInfo.pjPaperKind = PJ_CUT_PAPER;
myPrinterInfo.rollPrinterCase = PrinterInfo.PjRollCase.PJ_ROLLCASE_OFF;
myPrinterInfo.paperPosition = PrinterInfo.Align.CENTER;
myPrinterInfo.numberOfCopies = 1;
我使用的是 62mmx100mm 纸卷,我收到以下错误消息:
在应用程序中检测到 JNI 错误:GetStringUTFChars 收到 NULL jstring 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art:调用 GetStringUTFChars 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: from boolean com.brother.ptouch.sdk.JNIWrapper.writeByteInFile(int[], int, java.lang.String, boolean ) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art:“AsyncTask #1”prio=5 tid=10 可运行 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: | group="main" sCount=0 dsCount=0 obj=0x12c99460 self=0xe9594500 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: | sysTid=31584 nice=10 cgrp=bg_non_interactive sched=0/0 句柄=0xe0b65930 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: | state=R schedstat=(80462688 29252686 258) utm=5 stm=3 core=2 HZ=100 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: |堆栈=0xe0a63000-0xe0a65000 堆栈大小=1038KB 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: |持有互斥锁=“mutator lock”(共享持有) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #00 pc 0035adcf /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiPKcPNS_9ArtMethodEPv+126) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #01 pc 0033bdeb /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+138) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #02 pc 0024ef71 /system/lib/libart.so (ZN3art9JavaVMExt8JniAbortEPKcS2+900) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #03 pc 0024f607 /system/lib/libart.so (_ZN3art9JavaVMExt9JniAbortVEPKcS2_St9__va_list+54) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #04 pc 000fbe5d /system/lib/libart.so (_ZN3art11ScopedCheck6AbortFEPKcz+28) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #05 pc 001003b9 /system/lib/libart.so (_ZN3art11ScopedCheck5CheckERNS_18ScopedObjectAccessEbPKcPNS_12JniValueTypeE.constprop.95+2676) 08-10 17:33:18.883 31333-31584/br.com.squarebits.brothertest E/art: native: #06 pc 00108cd5 /system/lib/libart.so (_ZN3art8CheckJNI17GetStringUTFCharsEP7_JNIEnvP8_jstringPh+376)
如果有人知道如何解决它,请帮助我:(
【问题讨论】:
【参考方案1】:我今天遇到了类似的问题,原来没有授予 android.permission.WRITE_EXTERNAL_STORAGE 权限。如果您在 Android 6 或更高版本上运行,请检查您的 run time permissions 是否写入外部存储。在清单中声明权限是不够的。兄弟文档在其manual 的末尾暗示了这一点。
8.3。 Android 6 兼容性 从 Android 6.0 开始,用户可以在安装后更改应用程序的权限。允许 必须授予访问 Android 外部存储的权限才能使用它 应用。
【讨论】:
很棒的发现,以如此糟糕的方式处理这个问题让兄弟感到羞耻 - 没有任何有用的信息或任何东西。以上是关于在 Brother SDK 上的应用程序中检测到 JNI 错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用Android Brother Sdk打印无线时,ERROR_WRONG_LABEL用于标签打印机
iOS:检测我的 SDK 是不是安装在设备上的其他应用程序上
在 iPhone SDK 中检测视网膜屏幕/iPhone 4
在树莓派上使用 python 库 Brother_ql 打印