我正在使用崩溃报告服务跟踪我们的Android应用程序(使用NDK加载C++库)的崩溃.少数用户遇到以下崩溃:
java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH in "cpplibrary.so" (built with --hash-style=gnu?)
at java.lang.Runtime.loadLibrary(Runtime.java:365)
at java.lang.System.loadLibrary(System.java:526)
Run Code Online (Sandbox Code Playgroud)
我可以在互联网上找到的这个错误(例如这个Google Groups帖子)讨论了构建lib的问题,这会导致每次运行应用程序时都会出现此错误.几乎没有关于为什么偶尔会发生这种情况的信息. 这篇文章是我能找到的最接近的帖子.
根据崩溃痕迹,看起来任何特定的用户都会经历这种不断的延伸; 我不确定这些用户是否能够正确加载lib.有没有人对有时可能导致这种情况发生的想法有所了解?我可以以不同的方式进行NDK构建以试图阻止它吗?
谢谢!
编辑:这篇文章提到了有条件地获得这种错误的两种方法; 我会照顾他们.
Edit2:构建文件:Android.mk(摘录):
include $(CLEAR_VARS)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_C_INCLUDES := <Source Path>...
LOCAL_CFLAGS := -DANDROID -Wall
LOCAL_CPPFLAGS := -DENABLE_SDK_DEBUGGING=1 -DENABLE_SDK_LOGGING=1
LOCAL_MODULE := cpplibrary
LOCAL_SRC_FILES := <Source Files> / ...
LOCAL_LDLIBS := -llog -landroid
LOCAL_STATIC_LIBRARIES := cpplibrary
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
Application.mk:
APP_STL := stlport_static
APP_CFLAGS += -std=c++11
Run Code Online (Sandbox Code Playgroud) 我正在开发一个连接到自定义蓝牙设备的Android应用程序.一些帖子非常有用(比如这个和这个),但是我遇到的问题没有解决,如果这些建议.
成功连接蓝牙后,我会调用BluetoothGatt.discoverServices,这在大多数设备上都能正常运行.在Nexus 5和Samsung Note 3上,我从未收到任何响应(onServicesDiscovered),无论是成功还是其他.这在第一次连接尝试时发生,并且disconnect()或close()的组合似乎没有解决它.
我有传闻证明这是一个Android操作系统错误; 只有我们仍然在4.4.2上的Nexus 5遇到了这个问题,升级到4.4.3似乎已经解决了这个问题.这对于三星来说还不是一个选择,如果可能的话我想找一个解决方法.我知道我们过去没有这些问题就连接到了Nexus 5; 当我试图追踪可能发生的变化时,我会感激任何想法.
三星Note 3日志:
07-02 17:29:54.891 I/PeripheralManager( 8282): Connect has been called on HFEC161332B90C15C29E DF:5F:C8:DF:04:35 -43 , shouldPair = true
07-02 17:29:54.891 I/PeripheralManager( 8282): BTSTATE acquiring new gatt and connecting...
07-02 17:29:54.891 D/BluetoothGatt( 8282): connect() - device: DF:5F:C8:DF:04:35, auto: false
07-02 17:29:54.891 D/BluetoothGatt( 8282): registerApp()
07-02 17:29:54.896 D/BluetoothGatt( 8282): registerApp() - UUID=2fc3ce73-c50c-4cda-8b82-1532a5dccb14
07-02 17:29:54.896 D/BtGatt.GattService( 3434): registerClient() - UUID=2fc3ce73-c50c-4cda-8b82-1532a5dccb14
07-02 17:29:54.896 D/BtGatt.btif( …Run Code Online (Sandbox Code Playgroud) 我们有一个Android应用程序,我们正在使用Gradle/Android Studio构建,并使用JaCoCo为我们的单元测试生成代码覆盖率报告; 这很有效.我们也有兴趣为手动测试生成覆盖率报告; 也就是说,显示任意应用程序启动中涵盖的代码.似乎JaCoCo的前任EclEmma能够做到这一点,但我无法找到任何关于JaCoCo的确认方式(尽管我开始假设它不可能因为缺乏话语).
我尝试过使用Eclipse中的EclEmma只是为了得到一些东西,但是最新的版本因为这个错误而失败了,我也无法立即使旧版本工作.
任何人都可以确认是否可以使用JaCoCo在任意应用程序启动时生成覆盖数据?如同,运行应用程序,按下按钮,关闭应用程序并获得有关您按下的按钮执行了哪些代码的报告.如果没有,是否有另一种工具可以实现这一目标?
谢谢!