Android系統Framework定製預設值預置修改
- 1. 配置SELinux許可權
SELinux(或SEAndroid)主要將app劃分為三種類型(根據user不同,也有其他的domain型別):
1)untrusted_app 第三方app,沒有android平臺簽名,沒有system許可權
2)platform_app 有android平臺簽名,沒有system許可權
3)system_app 有android平臺簽名和system許可權
從上面劃分,許可權等級,理論上:untrusted_app < platform_app < system_app
TE介紹:
allow netd proc:file write
這條語句的語法為:
allow:TE的allow語句,表示授權。除了allow之外,還有allowaudit、dontaudit、neverallow等。
netd:source type。也叫subject,domain。
proc:target type。它代表其後的file所對應的Type。
file:代表Object Class。它代表能夠給subject操作的一類東西。例如File、Dir、socket等。在Android系統中,有一個其他Linux系統沒有的Object Class,那就是Binder。
write:在該類 Object Class中所定義的操作。
根據SELinux規範,完整的allow相關的語句格式為:
rule_name source_type target_type : class perm_set
我們直接來看幾個例項:
[例子3]
//SEAndroid中的安全策略檔案policy.conf
#允許zygote域中的程序向init type的程序(Object Class為process)傳送sigchld訊號
allow zygote init:process sigchld;
#允許zygote域中的程序search 或getattr型別為appdomain的目錄。注意,多個perm_set
#可用{}括起來
allow zygote appdomain:dir { getattr search };
#來個複雜點的:
#source_type為unconfineddomain target_type為一組type,由
#{ fs_type dev_type file_type }構成。object_class也包含兩個,為{ chr_file file }
#perm_set語法比較奇特,前面有一個~號。它表示除了{entrypoint relabelto}之外,{chr_file #file}這兩個object_class所擁有的其他操作
allow unconfineddomain {fs_type dev_type file_type}:{ chr_file file } \
~{entrypoint relabelto};
#特殊符號除了~外,還有-號和*號,其中:
# 1):-號表示去除某項內容。
# 2):*號表示所有內容。
#下面這條語句中,source_type為屬於appdomain,但不屬於unconfinedomain的程序。
#而 *表示所有和capability2相關的許可權
#neverallow:表示絕不允許。
neverallow { appdomain -unconfineddomain } self:capability2 *;
type的定義:
type命令的完整格式為:type type_id [alias alias_id,] [attribute_id]
其中,方括號中的內容為可選。alias指定了type的別名,可以指定多個別名
/device/qcom/sepolicy/common/
1 file.te 定義 sysfs_brightness
type sysfs_brightness, sysfs_type, fs_type;
2 file_comtexts 配置sysfs_brightness
/sys/class/leds/lcd-backlight/brightness u:object_r:sysfs_brightness:s0
3 app.te 配置許可權
allow appdomain sysfs_brightness:file rw_file_perms;
4 system_app.te 配置許可權
allow system_app sysfs_brightness:file rw_file_perms;
- 5. 預設設定第三方輸入法
framework/base/packages/SettingsProvider/res/values/customize.xml
<string name="def_enable_input_methods" translatable="false">com.baidu.input/.ImeAppMainActivity</string>
百度:com.baidu.input/.ImeService
訊飛:com.iflytek.inputmethod/.FlyIME
騰訊:com.tencent.qqpinyin/.QQPYInputMethodService
谷歌:com.google.android.inputmethod.pinyin/.PinyinIME
搜狗:com.sohu.inputmethod.sogou/.SogouIME
觸寶:com.cootek.smartinput5/.TouchPalIME
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#Module name should match apk name to be installed
LOCAL_MODULE := baiduinput
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MULTILIB:=32
LOCAL_PREBUILT_JNI_LIBS:= \
@lib/armeabi/libbdEASRAndroid.so \
@lib/armeabi/libbdEASRAndroid.v1.8.8.so \
@lib/armeabi/libbdinput_gif_v1_0_10.so \
@lib/armeabi/libBDVoiceRecognitionClient_MFE_V1.so \
@lib/armeabi/libchiperencoder_v1_2_1.so \
@lib/armeabi/libprocmoi_v1_4.so \
@lib/armeabi/libprocmox_v1_4.so
include $(BUILD_PREBUILT)
#LOCAL_PRIVILEGED_MODULE := true
#LOCAL_OVERRIDES_PACKAGES := Home
- 6. Android4.4之後配置應用寫入簡訊許可權
framework/opt/telephony/*/SmsApplication.java
getDefaultSmsApplicationPackageName()
參考BLUETOOTH_PACKAGE_NAME新增USERCENTER_PACKAGE_NAME
- 設定撥號盤暗碼
com.android.dialer.SpecialCharSequenceMgr.java
參考MMI_IMEI_DISPLAY,handleDeviceIdDisplay()
- 7. app預設許可權授予
frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java
- 8. 新增全域性變數開關(三種方式)
1. android.provider.Settings.System.getInt(getContentResolver(),"test", 0);
android.provider.Settings.System.putInt(getContentResolver(),"test", 1);
Settings有System Global Secure
2.1 定義: ./frameworks/base/core/res/res/values/symbols.xml:
<java-symbol type="bool" name="config_sms_ringtone_incall" />
2.2 定義: ./frameworks/base/core/res/res/values/config.xml:
<bool name="config_sms_ringtone_incall">true</bool>
讀取:
context.getResources().getBoolean(com.android.internal.R.bool.config_sms_ringtone_incall)
3.system.prop中新增:
tinno_gms_able = false
使用:
import android.os.SystemProperties;
SystemProperties.getBoolean("tinno_gms_able", false);
system.prop生成的位置
out/target/product/l5261/system/build.prop
對屬性的讀寫操作
adb shell getprop key
adb shell setprop key value (eng版本)
- 9. 編譯中預拷貝檔案或資料夾
/device/qucii/qucii8976v3_64/qucii8976v3_64.mk:
配置檔案的拷貝路徑:
PRODUCT_COPY_FILES += device/qucii/qucii8976v3_64/Homecare_Chinese_93sec_color.mp4:system/media/Homecare_Chinese_93sec_color.mp4
配置資料夾拷貝路徑:
PRODUCT_COPY_FILES += $(call find-copy-subdir-files,*,vendor/qcom/proprietary/Tone,storage/emulated/0/Tone)
或:
$(shell mkdir -p ${OUT}"/system/etc/")原始碼編譯的時候,先讀取該mk檔案,該目錄還沒建立,所以要建一個,否則拷貝失敗。
$(shell cp -rf $(LOCAL_PATH)/usb_modeswitch.d ${OUT)}"/system/etc/"),然後通過shell拷貝任意檔案。
注意:
如果拷貝的是apk檔案,可能會報錯:
原因是build/core/Makefile中做了檢測,註釋build/core/Makefile中的define check-product-copy-file函式即可
- 10. 預設勾選 未知來源
<bool name="def_install_non_market_apps">false</bool>
- 11. 修改系統預設值(WiFi,藍芽初始開關);預設鈴聲, 通知, 鬧鐘, 音樂,字型
1. framework/base/packages/SettingsProvider/res/values/defaults.xml
2. 可以在system.prop 分別配置
ro.config.ringtone=Playa.ogg (預設鈴聲設定,檔案在/system/media/audio/ringtones 把喜歡的鈴聲放這裡,比如123.MP3放入ringtones資料夾中,這裡程式碼改為ro.config.ringtone=123.mp3)
ro.config.notification_sound=regulus.ogg (預設提示音,檔案在/system/media/audio/notifications 修改方法同上)
ro.config.alarm_alert=Alarm_Beep_03.ogg (預設鬧鈴,檔案在/system/media/audio/alarms 修改方法同上)
3.預設字型:
public void readFontSizePreference(ListPreference pref) {
ActivityManagerNative.getDefault().getConfiguration()
系統的Configuration是從ActivityManagerService設定的:
<\frameworks\base\services\java\com\android\server\am\ActivityManagerService.java>
mConfiguration.setToDefaults();
fontScale = Float.parseFloat(SystemProperties.get("ro.fontScale","1"));
- 11. 設定-->開發者選項--修改後臺程序限制
frameworks/base/services/java/com/android/server$ vi ./am/ActivityManagerService.java
把int mProcessLimitOverride = -1;改成4(不得超過4個程序)
標準限制 對應 -1
不允許後臺程序 對應 0
不得超過1個程序 對應 1
不得超過2個程序 對應 2
不得超過3個程序 對應 3
- 11.預設不要鎖屏,設定-安全--螢幕鎖定 (無)
overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml <bool name="def_lockscreen_disabled">true</bool>
- 12. 修改預設字型
2.1 在4.1上修改預設字型大小:
比如改成大:
<frameworks\base\packages\SettingsProvider\res\values\defaults.xml>
<fraction name="def_font_scale">115%</fraction>
修改預設(Settting.apk 中選項預設值一般存在於 frameworks\base\packages\SettingsProvider\res\values\defaults.xml)
- 13. 獲取正在播放音樂app包名
// com.android.server.audio.AudioService callingPackageName為當前獲取焦點app包名
public int requestAudioFocus(AudioAttributes aa, int durationHint, IBinder cb,
IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags,
IAudioPolicyCallback pcb) {
}
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audio.isMusicActive() // 判斷是否有音樂播放
- 14.如何將非系統app預置到Doze的白名單中
1.在framework/base/data下建立data目錄
2.在framework/base/data/data下建立deviceidle.xml 然後把白名單app按以下格式寫入
deviceidle.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<config>
<wl n="com.tencent.mm" />
<wl n="com.tencent.mobileqq" />
</config>
3.在framework/base/data/data下建立Android.mk檔案
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := deviceidle.xml
LOCAL_MODULE_CLASS := DATA
# This will install the file in /data/system
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/system
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
3.定義deviceidle.xml在 build/target/product/base.mk中
PRODUCT_PACKAGES += \
...
monkey \
mtpd \
ndc \
netd \
ping \
ping6 \
platform.xml \
deviceidle.xml \
pppd \
pm \
...
相關推薦
Android系統Framework定製預設值預置修改
1. 配置SELinux許可權SELinux(或SEAndroid)主要將app劃分為三種類型(根據user不同,也有其他的domain型別):1)untrusted_app 第三方app,沒有android平臺簽名,沒有system許可權 2)platform_app
Android系統移植與除錯之-------)如何修改Android系統預設顯示
1、首先解決【設定】介面預設顯示【開發者選項】的問題 檢視原始碼:packages/apps/Settings/src/com/android/settings/SettingsActivity.java 在updateTilesList(List target)方法中,可以找到【開發
mysql 日期預設系統時間 mysql 預設值不支援函式
由於MySQL目前欄位的預設值不支援函式,所以以 create_time datetime default now() 的形式設定預設值是不可能的。 代替的方案是使用TIMESTAMP型別代替DATETIME型別。 TIMESTAMP列型別自動
Win10 64 位系統環境變數預設值
使用者變數 Path: %USERPROFILE%\AppData\Local\Microsoft\WindowsApps; TEMP: %USERPROFILE%\AppData\Local\Temp TMP: %USERPROFILE%\AppData\Loca
Android系統應用開發(六)Android framework系統預設設定修改
launcher 總結: 1、launcher的佈局太居中,要想兩邊拉伸 <\packages\apps\Launcher2\res\values\dimens.xml> <dimen name="apps_customize_pageLayo
Android系統設定預設值大全
一、是否有預設值 在尋找一個開關的預設值時,首先要明白一點,該開關是否存在預設值,以及該開關狀態是否有狀態儲存(一般狀態儲存在settings的db中)。 判斷條件: 在reboot(重啟)之後開關狀態仍舊儲存或者是在reset(恢復出廠設定)之後開關狀態恢復到預設的,才能找到預設值。
修改Android系統預設時間
一 : 修改Android系統預設時間 原始碼路徑:frameworks/base/services/java/com/android/server/SystemServer.java 主要變數EARLIEST_SUPPORTED_TIME // The earliest suppo
Android系統修改預設鈴聲
Andriod手機的鈴聲預設儲存在system/media/audio/下面,有四個資料夾,分別是alarms,notifications,ringtones,ui。對應鬧鐘、通知、鈴聲、UI音效。root的手機可以直接替換修改相應目錄下的檔案來修改鈴聲。那這些聲音是從哪裡來的呢。由於需要修改預設的
Android中如何修改編譯的資源ID值(預設值是0x7F...可以隨意改成0x02~0x7E)
一、技術準備今天我們來看一下如何修改Android中編譯時的資源Id的值,在講解這內容之前,我們需要先了解一下Android中的資源編譯之後的結構和編譯過程,這裡就不多說了,具體可以檢視這篇文章:這篇文章中,介紹瞭如何解析Android中編譯之後的resource.arsc檔
[sg] Android 6.0 修改系統預設時區和修改12小時製為24小時制
修改預設時區 在最終編譯出的配置檔案build.prop增加屬性 persist.sys.timezone=Asia/Shanghai (我這裡預設選擇東八區上海,其他對應的時區在frameworks\base\core\res\res\xml\time_z
Android系統Setting預設引數修改
在定製系統中,通常需要修改Settings預設設定來達到需求的目的。而Settings相關資料庫操作的包位於framework/base/packages/SetingsProvider 修改Settings資料庫的預設值(準確點說是第一次開機後的值) ,對應
Android O 修改開發者選項中動畫縮放的預設值
frameworks/base/core/res/res/values/config.xml <item name="config_appTransitionAnimationDurationScaleDefault" format="float" type="di
Android系統預設輸入法的修改
1. frameworks\base\packages\SettingsProvider\res\values\defaults.xml 檔案中修改預設輸入法為搜狗輸入法 <stringname="config_default_input_metho
Android應用程式的預設最大記憶體值以及修改
Android應用程式的預設最大記憶體值為16M,不同的手機版本和型號有所不同. 有些應用程式可能會出現記憶體溢位,譬如: ERROR/AndroidRuntime(264): java.lang.OutOfMemoryError: bitmap size ex
Android 系統(69)---Android7.1.1系統設定預設值大全
判斷條件: 在reboot(重啟)之後開關狀態仍舊儲存或者是在reset(恢復出廠設定)之後開關狀態恢復到預設的,才能找到預設值。 在reboot之後開關狀態仍舊儲存的,表示狀態儲存在了db中。 在reset之後開關狀態恢復預設的,表示狀態有一個預設值。比如像wiif開關,藍芽開關,gps開關等,都有預設值,
【定製Android系統】Android O 預設允許應用彈窗申請許可權
需求:Android 應用在 6.0 以後?就需要動態申請許可權了,那些寫在 AndroidManifest.xml 中的許可權在應用執行時會彈窗申請。如果應用跑在不方便與終端使用者做互動的場景,例如攝像頭等,或者單純地不希望應用再彈窗申請許可權,而是預設授予應
如何修改Android系統的預設亮度
調整系統預設亮度,我們只需要修改frameworks\base\packages\SettingsProvider\res\values\defaults.xml檔案中的def_screen_brightness值。 修改之前 <integer name="
Android系統專案預設設定和framework系統預設設定
一、專案預設設定和framework系統預設設定的內容是一樣的。 1、最新framework系統預設設定一般預設位置:frameworks\base\packages\SettingsProvider\res\values\defaults.xml。 2、最新專
android系統預設值的設定
1開機圖片: android-logo-mask.png android-logo-shine.png 這兩個圖片一個在上一個在下 ./out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_
手把手教你深度定製tiny4412安卓5.0系統(一)---開發板如何預置檔案到android系統
想要預置檔案,首先要了解Android原始碼中device這個目,開啟這個目錄我們看到,這個目錄廠家會針對不同的開發板做一些修改:在這個目錄中,我們看到有不同的廠家定製的資訊,我們這款開發板是友善之壁提