在adb shell下直接执行可以加载起来的服务,在NDK下用system命令跑不起来

Sunny_Liuqing 2017-12-28 02:35:30
在adb shell下直接执行可以加载起来的服务,在NDK下用system命令跑不起来
...全文
359 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
珊睿的爸 2018-01-04
  • 打赏
  • 举报
回复
不是大神,也不是小神,就是一个菜鸟。试试下载一个Linux系统源码,找到对应的文件进行编译给system权限试下。
Sunny_Liuqing 2018-01-02
  • 打赏
  • 举报
回复
有没有大神可以回复一下啊~
高焕堂<应用框架原理与程序设计>源代码(Eclipse) 36计本人全部测试通过。比较难的地方而书中没有相关解释的有加注释。 关于第36计windows下编译.so文件: 写C组件注意事项:将NativeHalfAdder抽出只有类定义和函数定义部分,用javac NativeHalfAdder.java, 然后将编译出的.class文件放于test\cn\目录下 用javah test.cn.NativeHalfAdder产生.h头文件。 写完各个C文件和H文件后(关于这些文件书中有源码)。开始编译.so文件 Windows下编译.so文件步骤(这里我使用NDK(android-ndk-1.6_r1)加Cygwin 在windows下编译,如果没有请安装, 注:android-ndk-1.6_r1只支持android 1.6或更早版本,所以这里必须将你的android工程的Target设为1.6): 关于安装Cygwin,到http://www.cygwin.cn/site/install/ 上下载setup.exe 进入后选择install from internet 然后根据说明下一步,到Select Packages页面时,在All @ Default 选项上单击Default,使其状态变为All @ Install,为防止麻烦我选择全部安装, 按提示安装完(下载的时候有点慢,耐心等待,1.5G左右)。 关于NDK的安装,http://android.group.javaeye.com/group/blog/494016 上下载android-ndk-1.6_r1.rar 注意是windows版本的。 解压该文件,打开Cygwin进入其目录(Cygwin指令:cd D:/android-ndk-1.6_r1)下运行Cygwin指令 build/host-setup.sh 提示安装成功。 在Ex36CModel目录下创建Application.mk文件,并创建jni目录,该目录下包含Android.mk,HalfAdder.c等文件,目录结构如下 (关于MK文件的语法请看NDK安装目录docs下的ANDROID-MK.TXT,或者网上查找相关资料) Ex36CModel   ├ Application.mk   ├ jni ├ Android.mk ├ HalfAdder.c ├ HalfAdder.h ├ lw_oopc.h ├ test_cn_NativeHalfAdder.c ├ test_cn_NativeHalfAdder.h Application.mk内容: APP_PROJECT_PATH := $(call my-dir) APP_MODULES := NativeHalfAdder Android.mk内容: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := NativeHalfAdder LOCAL_SRC_FILES := HalfAdder.c test_cn_NativeHalfAdder.c include $(BUILD_SHARED_LIBRARY) 由于ndk规定Application.mk必须放在 <NDK安装目录>/apps/project_name,我们在<NDK安装目录>下创建一个符号连接: Cygwin指令:ln -s <工程目录> <NDK安装目录>/apps/jnitest 如:Cygwin指令:ln -s D:/wu/android/Ex36CModel D:/android-ndk-1.6_r1/apps/Ex36CModel 这样,我们就可以开始编译共享库了: 在<NDK安装目录>下运行: Cygwin指令:make APP=NativeHalfAdder 可以看到编译成功,并在<工程目录>/libs/armeabi/下生成了libNativeHalfAdder.so。 将so文件拷贝到AVD的/system/lib目录下(这里需要AVD的root权限,但是adb shell 就是root权限,所以用adb 指令来拷贝): 用cmd窗口 启动AVD(必须的,否则会有out of memory错误),输入:CMD指令: emulator -avd m9 -partition-size 512 运行,运行成功后,另开一个cmd输入 : CMD指令: adb remount 运行, 该指令更改系统文件属性使可读写 (必须的,否则会有file read-only错误), 然后在该cmd运行指令: adb push D:/wu/android/Ex36CModel/libs/armeabi/libNativeHalfAdder.so /system/lib 将指定文件拷到AVD相应目录下, 工程中记得加入NativeHalfAdder.java 文件,该文件加载了库文件并声明外部方法 运行本程序 大功告成

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