怎样在mstar平台上添加native service

MStar Android平台NativeService集成
本文详细介绍了在MStar Android平台上添加NativeService的特殊步骤与常见问题解决方法,包括目录结构修改、Makefile调整、JNI文件添加及依赖库处理等,确保服务正确注册与调用。

mstar android 平台添加native service 与其他Android 平台很不一样,按照常规方法添加之后,并且加入到项目代码目录下,单独mmm 该目录是没有问题的,按照项目编译却编译不到,下面说下我曾遇到的问题:

1. mst648 单独添加了一个native service,

defaultServiceManager()->addService(String16("TouchService"), comm);

单独mmm 出来所需文件so,bin 文件,分别放到系统/system/lib, system/bin下,再在init.mooney.rc添加下面启动service 的代码

再sm->getService(String16("TouchService"));  居然get不出来,无论你怎么chmod 777,都获取不到,同样的操作换到其他非mstar 平台则没问题,真是奇了怪了。

最后实在没法,只有把service插到原平台一个现成的tvos 的service里面。下面是添加步骤

1. 在supernova\projects\tvos 目录下,添加两个目录存放service,manager 代码,参照其他目录修改目录里的makefile 和mk 文件,后面编译之后会生成上面所说的两个依赖文件

2. 修改tvos根目录下的Makefile。 到这里为止,在project下buildall,只会生成libxxx和objxxx目录下的.a, .d文件,里面定义的so 文件并没有编译出来

3. 在device\mstar\common\libraries\tvapi\jni\ 目录添加jni文件,并修改Android.mk,

include $(CLEAR_VARS)
LOCAL_MODULE := libtouchmanager_jni
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := \
    com_mstar_android_tvapi_common_TouchPortManager.cpp
LOCAL_C_INCLUDES := \
    $(JNI_H_INCLUDE) \
    frameworks/base/core/jni \
    $(TARGET_TVAPI_LIBS_DIR)/include/SerialTouch \
    $(TARGET_TVAPI_LIBS_DIR)/SerialTouch
LOCAL_SHARED_LIBRARIES := \
    libandroid_runtime \
    libnativehelper \
    libcutils \
    libutils \
    libbinder \
    libtouchmanager
LOCAL_REQUIRED_MODULES := libtouchmanager
LOCAL_CFLAGS += $(local_tvjni_cflags)
include $(BUILD_SHARED_LIBRARY)

其中

 另外还有修改com.mstar.android.mk 把编译jni 的so 添加进去才能编译得出来xxx_jni.so,在编译JNI 的mk把本来第1步代码编译生成的so,只有在这里添加到依赖文件去,才能编译出libtouchmanager.so。这实际生成的文件,所依赖文件九曲十八弯,实在感觉乱

4. 在main.cpp: AndroidServiceInitThread函数里    调用TouchService::instantiate(); 来添加service,这样才能getservice 成功

TouchService::instantiate(); 所依赖的两个so, makefile 修改如下:

这样service就添加成功了,再Getservice 也OK 了

部分关键代码参考下面链接

https://download.youkuaiyun.com/my

Android_tv_metro是一款安卓版TV Metro框架和服务器API。API和数据结构专辑和显示项目:Metro风格是由两个元素构成专辑可以包含多张专辑和显示项目显示项目可以被定义为视频,游戏,应用程序,音乐等您可以从显示项目中删除你自己的游戏/应用/视频详细条目主页也被定义为专辑。API风格API描述http://host/v1/ns/type/?id=res_id NS:命名空间,资源类型类型:项目或项目列表ID:后端服务器系统的资源ID详细信息http://host/game(video/app)/item?id=12346 return item list专辑http://host/game(video/app)/album?id=6464 return album类别http://host/game(video/app)/category?id=123456 return album注意:专辑和类别接近同一概念。选项卡“应用程序/游戏”选项卡“视频”选项卡“视频类别”首页JSON定义首页JSON示例服务器API定义请看:https://github.com/XiaoMi/android_tv_metro/raw/master/server/TVMarketAPI.md首页显示数据{    "data": [        {            "items": [display items],            "images": {},            "name": "TAB 1",            "id": "recommend",            "type": "album",            "ns": "video"        },        {            "items": [display item],            "images": {},            "name": "TAB 2",            "id": "recommend",            "type": "album",            "ns": "video"        }    ] }显示项目:{    "target": {        "type": "item"    },    "images": {        "back": {            "url": "",            "ani": {},            "pos": {}        }    },    "name": "Display Name)",    "times": {        "updated": 1409202939,        "created": 1409202939    },    "_ui": {        "layout": {            "y": 2,            "x": 3,            "w": 1,            "h": 1        },        "type": "metro_cell_banner"    },    "id": "987722",    "type": "item",    "ns": "video" }专辑{ "data": [     {         "items": [display items],         "images": { },         "name":"game tab name",         "times": {             "updated": 0,             "created": 0         },         "_ui": {             "type": "metro"         },         "id": "recommend",         "type": "album",         "ns": "game"     },     {         "items": [display items],         "images": { },         "name": "game tab Name",         "times": {             "updated": 0,             "created": 0         },         "_ui": {             "type": "metro"         },         "id": "categories",         "type": "album",         "ns": "game"     },     {         "items": [dispay items],         "images": { },         "name": "video tab name",         "times": {             "updated": 0,             "created": 0         },         "_ui": {             "type": "metro"         },         "id": "recommend",         "type": "album",         "ns": "video"     },     {         "items": [display items],         "images": { },         "name": "video tab name",         "times": {             "updated": 0,             "created": 0         },         "_ui": {             "type": "metro"         },         "id": "categories",         "type": "album",         "ns": "video"     } ], "preload": {     "images": [] }, "update_time": 0 }显示项目{ "target": {     "type": "item" }, "images": {     "text": {         "url": "",         "ani": {},         "pos": {}     },     "icon": {         "url": "",         "ani": {},         "pos": {}     },     "back": {         "url": "http://xxx/fffff.png",         "ani": {},         "pos": {}     },     "spirit": {         "url": "",         "ani": {},         "pos": {}     } }, "name": "name", "times": {     "updated": 1404466152,     "created": 1404454443 }, "_ui": {     "type": "metro_cell_banner",     "layout": {         "y": 1,         "x": 1,         "w": 1,         "h": 2     } }, "id": "180", "type": "item", "ns": "game" }TV Metro库和APIandroid库:提供一个建立sw540dp metro布局的框架。API:服务器API和数据结构。该框架能够帮助您轻松构建一个TV metro UI风格的应用程序。至于具体的业务数据定义,你需要自己处理。android库:用于专辑的RecommendCardView Card浏览GenericSubjectLoader Loader(选项卡是专辑的一个实例)如何集成Android库?你只需要继承MainActivity并执行选项卡装载。请参阅TVMetroSample应用如何运行自己的服务器?1.定义你的主页数据2.执行您的详细资料/列表API下载测试APK下载测试APK,你可以在Android平板或电视运行点击下载设计文档:https://github.com/XiaoMi/android_tv_metro/raw/master/design/app_api.ppt 标签:Android
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值