Tag: android ndk

为Androidshell构build可执行文件

有时我需要在设备上运行一个命令或脚本,但它们不可用或不存在。 我们可以添加一些额外的命令到Android设备的shell ,除了那些已经可用的命令? 例如,将screenrecord命令添加到我的设备(我的设备具有低于19的Android API),这是不可用的。 我知道如何使用adb shell获取设备上的可用命令列表 adb shell ls /system/bin 但我想添加更多的自定义命令和脚本,做一些特殊的工作。 有没有办法做到这一点? 或者这是不可能的?

Valgrind无法运行Java Android程序

我正在尝试像Valgring一样启动Java程序(在adb shell中): valgrind am start -a android.intent.action.MAIN -n com.me.myapp/.MainActivity 我越来越: ==2362== Memcheck, a memory error detector ==2362== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==2362== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info ==2362== Command: am ==2362== /system/bin/sh: am: No such file or directory

我怎样才能捕获SIGSEGV(分段错误),并得到在Android上的JNI下的堆栈跟踪?

我将项目移动到新的Android本地开发工具包(即JNI),我想赶上SIGSEGV,如果它发生(也可能是SIGILL,SIGABRT,SIGFPE),以提供一个很好的崩溃报告对话框,而不是(或之前)目前发生的事情:该进程的直接不必要的死亡,以及操作系统可能尝试重启该进程。 ( 编辑: JVM / Dalvik虚拟机捕捉信号并logging堆栈跟踪和其他有用的信息;我只是想提供给用户的选项,真正的电子邮件信息给我)。 情况是:大量的C代码我没有写在这个应用程序的大部分工作(所有的游戏逻辑),虽然它在许多其他平台上经过了充分的testing,但是我完全有可能在我的Android端口,会喂它垃圾并导致在本机代码崩溃,所以我想崩溃转储(本机和Java),目前在Android日志中显示(我想这将是在非Android情况下stderr)。 我可以自由地修改C和Java代码,尽pipecallback函数(进出JNI)的数量大约为40,显然,小差异的奖励点。 我听说过J2SE中的信号链接库libjsig.so,如果我可以在Android上安全地安装一个信号处理程序,这将解决我的问题的捕捉部分,但是我看不到Android / Dalvik这样的库。

从无根设备的资产文件夹复制数据库

