不知道我有没有描述清楚!
Android不是基于linux平台的吗?我现在需要开发一个linux平台上的工具到Android下层的linux上使用,但发现放到手机中的文件系统(比如/system/bin)之后不能运行,我放上去的是静态编译好的linux可执行文件。
请问我有没有高手知道解惑的?
Android不是基于linux平台的吗?我现在需要开发一个linux平台上的工具到Android下层的linux上使用,但发现放到手机中的文件系统(比如/system/bin)之后不能运行,我放上去的是静态编译好的linux可执行文件。
请问我有没有高手知道解惑的?
你是用交叉编译工具弄出来的ARM上的可执行文件吗?
请问你们遇到过这个问题吗?需要用JNI编译?JNI可以编出可执行文件吗?
说简单点,我就是想向Android下添加一个类似adb的工具,是用C写的。
那个连接讲的是添加可执行程序到android平台下。有main的
int main(int argc, char** argv)
{
sp<ProcessState> proc(ProcessState::self());
sp<IServiceManager> sm = defaultServiceManager();
LOGI("ServiceManager: %p", sm.get());
AddService::instantiate();
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
}
原文:
Step-6 :下面写个 JNI Native 类别来使用 Add 类别之对象。透过 JNI Native 函数,就可以与 Java 层的 Service 服务衔接起来。
比较简单的办法是把这个放到 android的源码目录中按照android的方式编写Android.mk然后在源码的环境中编译。
具体的方法网上都有的,再加上自己摸索一下以后就知道了。
如果你不用java的话,完全不需要和JNI扯上关系。JNI是java和native C/C++直接调用的接口。
想在Android上运行一个native的可执行文件有两种方法:
1。 利用Android本身的Android.mk来。他会帮你做交叉编译;
2。 下载一个gcc-arm的交叉编译的toolchain。我只试过第一种方法,一次就成功了。具体请参考这个帖子:
http://www.eefocus.com/article/09-04/71374s.html第二种方法请参考这个(我自己没有试过):
http://www.linuxidc.com/Linux/2011-02/32713.htm
linux的gcc是不行的,你得下一个交叉编译器arm-none-linux-gnueabi,这样编译出来的才能在arm的设备上运行,我做过,楼主可以试下。