一、编译指令
1、进入项目工作目录
2、修改工程文件权限 chmod 777 -R ./(*)
3、更新环境变量
4、执行指令:lunch full_gxq6580_we_l-eng,选择工程名
5、编译工程指令:make -j8 2>&1 | tee build.log
6、若要编译模块,则使用
7、若要打包systemimage
注:若开启一个新的终端,一定要首先运行3、4指令,然后再使用其他指令
二、adb的使用
1、把adb_usb.ini文件放在隐藏目录.android下;
2、使用如下指令开启adb
3、使用adb push 指令时,需要在指令前加sudo,如:
更多常用ADB使用指令可以参考之前的博客:容易忽略的ADB命令(持续更新中)
三:framework下添加资源
Android5.1现在不能向目录framework/base/corre/res下添加资源,若要添加请添加到vendor/mediatek/proprietary/frameworks/base/res目录,然后在framework中就可以访问了,下面以添加default_lockscreen_wallpaper.jpg为例,说明如何添加资源;
例如:添加default_lockscreen_wallpaper.jpg图片
1、把图片放在vendor/mediatek/proprietary/frameworks/base/res/res/drawable-xhdpi目录下
2、注册资源id,有两种方法
四:添加APK应用
五:宏控制的路径
六:解决问题:默认为usb选项为MTP存储(U730)
涉及文件:
device/gxq/gxq6580_we_l/system.prop
device/gxq/gxq6580_weg_l/system.prop
packages/apps/Settings/src/com/mediatek/settings/deviceinfo/UsbSettingsExts.java
七:解决问题:修改音频参数
涉及文件:
vendor/mediatek/proprietary/custom/common/cgen/cfgdefault/audio_ver1_volume_custom_default.h
vendor/mediatek/proprietary/custom/gxq6580_we_l/cgen/inc/Custom_NvRam_LID.h
八:解决问题: 蓝牙随机生成地址(下载或者恢复工厂后,第一次打开蓝牙时随机生成一个地址,其他情况不会随机生成地址)
涉及文件:
vendor/mediatek/proprietary/external/nvram/libcustom_nvram/CFG_file_info.c
九:解决问题:充电显示100%的时候,仍然还在充电的问题
涉及文件:
kernel-3.10/drivers/power/mediatek/battery_common.c
十:解决问题: 开机led灯不亮
涉及文件:
device/mediatek/common/sepolicy/file.te
device/mediatek/common/sepolicy/file_contexts
device/mediatek/common/sepolicy/platform_app.te
device/mediatek/common/sepolicy/property.te
device/mediatek/common/sepolicy/property_contexts
device/mediatek/common/sepolicy/radio.te
device/mediatek/common/sepolicy/surfaceflinger.te
device/mediatek/common/sepolicy/system_app.te
external/sepolicy/bootled.te
十一:关机充电路径
十二:在3G网络下,信号强度0为<=-109dbm,1为<-103,2为<-97,3为<-89,4为>=-89(U560)
十三:相应模块状态栏颜色的改变(Android 5.0 以上系统)
十四:解决问题:添加自动生成imei
涉及文件:
device/gxq/gxq6580_we_l/ProjectConfig.mk
device/gxq/gxq6580_weg_l/ProjectConfig.mk
device/mediatek/common/sepolicy/radio.te
device/mediatek/mt6580/device.mk
vendor/mediatek/proprietary/packages/apps/EngineerMode/AndroidManifest.xml
vendor/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/DefaultImeiOperation.java
vendor/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/EngineerModeReceiver.java
vendor/mediatek/proprietary/packages/apps/EngineerMode/src/com/mediatek/engineermode/GPRS.java
十五:修改APN参数
十六:Android.mk 详解
十七:查看屏幕的分辨率
十八:自动生成IMIE 号
十九:system分区大小修改(U1652H)
二十:验证自适应(内置虚拟键)
二十一:ADB常用的命令
二十二:android Material Design 动画效果
二十三:SettingsProvider默认值
<integer name="def_screen_off_timeout">60000</integer>设置关屏超时时间的默认值 1min
<integer name="def_screen_brightness">102</integer> 设置亮度的默认值
<bool name="def_install_non_market_apps">false</bool>设置是否允许安装非Market应用程序的默认值
这些设置的默认值都是由frameworks中的SettingsProvider从数据库中读取的frameworks/base/packages/SettingsProvider/res/values/defaults.xml这个文件就是用来存储
二十四:修改屏幕锁:
(1)
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<integer name="def_screen_off_timeout">60000</integer>
60000改成想要的时间如果是不锁为-1
(2)
frameworks/policies/base/phone/com/android/internal/policy/impl/KeyguardViewMediator.java
private boolean mExternallyEnabled = true;
将其修改成false
这样更改就不会再进入休眠状态了
二十五:联系人 数据库常用字段
numberString = cursor.getString(cursor.getColumnIndex(Phone.NUMBER));//联系人号码
nameString = cursor.getString(cursor.getColumnIndex(Phone.DISPLAY_NAME));//联系人的姓名
tiemsContact = cursor.getString(cursor.getColumnIndex(Phone.TIMES_CONTACTED));//与改联系人联系的次数
lasttime = cursor.getString(cursor.getColumnIndex(Phone.LAST_TIME_CONTACTED));//最后联系的时间
statrred = cursor.getString(cursor.getColumnIndex(Phone.STARRED));//是否是常用联系人(是否被收藏) 是(1),否(0)
isvisible = cursor.getString(cursor.getColumnIndex(Phone.IN_VISIBLE_GROUP));//这个联系人在UI中是否可见; 是(1),否(0)
hasphonenumber = cursor.getString(cursor.getColumnIndex(Phone.HAS_PHONE_NUMBER));//该联系人否至少有一个手机号码; 是(1),否(0)
customringtone = cursor.getString(cursor.getColumnIndex(Phone.CUSTOM_RINGTONE));//与联系人相关的铃声 无则返回null
photoid = cursor.getString(cursor.getColumnIndex(Phone.PHOTO_ID));//是否含有图片()<code></code>
二十六:判断是否存在SD卡
boolean sdExist = android.os.Environment.MEDIA_MOUNTED.equals(android.os.Environment.getExternalStorageState());
if(!sdExist){//如果不存在,
Log.e("SD卡管理:", "SD卡不存在,请加载SD卡");
return null;
}
二十七:修改系统默认音量
MTK 系列,在 frameworks---base--\media\java\android\media\AudioService.java这个文件夹下, 然后修改DEFAULT_STREAM_VOLUME 这个数组的一些参数值即可。
二十八:修改系统 默认的休眠时间
系统默认的休眠时间是15S,那么我现在要修改为1min怎么去修改:
<integer name="def_screen_off_timeout">60000</integer> //之前是-1 改成自己想要的时间即可,时间毫秒为单位
二十九:修改系统默认时间
路径:/vendor/mediatek/proprietary/frameworks/base/res/res/values/config.xml 其中里面有一项
<!-- default year for first power on-->
<integer name="default_restore_year">2016</integer> //系统默认的是2015
三十:判断是否插入双卡:
List<SimInfoManager.SimInfoRecord> simInfos = SIMHelper.getSIMInfoList(mContext);
simInfos.size() == 2
三十一:判断卡槽1卡槽2是否插卡
ITelephonyEx mTelephonyEx = ITelephonyEx.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICEEX));
boolean Sim1Exist = mTelephonyEx.hasIccCard(PhoneConstants.GEMINI_SIM_1);
boolean Sim2Exist = mTelephonyEx.hasIccCard(PhoneConstants.GEMINI_SIM_2);
三十二:开机sim卡提示框的位置mediatek/packages/apps/Stk1/res/layout/stk_msg_dialog.xml其中一般需要改的是dialog_message的字体颜色
三十三:开机等待sim卡提示弹出框位置
mediatek/packages/apps/OOBE
三十四:低电量弹出框风格
frameworks/base/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
风格控制AlertDialog.Builder b = new AlertDialog.Builder(mContext,3);
三十五: 在3G网络下,信号强度的修改
在3G网络下,信号强度的修改 0为<=-109dbm,1为<-103,2为<-97,3为<-89,4为>=-89
修改 路径:vendor/mediatek/proprietary/frameworks/base/packages/FwkPlugin/src/com/mediatek/op/telephony/DefaultServiceStateExt.java
三十六:修改APN参数
修改路径: vendor/mediatek/proprietary/frameworks/base/telephony/etc/apns-conf.xml.
三十七:第三方监听系统音乐的方法
在需要的地方添加:
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
mProxy.getContext().sendBroadcast(i);
在系统音乐播放器中有固定的广播接受:
private static final String SERVICECMD = "com.android.music.musicservicecommand";
private static final String CMDNAME = "command";
/* private static final String CMDTOGGLEPAUSE = "togglepause";
private static final String CMDSTOP = "stop";*/
private static final String CMDPAUSE = "pause";
private static final String CMDPLAY = "play";
private static final String CMDPREVIOUS = "previous";
private static final String CMDNEXT = "next";
public void click(View v){
Intent intent = new Intent(SERVICECMD);
switch(v.getId()){
case R.id.pre:{
intent.putExtra(CMDNAME, CMDPREVIOUS);
}break;
case R.id.play:{
if(playing){
intent.putExtra(CMDNAME,CMDPAUSE);
((ImageView)findViewById(R.id.play)).setImageResource(R.drawable.music_play);
}else{
intent.putExtra(CMDNAME,CMDPLAY);
((ImageView)findViewById(R.id.play)).setImageResource(R.drawable.music_pause);
}
}break;
case R.id.next:{
intent.putExtra(CMDNAME,CMDNEXT);
}break;
}
sendBroadcast(intent);
}
三十八:持续更新中...