【curl_init源码】【卖料程序源码】【手机端看源码】getprop 源码

2024-11-24 21:51:54 来源:山姆奶粉溯源码 分类:娱乐

1.getprop Դ??
2.MTK平台如何修改默认输入法

getprop 源码

getprop Դ??

       本文基于看雪论坛精华内容,由作者飞翔的猫咪探讨Android 属性系统的深层次理解,包括检测与反检测策略。这些属性在Android系统中扮演着设备信息和运行时配置的关键角色,对于改机和设备指纹收集至关重要。

       Android属性系统的curl_init源码基础构建在键值对上,每个属性都有类型(如string、int、bool),并由SELinux上下文保护。初始化和修改属性的过程涉及init进程通过mmap映射/dev/__properties__目录下的文件到进程的虚拟内存区域,以共享内存方式实现进程间通信。只有init进程能创建和修改属性,其他进程通过socket与init通信,而普通app受限于权限,无法直接操作。

       属性主要分为ro(只读)、卖料程序源码persist(持久化)、ctl(控制)和selinux.restorecon_recursive,各有不同的处理逻辑。为了提升效率,Android在文件格式设计上考虑了频繁获取的场景,并使用属性缓存机制,这对改机技术构成挑战。

       属性同步通过包装futex系统调用实现,手机端看源码getprop工具则用于获取属性值,提供参数选项以获取上下文和类型信息。属性的核心API在bionic libc的头文件中定义,需通过特定宏定义来正确包含。

       系统开发者倾向于通过预定义的接口使用属性,而非直接调用,如__system_property_set_value和__system_property_find等,它们分别用于设置和查找属性。蓝奏解析源码设置权限由selinux策略通过set_prop宏管理,如system_app域可设置特定属性。

       属性系统通过__system_property_read_callback和缓存机制提高效率,如CachedProperty.h文件中的函数。遍历属性和等待属性变化的功能分别由system_property_foreach和WaitForProperty实现。部分接口已废弃,但仍在部分框架代码中使用。

       总结来说,apache配置出现源码属性系统的核心是init进程管理和响应其他进程的通信请求,而普通app在权限和策略的限制下,操作受限。理解这些原理对于深入研究和安全定制Android系统至关重要。

MTK平台如何修改默认输入法

       如何修改默认输入法?

       一、适用于ICS(AndroidV4.0)之前的版本:

       1.安装需要用的默认输入法(.apk)到system/app

       2.修改文件frameworks/base/packages/SettingsProvider/res/values/defaults.xml

       <string name="default_input_method" translatable="false">默认输入法 ID

       </string>

       红色标记表示输入法 ID, 比如 PinyinIME 为: com.android.inputmethod.pinyin/.PinyinIME

       二、适用于ICS、JB、JB2、KK的版本:

       1.需要提前将用到的默认输入法(.apk)内置到系统中( 请参考如何将APK预置进系统)

       2.修改文件mediatek/config/${ Project}/ProjectConfig.mk

       将宏DEFAULT_INPUT_METHOD的值设置为所需的输入法;

       比如PinyinIME, 则设为:

       DEFAULT_INPUT_METHOD=com.android.inputmethod.pinyin.PinyinIME

       这个值是输入法源码中,包含InputMethodService子类的那个包名.实现InputMethodService的子类的类名。这里比log中打印的完整类名少一个"/",请注意

       补充说明:

       KK的版本不需要一下修改:

       上面的修改方法只适用于默认输入法为com.android.inputmethod.pinyin/.PinyinIME这种格式的输入

       法(即反斜杠后面就是类名的情况),对于com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME (即反斜杠后面是完整类名的情况),这种情况是不支持修改mediatek/config/${ Project}/ProjectConfig.mk里面DEFAULT_INPUT_METHOD的方法来设置默认输入法的。

       以com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME 为例

       请改用下面的方法修改,在SettingsProvider 的DatabaseHelper.java中

       有

       Log.i(TAG, "defaultIME : " + defaultIME);

       if (defaultIME != null) {

       StringBuffer strBuffer = new StringBuffer(defaultIME);

       int lastDotPos = defaultIME.lastIndexOf(".");

       String strInsert = "/";

       strBuffer.insert(lastDotPos, strInsert);

       loadSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,

       strBuffer.toString());

       } else {

       Log.i(TAG, "default IME from IMEFeatureOption is null!!");

       }

       请将默认的初始化部分code删除, 即将 下面的code都删除掉。

       Log.i(TAG, "defaultIME : " + defaultIME);

       if (defaultIME != null) {

       StringBuffer strBuffer = new StringBuffer(defaultIME);

       int lastDotPos = defaultIME.lastIndexOf(".");

       String strInsert = "/";

       strBuffer.insert(lastDotPos, strInsert);

       loadSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,

       strBuffer.toString());

       } else {

       Log.i(TAG, "default IME from IMEFeatureOption is null!!");

       }

       然后在删除的后面添加

       loadSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,

       "com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME");//这里修改默认选中的输入法

       三、适用于L, M的版本

       请在APK正确预置的前提下,再修改如下:

       在InputMethodManagerService的systemRunning()函数, if (!mImeSelectedOnBoot) 的分支中修改如下

       if (!mImeSelectedOnBoot) {

       Slog.w(TAG, "Reset the default IME as \"Resource\" is ready here.");

       // String preInstalledImeName = SystemProperties.get("ro.mtk_default_ime");

       String preInstalledImeName = "第三方输入法的完整包名ID";

       或者直接修改build.prog中的ro.mtk_default_ime属性值,也可在system.prog中增加此属性值。只要修改完后, adb shell getprop ro.mtk_default_ime能获取到正确的预置输入法ID即可。

       MTK平台如何修改默认输入法如果按照如上的步骤没有修改成功,请参考如下步骤进行检查修改:

       (1)检查是否成功预置输入法:FAQ

       (2)检查下setting-- language&input 界面,该输入法前面的勾是否选上,没有选上说明此输入法没有被enable,请参考FAQ来enable;

       (3)检查是否发生语言切换,如果有切换则会恢复默认输入法,若不想因语言变化导致恢复,请参考FAQ,FAQ

       (4)修改默认输入法FAQ

       这个解决方法是在闯客技术论坛转的,如果解决不了你可以去提问。

本文地址:http://5o.net.cn/news/52c240797540.html 欢迎转发