我正在尝试将PJSIP库用于我的Android应用程序.我根据本手册构建了pjsua示例应用程序:https://trac.pjsip.org/repos/wiki/Getting-Started/Android
但是,当示例应用程序启动时,异常触发器:
12-06 15:03:58.043: D/dalvikvm(628): Trying to load lib /data/data/org.pjsip.pjsua2.app/lib/libpjsua2.so 0x4129d980
12-06 15:03:58.064: W/dalvikvm(628): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/pjsip/pjsua2/app/MyApp;
12-06 15:03:58.064: D/AndroidRuntime(628): Shutting down VM
12-06 15:03:58.064: W/dalvikvm(628): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
12-06 15:03:58.083: E/AndroidRuntime(628): FATAL EXCEPTION: main
12-06 15:03:58.083: E/AndroidRuntime(628): java.lang.ExceptionInInitializerError
12-06 15:03:58.083: E/AndroidRuntime(628): at org.pjsip.pjsua2.app.MainActivity.onCreate(MainActivity.java:85)
12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.Activity.performCreate(Activity.java:4465)
12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
12-06 15:03:58.083: E/AndroidRuntime(628): at android.app.ActivityThread.access$600(ActivityThread.java:123)
12-06 15:03:58.083: …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用NDK功能的Android应用.我的应用程序定义android:minSdkVersion,并android:targetSdkVersion在AndroidManifest.xml和APP_PLATFORM在JNI/Application.mk.
我目前的理解是android:minSdkVersiondecalres支持的最小操作系统版本,android:targetSdkVersion声明要链接的Java库版本,并APP_PLATFORM声明要链接的C++库.
两个问题:
我的理解是否正确?
是否APP_PLATFORM更好android:minSdkVersion呢?或者他们必须彼此平等?
我的问题的原因:我希望我的应用程序可用于API> = 10的设备,但我需要使用在NDK AMotionEvent_getAxisValue中的platforms\android-13文件夹中定义的NDK函数(如).所以我用android:minSdkVersion=10和APP_PLATFORM=13.项目编译成功,但是它可以在API 10-12设备上运行吗?
我正在尝试使用JNI将C程序移植到android.我已经能够设置程序并使java和c一起正常工作.问题是我需要能够使用STDIN,因为C程序从STDIN读取输入并通过STDOUT返回响应(C程序是服务器 - 客户端应用程序).我不知道是否值得一提,但C程序使用STDIN_FILENO文件描述符来读取STDIN的输入. 如何使用Java从STDOUT和WRITE读取到STDIN?
我做了一些研究,并在以下链接中找到了一些模糊的解释:https://groups.google.com/forum/#!topic / installer -ndk/Brm6jPr4C0Y,我不明白.
这是C代码https://github.com/unekwu/kemi/blob/master/jni/dnscat/dnscat.c#L1270
更多细节
C程序通常从命令行运行,
dnscat --dns <ip> <port>
之后它开始侦听来自用户的消息.通常从stdin输入.
现在在我的Android应用程序中,我可以通过调用main和不同的名称并将ann数组字符串传递给它来运行它与JNI.我验证程序是否开始纠正.问题是我将如何将消息发送到程序,因为android上没有stdin.