我正试图从资产文件夹复制到设备的数据库。 此代码在Emulator和根设备上工作正常。 我只是想知道它是否在无根设备上产生任何问题,或者它会起作用。 private void StoreDatabase() { File DbFile = new File( "data/data/packagename/DBname.sqlite"); if (DbFile.exists()) { System.out.println("file already exist ,No need to Create"); } else { try { DbFile.createNewFile(); System.out.println("File Created successfully"); InputStream is = this.getAssets().open("DBname.sqlite"); FileOutputStream fos = new FileOutputStream(DbFile); byte[] buffer = new byte[1024]; int length = 0; while ((length = is.read(buffer)) > […]

Android的ffmpeg(使用教程:“ffmpeg和Android.mk”)

我正在尝试为android编译ffmpeg。 我已经find了这个主题的几个职位,但非这些似乎工作。 如果试图构buildffmpeg,就像发布在[1]上一样。 有没有人成功地使用这些教程编译ffmpeg? 我不知道如何实现步骤4到5。 STEP4:configuration… 第5步:cd到你的NDK根目录,inputmake TARGET_ARCH = arm APP = ffmpeg-org 在我看来,构build像这样的应用程序在第5步中的教程中进行了解释,需要以前的一些步骤。 不幸的是我没有在文件夹中的应用程序。 我正在使用当前的android ndk release 3,并从[3]和[4]中检出了实际的ffmpeg版本。 我很感谢每一个build议。 [1] http://slworkthings.wordpress.com/ [2] http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android [3] http://ffmpeg.org/download.html

如何在Android中使用addr2line

我坚持我的应用程序,因为我无法debugging,因为它是一个multithreading的和崩溃与错误SIGSEGV。 我从LogCat中得到了很多信息,这些信息给了我的本地库中的地址。 如果我可以将这些地址转换成我的代码将是有帮助的。 有没有人有任何想法如何使用android-ndk提供的addr2line?

无法加载库:reloc_library :找不到“rand”

我正在尝试为我的Android应用程序使用PJSIP库。 我build立了pjsua示例应用程序根据这个手册: https ://trac.pjsip.org/repos/wiki/Getting-Started/Android 但是当示例应用程序启动时,exception触发: 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 […]

在ndk {} DSL中定义LOCAL_SRC_FILES

我想知道是否有可能在gradle.build ndk {}块中定义LOCAL_SRC_FILES。 我目前使用: dependencies { classpath 'com.android.tools.build:gradle:1.3.0' } 在我的顶级gradle.build文件中。 我的jni模块gradle.build文件看起来像这样: apply plugin: 'com.android.library' dependencies { compile fileTree(dir: 'libs', include: '*.jar') } android { compileSdkVersion 11 buildToolsVersion "22.0.1" def jniSrc = System.getProperty("user.home") + "/srcs/jni" defaultConfig { ndk { moduleName "core" stl "gnustl_shared" cFlags "-std=c++11" } } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] […]

在应用程序中集成MuPDF Reader

我正在处理一些应该能够在我的应用程序中阅读PDF的东西,并且希望将PDF视图放在我的自定义布局中 。 我更喜欢Android PDF Viewer,但是当我执行zoomIn时 , zoomOut需要太多的时间 。 所以目前我应该使用MuPDF开源项目来整合我的项目,它基于JNI ,我不习惯。 我正在使用Cygwin为本机代码构build库。 因此我不清楚几件事情: 如何将MuPDF整合到我的项目中(按照我的问题标题)? 一旦我将成功整合它,那么我怎么能把PDF阅读器放在我的自定义视图中 (在XML或程序devise中)?

Android致命信号11(SIGSEGV)在0x636f7d89(代码= 1)。 它如何被追查?

我一直在阅读其他文章,追踪在Android应用程序中获取SIGSEGV的原因。 我计划扫描我的应用程序可能的NullPointers相关的canvas使用,但我的SIGSEGV barfs上一个不同的内存地址每次。 另外我见过的code=1和code=2 。 如果内存地址是0x00000000 ,我会有一个线索,它是一个空指针。 我得到的最后一个是code=2 : A/libc(4969): Fatal signal 11 (SIGSEGV) at 0x42a637d9 (code=2) 有关如何跟踪这个问题的任何build议? 我有一个嫌疑犯,但我不想尝试它。 我的应用程序使用OSMDroid API进行离线映射。 OverlayItem类表示地图上的标记/节点。 我有一个服务,通过networking收集数据来填充OverlayItem,然后显示在地图上。 为了简化我的devise,我将OverlayItem扩展到了我自己的NodeOverlayItem类中,该类包含了我在UI活动和服务中使用的一些附加属性。 这给了我一个关于UI和服务的单项信息。 我使用Intents广播到活动刷新UI地图时,一些改变。 活动绑定到服务,并有一个服务方法来获取NodeOverlayItem的列表。 我想这可能是OSMDroid API使用OverlayItem,同时我的Service更新节点信息。 (并发问题) 当我写这篇文章时,我认为这确实是个问题。 令人头疼的是NodeOverlayItem没有将Node和OverlayItem分开,这就是Activity需要来自Node的一些数据,这个Service就是这样。 另外当Activity被创build时(onResume等等),OverlayItem对象将需要从活动不在时服务一直维护的Node数据重新创build。 例如,您启动应用程序,服务收集数据,用户界面显示它,你回家,然后回到应用程序,活动将需要拉动,并从最新的服务节点数据重新创buildOverlayItem的。 我知道这不是一个很好的或明确的问题。 这就像我所有的问题都是利基或模糊的。 如果任何人有关于如何解释这些SIGSEGV错误的build议,将不胜感激! 更新这是debugging会话期间捕获的最新的崩溃。 我有3个这些设备用于testing,当我正在开发和testing时,它们并不全部可靠地崩溃。 我包括了一些额外的东西,所以GC日志logging可以注意到。 你可以看到这个问题可能与内存耗尽无关。 03-03 02:02:38.328: I/CommService(7477): Received packet from: 192.168.1.102 03-03 02:02:38.328: I/CommService(7477): Already processed this packet. […]