20170502

应用级.so文件添加到系统:
        
        整个系统编译生成的.so文件会自动生成并放在 system/lib目录下
        AMlogic T968:
            System.loadLibrary("one_jni");
            JNI生成的库文件要以 lib 开头,如 libone_jni.so
            
            
    系统级.so文件的添加:
            
        1.相应的目录加入android_os_hmdSysPropSet.cpp、hmdSysPropSet.java
            base/core/jni/android_os_hmdSysPropSet.cpp
            base/core/java/android/os/hmdSysPropSet.java

2.修改以下
          1.base/core/jni/AndroidRuntime.cpp

extern int  register_android_os_hmdSysPropSet(JNIEnv *env);//add by cg
 
              REG_JNI(register_android_os_hmdSysPropSet),//add by cg

2.base/core/jni/Android.mk  //包含机关的动态库so
            LOCAL_SHARED_LIBRARIES := \
                    libhmdSysPropSet \

LOCAL_SRC_FILES:= \
                 android_os_hmdSysPropSet.cpp \
                 
        3.把hmdSystemPropertiesSet放置external目录下,编译出来的是.so

4.Shutdown是一个调用jni的例子

make update-api:
        
        添加系统API或者修改 @hide的API后,需要执行
        修改公共api后,需要执行
        
        如果在Android源码中添加了自定义的包、类、方法或者你修改了Android源码中标识为@hide的
        方法、类,需要这些内容对Application可见并且需要编译进SDK的Document中的话,这个命令是
        必须的。
        
        更新的文件是: frameworks/base/api/ current.txt
        
    
    System.load(String pathName):
        pathName路径必须有执行权限,意思就是说我们不能加载SD卡上的so,因为没有执行权限
        
        
    动态加载.so,实现动态库升级:
        第一种,使用系统方法:
            void java.lang.System.load(String pathName)
            我们只需要架个服务器,每次启动时动态监测so文件有没有更新,有则下载so,然后加载,
            这样就可以避免用户安装新的应用。
        
        第二种,采用dlopen动态加载的第三方库:
            实现指定路径加载so的目的,这种方法升级so的话,那就需要一个基本so,一直不变,用来调
            用dlopen,然后升级另一个so。
            
        
    
    Android系统级应用和普通应用的区别:
        1. 签名不同
                Android系统应用使用的是系统签名,或称为平台(Platform)签名,而普通的Android应用
                使用的是一般的签名。
        2. 可以访问的API不同
                在Android SDK中有很多API(类、接口、方法等)都声明为hide[由于Android SDK中某些API
                非常危险,例如,可以静默安装、卸载程序、拦截电话等,所以Google公司在设计这些API时
                将其声明为hide,以便只有在Android系统应用中才能使用。这些Android系统应用 不能通过
                常规方法安装,只能在有root权限的情况下上传到Android设备的/system/app目录,或随ROM
                一起发布,还可以通过刷机(升级包)的方法安装这些应用。这就限制了这些危险API的使用,
                从而大大降低使用Android系统的风险]。这类API不允许在普通的Android应用中访问,而只有
                经过Platform签名的Android系统应用才能使用这些API。
                
    编译Android系统级应用:
        要想编译Android系统应用,必须要依靠Android源代码才可以。通常会将Android系统应用的源代码
        放到<Android源代码根目录>/package/apps目录或其子目录中。编译Android系统应用需要在程序的
        根目录建立一个Android.mk文件,该文件是Android源代码专用的编译文件,相当于GCC的Makefile文
        件。    
        
        LOCAL_CERTIFICATE :=platform  表示签名类型,系统应用通常设为 platform,表示platform签名。
                        
                        
    Android系统的签名:
        Android源代码中包含了4个签名:
            testkey:普通的Key,默认情况下使用。
            platform:使用该签名的系统应用可以执行平台的核心功能。
            shared:使用该签名的系统应用可以和 home/contacts进程共享数据
            media:使用该签名的系统应用将成为 media/download系统的一部分。
            
            LOCAL_CERTIFICATE 变量可以指定上述4个值,如果值为 platform,会使用security目录的platform
            .pk8文件对APK文件进行签名。如果值为media,会使用media.pk8文件对APK文件进行签名。
    
    
    Binder:

时间: 2024-10-21 13:10:37

20170502的相关文章

CSDN日报20170502 ——《程序学徒与导师》

