您的位置:首页 > 移动开发 > Android开发

[编转]Android localsocket 的基础和使用实践: 02

2014-10-09 15:29 489 查看
在上一节里,谈到了基础和具体是实践实现:

这一节涉及调试和具体的实践测试:

例子源码在:

http://download.csdn.net/detail/goleftgoright/4183596

下载源码后,你需要在你的Linux开发pc上,例如ubuntu上修改一些东西:

01 你需要找到你的init.rc位置:

ref:
http://blog.csdn.net/yellow_hill/article/details/39548165

02 你需要在init.rc 加入你的socket服务

service <strong><span style="color:#33cc00;">htfskservice</span> </strong>/system/bin/htfsk
class main
socket htfsk stream 666 system system
oneshot
[注意]如果不加入class main,那么service 是不会在系统起来的时候自动启动的,之前我也以为既然加入了init.rc那么肯定是启动就起来了....崩溃

其实是因为没有加入class main选项.

03 做完这些后,你需要重新编译你的内核

make kernel

[注意]

如果没有加入,那么需要在目标板启动后,手动启动服务

root@TargetBoard:/ # start htfskservice

[注意] 启动的服务名,是和你在init.rc里面设定一致,这里是 htfskservice

启动之后,

root@TargetBoard:/ # ps

应该能看到:

u0_a79 3643 1505 513560 21280 ffffffff 40088a04 S com.cbox:remote

u0_a64 3656 1505 512444 18000 ffffffff 40088a04 S com.android.exchange

u0_a8 3683 1505 508696 16128 ffffffff 40088a04 S com.android.musicfx

root 3779 1 912 188 c08e4994 b6f86528 S /system/bin/htfsk

root 3797 1519 1244 236 00000000 b6f64570 R ps

04 将源码copy到你的项目编译PC上,

将工程MySocket拷贝到android源码的/packages/apps目录下编译就可以了

注,原作者的方法是重新编译整个应用,然后重新烧写,这未免太费事了

J***A客户端

编译之后,其实我们只需要找到生成的apk,然后用adb push到目标板就可以了

编译后APK位置:

target Package: mSocket (out/target/product/xxx/xxx/obj/APPS/mSocket_intermediates/package.apk)

Warning: AndroidManifest.xml already defines versionCode (in http://schemas.android.com/apk/res/android); using existing value in manifest.

Warning: AndroidManifest.xml already defines versionName (in http://schemas.android.com/apk/res/android); using existing value in manifest.

Warning: AndroidManifest.xml already defines minSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.

Install: out/target/product/xxx/xx/system/app/mSocket.apk

服务器端

当然,同时生成的native的执行代码在这里

target Strip: htfsk (out/target/product/xxx/xxx/obj/EXECUTABLES/htfsk_intermediates/htfsk)

Install: out/target/product/xxx/xxx/system/bin/htfsk

05 adb push 对应的服务器端和客户端到目标板

进到对应的目录,然后
adb push mSocket.apk /system/app 下

或者 /data/app 下

然后,adb push htfsk /system/bin



然后,重启机器,大功告成.

[注意]

如果没有加入,那么需要在目标板启动后,手动启动服务

root@TargetBoard:/ # start htfskservice

[注意] 启动的服务名,是和你在init.rc里面设定一致,这里是 htfskservice

启动之后,

root@TargetBoard:/ # ps

应该能看到:

u0_a79 3643 1505 513560 21280 ffffffff 40088a04 S com.cbox:remote

u0_a64 3656 1505 512444 18000 ffffffff 40088a04 S com.android.exchange

u0_a8 3683 1505 508696 16128 ffffffff 40088a04 S com.android.musicfx

root 3779 1 912 188 c08e4994 b6f86528 S /system/bin/htfsk

root 3797 1519 1244 236 00000000 b6f64570 R ps

看到服务启动后,启动apk,输入你的名字,程序会通过localsocket反馈给你连接成功.

ref:

Android localsocket 的基础和使用实践: 01
http://blog.csdn.net/yellow_hill/article/details/39498015
Android应用与framework的socket通信实例
http://www.apkbus.com/android-70417-1-1.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: