摘要:1 #include 2 #include 3 #include 4 #include 5 jmp_buf sigsegv_buf; 6 7 8 void sigsegv_callback(int sig_num){ 9 printf("recieve a segment fa...
阅读全文
摘要:在解决Android Studio中编译native code出现的问题时,发现Android Studio使用了完整的ndk-build命令进行编译,参数众多。故在此做一个说明,以便大家可以根据偏好自行设定参数。ndk-build编译支持的参数:NDK_PROJECT_PATH 一般为nullAP...
阅读全文
摘要:1. Linux中可变列表实现的源码分析查看Linux0.11的内核源代码,对va_list, va_start, va_arg 的实现如下:va_list的实现没有差别,chartypedef char va_list;va_start的实现#define va_start(AP, LASTARG...
阅读全文
摘要:incomplete type,invalid use of incomeplete type ...等问题可能是由于没有引入恰当的头文件,或者没有以恰当的顺序引入头文件。
阅读全文
摘要:在Android中,可以通过JNI的方式来调用和访问用C/C++实现的代码,这些代码以SharedLibrary的方式存在于so中。从Java Code到Native Code的一般使用过程为:在Java中的某个类中调用System.loadLibrary(XXX)(对于ing的so的全名应为:li...
阅读全文
摘要:如题Java.lang.NoClassDefFoundError 错误可能是由于找不到指定的类引起的。一般出现在java 反射调用,或者通过jniRegisterNativeMethods手动注册jni函数时引发的。特别需要主要对于内部类的处理:class A{ class B{ }}此时B是一...
阅读全文
摘要:class 一一对应so-->method 每个so对应于一个类对象类中的每个native方法对应 于so中的一个native的function,对应关系涉及 {clazz, "name", "Signature", func_addr} 参数jclazz描述的是要注册JNI方法的类,而参数m...
阅读全文
摘要:通过写了一个AIDL文件,查看自动生成的java文件代码得出的结论:假如有: boolean loadNativeSharedLib(String libPathName);则对应的binder通信的实际操作为:写入:@Override public boolean loadNativeShared...
阅读全文
摘要:在Interface中,asBinder函数涌来将服务类接口类型转换为IBinder类型;相反的,asInterface函数用来将Ibinder类型转换为服务接口类型
阅读全文
摘要:Binder是Android上IPC的基础和关键。那么在使用过程中,大多数时候看到的是client与server的结构,即Server通过创建服务来向Client提供服务,Client则通过绑定到Binder对象从而开始通信。具体的binder对象的获取方式,也就与服务的调用方式相关了: 1.使用s...
阅读全文
摘要:1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you ...
阅读全文
摘要:将Mac OS X下的目录共享到Paralles后,source insight创建工程。但是当再次打开时却打开失败。提示:there was an error opening project网上对此问题的介绍主要是针对Linux、Samba的,说:1. 权限问题,修改共享目录及其文件权限为读写执行...
阅读全文
摘要:错误一:javap未指向有效的java版本Traceback (most recent call last): File "../../base/android/jni_generator/jni_generator.py", line 1065, in sys.exit(main(sys...
阅读全文
摘要:按需对Androguard进行增强和定制修改Androguard是一个对android应用程序进行分析的基于python的平台,功能强大。但是在使用的过程中,提供的功能不一定如我们所需,所以需要进行额外的patch一下。例如,androguard只提供了函数show_Permissions(dx)来...
阅读全文
摘要:Date: 2014-03-14Title: Compile Android Native Binary And LibraryPublished: trueType: postTags: Andoird, Develope在Android平台上,通过NDK可以编译NativeC程序,生成原生的NativeCode。从生成的代码的使用方式来看,主要有三种形式:Native Executable Binary, Shared Dynamic Library, 以及Static Link Library。接下来将分别介绍这三种类型的二进制文件的用途和生成时的MakeFile的设置。1. Stati
阅读全文
摘要:1. 重要寄存器SP 栈指针, 每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可以把一般通用寄存器压入堆栈,返回时再出栈,保证了各种模式下程序的状态的完整性LR 链接寄存器,一般用来存储返回地址;在执行BL或BLX等指令时,会自动存储下一条指令地址,即返回地址PC 程序计数器,存储将要执行的指令2. 程序跳转B ;--> PC,即跳转到labelBL ;将当前指令的下一条指令的地址存储到LR,然后跳转到label -->
阅读全文
摘要:1. 下载安装2. 设置安装的默认程序$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_21/bin/java 300$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_21/bin/javac 300sudo update-alternatives --config javasudo update-alternatives --config javac
阅读全文
摘要:本人需要wifi连接android进行调试的原因主要是要经常用到IDA pro进行调试,但手头有的IDA Pro版本只是windows的,开发可能更多用Mac OS X了,来回拔插、调试很不方便,所以wifi连了之后,可以省事儿很多。设置方法源于此贴,具体如下:1. 手机端开启adb tcp连接端口:/$setprop service.adb.tcp.port 5555:/$stop adbd:/$start adbd其中setprop是用来设置系统属性的,这里不需要root权限,su即可。可通过adb shell设置,亦可通过手机上安装的Android terminal设置。2. 电脑端的设
阅读全文
摘要:很久之前做过android+jni+ndk的开发,但是现在都基本忘完了。所以稍微记录一下。1. Eclipse中创建Android工程,及相应的代码啥的2. 设置工程为支持Native code左栏右击工程名,然后选择“Android Tools”-->"Native Support"3. 在需要加...
阅读全文
摘要:Some Troubles or problems you may encounter while you setup the Android source code build environment on Ubutun 12.4.41. Install Sun-jdk1.6prompt:$ sudo apt-get install sun-java6-jdkReading package lists... DoneBuilding dependency tree Reading state information... DonePackage sun-java6-jdk is ...
阅读全文