[程序人生]程序学徒与导师 作者:瞬息之间 经验丰富的程序员,就和中世纪的老师傅一样,他们经历了大量的时间犯过大量的错误,积累了很多不可言说的经验价值(另外一个事实是,不少程序员也说不出来). 点击阅读全文 [系统运维]从一个简单的聊天程序 SimpleChat 看 VPN 技术 作者:赵亚 SimpleVPN 写好了以后,感觉比较简单,我觉得只有简单的东西才经得起折腾,才能全民折腾,所以说 SimpleVPN 还不够简单,本文来一个更加简单的,展示一个超级简单的点对点聊天程序,而且还带简单加密

【2017-05-02】winform弹出警告框是否进行增删改操作、记事本制作、对话框控件和输出输入流

一.winform弹出警告框是否进行增删改操作 第一个参数是弹出窗体显示的内容,第二个参数是标题,第三个参数是该弹窗包含确定和取消按钮. 返回的是一个枚举类接收一下. 再进行判断,如果点的是确定按钮,再进行下一步的增删改操作. 二.记事本的制作 1.菜单工具栏MenuStrip-插入标准项 2.TextBox -显示部分 小箭头 MultiLine 选中多行 Dock属性占满. 3.功能 - 撤销 - 剪切 - 粘贴 - 复制 - 删除 - 全选 - 时间 - 查找 单独做一个窗体点击打开 把主

20170502 匹配单个字符串

为了方便爬虫,最近学习了正则表达式,将学习的过程记录如下: 一.正则表达式的概念: 1.使用单个字符串来描述匹配一系列符合某个句子语法规则的字符串 2.是对字符串操作的一种逻辑公式 3.应用来处理文本和数据 4.表达过程:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功,否则匹配失败 二.匹配单个字符串 import re ma = re.match(r'a','a')#匹配a字符print(ma)print(ma.group()) mb = re.match(r'a','b

zabbix自动注册

zabbix-server页面中定义zabbix自动注册动作action1.Configuration-->Actions-->Event source:Auto registration-->Create action ①Action:这项内容是定义发送邮件/消息的内容name - 腾讯云主机自动注册Default subject - Auto registration: {HOST.HOST}Default message - Host name: {HOST.HOST}      

从此编写 Bash 脚本不再难【转】

从此编写 Bash 脚本不再难 原创 Linux技术 2017-05-02 14:30 在这篇文章中,我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个编写 Bash 脚本的 IDE. -- Aaron Kili 本文导航 -什么是 bash-support.vim 插件? …… 05% -如何在 Linux 中安装 Bash-support 插件 …… 10% -如何在 Vim 编辑器中使用 Bash-support 插件 …… 17% -如何为

Linux云自动化运维第二十课

第五单元 iSCSI远程块存储 一.iSCSI概念 iSCSI(Internet SCSI)支持从客户端(发起端)通过IP向远程服务器上的SCSI存储设备(目标)发送SCSI命令.iSCSI限定名称用于确定发起端和目 标,并采用iqn.yyyy-mm.{reverse domain}:label的格式.默认情况下,网络通信是至iSCSI目标上的端口3260/tcp的明文. 1.iSCSI发起端:需要访问原始SAN存储的客户端. 2.iSCSI目标:从iSCSI服务器提供的远程硬盘磁盘,或"目标门

2014年至今的博文目录(更新至2017年06月12日)

拓扑学中凝聚点的几个等价定义(2017-06-12 07:51) 江苏省2017年高等数学竞赛本二试题(含解答)(2017-06-10 20:59) 裴礼文数学分析中的典型问题与方法第4章一元函数积分学练习(2017-06-10 11:04) 2017年厦门大学第十四届景润杯数学竞赛试卷(数学类)评分标准(2017-06-05 15:31) 2017年华东师范大学数学竞赛(数学类)试题(2017-06-05 15:28) 裴礼文数学分析中的典型问题与方法第3章一元微分学练习(2017-05-30

RedHat 7.1 下安装 Zabbix监控程序详解(适合linux初级用户)

RedHat 7.1 安装 Zabbix 监控程序详解(适合对linux初级用户)2017-05-02 安装步骤: 1.zabbix需要安装LAMP架构 2.安装zabbix服务 3.初始化zabbix系统 1.安装环境:VMware虚拟 1 2 3 4 [[email protected] ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.1 (Maipo) [[email protected] ~]#

re.match re.search re.findall区别

re正则表达式里面,常用的三种方法的区别. re.macth和search匹配得到的是match对象,findall得到的是一个列表. match从字符串开头开始匹配,search返回与正则表达式匹配的第一个子串,findall则返回所有匹配到的. 如果要匹配的东西是字符串中唯一的只有一个或者直线那个取一个,最好不用findall,findall能匹配所有必然会查找整个字符串,search找到一个就结束查找了.废话不多说,选取一个页面源码大的网页,例如获取新浪网页的编码. #coding=utf