Tag: android ndk

如何使用Javah工具创建C头文件

嗨伙计们我正在使用android ndk而且我正在尝试使用javah工具创建ac头文件如何使用以及在哪里使用此工具我无法理解所以请任何人都可以告诉我程序如何做到这一点我是等待回复请………

UnsatisfiedLinkError:无法从加载程序加载X.

我正在尝试使用本机代码创建一个Android项目来调用OpenGl函数。 我正在按照本指南来实现这个项目: http : //www.learnopengles.com/calling-opengl-from-android-using-the-ndk/ 根据本指南,我必须“在Package Explorer中右键单击项目,从下拉菜单中选择Android Tools,然后选择Add Native Support …”。 但是,这个选项在我的eclipse版本中不可见(最新的osx版本来自与sdk捆绑在一起的android站点)。 为了解决这个问题,我使用以下方法手动将项目转换为C / C ++项目:file – > new – > other – > Convert to a C / C ++ Project(添加C / C ++支持)。 然后我将PATH变量添加到项目属性下的环境变量 – > C / C ++ build – > Environment。 我将ndk的路径添加到此变量中。 我做了更多必要的make文件并生成了jni文件。 该项目确实在libs目录中编译并生成.so文件。 但是,当我尝试在设备上运行项目时,我收到以下运行时错误: exceptionjava / lang / UnsatisfiedLinkError; […]

java.lang.UnsatisfiedLinkError:无法加载eposprint:findLibrary返回null

我正在使用Android Studio。 我在我的应用程序中使用e-POS-Print.jar。 每当我运行代码时,我都会收到此错误: java.lang.ExceptionInInitializerError at com.stc.printer.MyActivity.onCreate(MyActivity.java:48) at android.app.Activity.performCreate(Activity.java:5163) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2061) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122) at android.app.ActivityThread.access$600(ActivityThread.java:140) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1228) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4895) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.UnsatisfiedLinkError: Couldn’t load eposprint: findLibrary returned null at java.lang.Runtime.loadLibrary(Runtime.java:365) at java.lang.System.loadLibrary(System.java:535) at com.epson.eposprint.Print.(Print.java:18) at com.stc.printer.MyActivity.onCreate(MyActivity.java:48) 我的代码: […]

Android:从C ++ Native Activity调用Java类

Java代码: package local.ttt; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; public class Text2Bitmap { static Bitmap getBitmap(String text,int fontsize) { Paint paint=new Paint(); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.WHITE); paint.setTextSize(fontsize); paint.setAntiAlias(true); paint.setTypeface(Typeface.DEFAULT); int outwidth=(int)Math.round(paint.measureText(text)); Bitmap bitmap=Bitmap.createBitmap(outwidth,fontsize,Bitmap.Config.ALPHA_8); Canvas canvas=new Canvas(bitmap); canvas.drawText(text,0,fontsize-1,paint); return bitmap; } } C源: … MY_ASSERT(vm_cached!=NULL); JNIEnv* env; jint res=vm_cached->AttachCurrentThread(&env,NULL); MY_ASSERT(res==0); jclass activityClass=env->FindClass(“android/app/NativeActivity”); MY_ASSERT(activityClass!=NULL); jmethodID […]

来自PayPal的交易详情使用Android中的Pay-key

我在我的应用程序中集成了paypal,一切都运行正常。现在我想在我的android中拥有来自paypal的所有交易细节,所以使用paykey我试着编写代码。我获取交易细节的代码如下: if(resultTitle == “SUCCESS”) { try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = null; httppost = new HttpPost(“https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails”); httppost.setHeader(“Content-Type”, “application/x-www-form-urlencoded”); // Add your data List nameValuePairs = new ArrayList(); nameValuePairs.add(new BasicNameValuePair(“X-PAYPAL-SECURITY-USERID”, “parth_1325956186_biz_api1.bcod.co.in”)); nameValuePairs.add(new BasicNameValuePair(“X-PAYPAL-SECURITY-PASSWORD”, “334367211”)); nameValuePairs.add(new BasicNameValuePair(“X-PAYPAL-SECURITY-SIGNATURE”, “An5ns1Kso7MUDHR4ErQKJJJ4qi4-AI0T5BBCHc3gWzBV9Q81jcP6LFD6”)); nameValuePairs.add(new BasicNameValuePair(“X-PAYPAL-APPLICATION-ID”, “APP-80W284485P519543T”)); nameValuePairs.add(new BasicNameValuePair(“X-PAYPAL-REQUEST-DATA-FORMAT”, “nv”)); nameValuePairs.add(new BasicNameValuePair(“X-PAYPAL-RESPONSE-DATA-FORMAT”, “nv”)); nameValuePairs.add(new BasicNameValuePair(“payKey”, resultExtra)); nameValuePairs.add(new BasicNameValuePair(“requestEnvelope.errorLanguage”, “en_US”)); httppost.setEntity(new […]

Android如何通过JNi示例使用libjpeg-turbo库

我用ndk-build成功构建了libjpeg-turbo,感谢这篇文章: libjpeg-turbo for android 我想在libjpeg-turbo的example.c中获得像read_JPEG_file这样的本机函数来从Java代码调用它以用于Android应用程序。 有人能给我一个例子怎么做吗? 如何编写使用libjpeg-turbo ndk构建库的Java本机方法? 我可以通过加载库 System.loadLibrary(“libjpeg”); 但接下来呢? 该库没有任何本机方法可以从Java调用。 我试图根据JNI文档编写一个JNI c类但没有成功。 示例代码非常适合学习如何操作。 编辑: 我创建了一个测试类NativeMethods: package com.test.app; public class NativeMethods { private String filename = null; static { System.loadLibrary(“jpeg”); // this represents compiled libjpeg-turbo under ndk } public NativeMethods(String jpegFilename) { this.filename = jpegFilename; } public native int computeNumberOfDCTS(String filename); } 然后我使用javah生成本机方法的C头,结果是com_test_app_NativeMethods.h文件包含: /* […]

应用程序中的Android JNI DETECTED ERROR:JNI GetMethodID被调用挂起exception

我正在尝试用我的android项目运行Googles OCR Tesseract。 我已经用android-ndk编写了tesseract,并在我尝试运行android项目后收到此错误。 我的环境如下 Android 5.1.1 android-ndk-r10e for windows Android的SDK-R22 作为参考,我是根据此处列出的示例链接示例构建的 提前致谢! 这是我的logcat结果的片段: I/DEBUG ( 182): Revision: ‘0’ I/DEBUG ( 182): ABI: ‘arm’ I/DEBUG ( 182): pid: 20291, tid: 20337, name: JavaBridge >>> com.enterprisem obility.OCR <<< I/DEBUG ( 182): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr ——– I/DEBUG ( 182): Abort message: 'art/runtime/check_jni.cc:65] […]

有时在Android上忽略LD_LIBRARY_PATH

我有一个Android应用程序,它产生许多本机可执行文件与我随软件包分发的库有动态链接。 要启动这些二进制文件,我使用LD_LIBRARY_PATH环境变量使它们知道加载库的位置,但在某些设备上根本不起作用,LD_LIBRARY_PATH正确更新但二进制文件无法找到库。 这不是我可以重现的东西,因为在我的两个设备(Galaxy Nexus和Nexus 7与股票roms)它只是工作正常。 我尝试了很多方法,例如我产生: LD_LIBRARY_PATH=/my/package/custom/libs:$LD_LIBRARY_PATH && cd /binary/directory && ./binary 而且: String[] envp = { “LD_LIBRARY_PATH=” + libPath + “:$LD_LIBRARY_PATH” }; Process process = Runtime.getRuntime().exec( “su”, envp ); writer = new DataOutputStream( process.getOutputStream() ); reader = new BufferedReader( new InputStreamReader( process.getInputStream() ) ); writer.writeBytes( “export LD_LIBRARY_PATH=” + libPath + “:$LD_LIBRARY_PATH\n” ); writer.flush(); 但是在那些设备上似乎没有任何工作……所以我开始认为这是一个与内核相关的问题,一些内核(比如我的)使用LD_LIBRARY_PATH,其他内核没有(简单地忽略它,或者它们是仅使用在应用程序启动时设置的LD_LIBRARY_PATH,因此无法在运行时更改它。 […]

JNI – 如何使用具有不同字段的多个Jni包装器实例?

背景 我有一个使用JNI(使用NDK)在Java和C / C ++中编码的android项目。 我已经在java端创建了一个Jni java包装器,它将自己完成所有Jni操作,而没有其他java类可以直接访问除此包装器之外的jni操作。 问题 问题是,我希望创建这个包装器的多个实例,而Jni部分应该有一个每个Jni包装器的实例。 这是一个问题,因为Jni部分为所有实例保存相同的字段。 这个问题 我怎样才能解决这个问题,这样对于jni包装器的每个java实例,jni部分都会有一个实例? 我在想,也许我可以将所有字段放入C ++类,并且有一个init()函数,它将为JniWrapper的CTOR返回它的新实例,从那时起,对于需要字段的每个JNI函数,它会将此类作为参数。 也许它可能是这个链接上显示的指针。 可悲的是,我不知道该怎么做。 有人可以帮忙吗? 样品 这是一个示例代码,我希望这些代码能让那些不了解问题的人更清楚: java部分: public class JniWrapper { static { System.loadLibrary(“JniTest”); } private native void foo(Bitmap bitmap); } jni部分: … // sadly, all of those fields are actually a global fields int _intField; float _floatField; //those are just sample […]

Android中的符号链接创建在应用程序的资产目录中

我似乎无法找到这个具体问题的可靠答案。 我正在尝试以编程方式在同一应用程序的资产目录中的另一个位置的资产文件夹中创建一个目录的符号链接。 从本质上讲,我希望做与Java.nio.Files的createSymbolicLink方法相同的事情。 有没有可用的方法来使用Android SDK? 如果没有,NDK有可能吗?