您的位置:首页 > 移动开发 > Android开发

Android系统应用开发(一)原稿

2016-09-10 17:18 295 查看
z杂项
1,SDK路径:C:\Program Files (x86)\Android\android-sdk
2,exit 退出shell环境
3,make后system.img位置  :Z:\myandroid\out\target\product\evk_6sl_eink\system.img
4,查找 grep "adb _active" -r 递归查找字符串


//系统原来的settings
adb push Z:\Settings.apk system/priv-app/


//系统签名  说明 javaapk.com_lockScreen_sliding.apk:要签名的apk名字 lockScreen.apk:签名后生成的apk的名字
1,复制Z:\myandroid\device\fsl\common\security下的platform.pk8和platform.x509.pem到某个文件夹下名称假如M文件夹
2,复制你要签名的apk到M文件夹下
3,自带的签名工具signapk.jar:由......\android_project\out/host\linux-x86\framework/中找到,复制放到M文件夹下
4,执行命令 java -jar signapk.jar platform.x509.pem platform.pk8 javaapk.com_lockScreen_sliding.apk lockScreen.apk
5,lockScreen.apk就是签名后的apk,可以安装到设备上了
6,adb push F:\eclipse导出的apk\META-INF\lockScreen.apk system/priv-app/
7,logcat -s lockScreen

//删除系统app
1,adb remount
2.adb root
3.adb shell
4.rm -rf system\priv-app\lock.apk


账号登陆
1,devel
2,user:test
3, pass:test123456


编译及push
1, 在myandroid 下执行 . ./build/envsetup
2, lunch 选择17
3, 进入 package/apps/Setting/
4, mm (改变资源文件用mm -B)编译
5,adb root
6, adb remount
7,adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\priv-app\Settings.apk system/priv-app/


<------------------------------------------------------framework---改完重启----adb reboot-------------------------------------------------------------->
-----------------------------systemUI------------------------
修改状态栏背景,时钟数字颜色
1,systemUI 位置:Z:\myandroid\frameworks\base\packages\SystemUI
2,adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\priv-app\SystemUI.apk system/priv-app/(windows下)
adb push out/target/product/evk_6sl_eink/system/priv-app/SystemUI.apk system/priv-app/(linux下)


                           -------------------------通知栏USB的广播---------------------------------------
位置:Z:\myandroid\frameworks\base\core\res\res\values-zh-rCN
1,在Z:\myandroid\frameworks\base\core\res\下编译生成framework-res.apk
2,adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\framework-res.apk /system/framework/


               -----------------------------启动app的theme-----Z:\myandroid\frameworks\base\core\res\res\values\themes-------------------
1,位置:Z:\myandroid\frameworks\base\core\res\res\values\themes
2,adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\framework-res.apk /system/framework/


 -----------------------------启动app的theme-----Z:\myandroid\frameworks\base\core\res\res\values\themes-------------------
1, adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\framework.jar /system/framework/
3, adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\framework2.jar /system/framework/
4, adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\ext.jar /system/framework/


-----------------------------关机背景-----Z:\myandroid\frameworks\base\services\java\com\android\server\ShoutDownActivity-------------------
关机的线程,Z:\myandroid\frameworks\base\services\java\com\android\server\power\ShutdownThread.java
关机的activity  Z:\myandroid\frameworks\base\services\java\com\android\server\ShoutDownActivity
1, adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\services.jar /system/framework/


--------------------------------------------------(一)屏蔽通知栏下拉 ------------------------------------------------------------------------
 在Z:\myandroid\frameworks\base\core\java\android\app\StatusBarManager.java  public static final int DISABLE_EXPAND = 0x00000001;
public static final int DISABLE_NOTIFICATION_ICONS = 0x00000002;
public static final int DISABLE_NOTIFICATION_ALERTS = 0x00000004;
public static final int DISABLE_NOTIFICATION_TICKER = 0x00000008;
public static final int DISABLE_NONE = 0x00000000;
将what换成以上5个中的任意一个
public void disable(int what) {
try {
mService.disable(what(DISABLE_EXPAND , mToken, mContext.getPackageName());
} catch (RemoteException ex) {
// system process is dead anyway.
throw new RuntimeException(ex);
}
}

----------------------------------wifi对话框布局------------:\myandroid\packages\apps\Settings\res\layout\wifi_dialog.xml-------------------

----------------------------------导航栏(back ,menu,home)------------:Z:\myandroid\frameworks\base\packages\SystemUI\res\layout\Navigation_bar.xml-------------------

----------------------------------输入法------------:Z:\myandroid\packages\inputmethods\PinyinIME-------------------
1,Z:\myandroid\packages\inputmethods\PinyinIME\res\xml\skb_template1
color="@color/label_color"  label_color :输入法按键上显示的字体颜色


Z:\myandroid\packages\inputmethods\PinyinIME\src\com\android\inputmethod\pinyin\XmlKeyboardLoader.java

1,键盘图标有2套,一套      private static final String XMLATTR_KEY_ICON = "icon";

              另一套     private static final String XMLATTR_KEY_ICON = "icon_popup";

2,改变按键的图标

Z:\myandroid\packages\inputmethods\PinyinIME\res\xml\skb_template1  normal_key_bg

改这个图片就可以了

但是“,”和"123"二个键是图片用的 light_key_bg改变这个图片就可以

3,屏蔽输入法的冒泡

  public void delayedShow(long delay, int locationInParent[]) {

      /*  if (mBalloonTimer.isPending()) {

            mBalloonTimer.removeTimer();

        }

        if (delay <= 0) {

            mParent.getLocationInWindow(mParentLocationInWindow);

            showAtLocation(mParent, Gravity.LEFT | Gravity.TOP,

                    locationInParent[0], locationInParent[1]

                            + mParentLocationInWindow[1]);

        } else {

            mBalloonTimer.startTimer(delay, BalloonTimer.ACTION_SHOW,

                    locationInParent, -1, -1);

        }*/

    }

Z:\myandroid\packages\inputmethods\PinyinIME\src\com\android\inputmethod\pinyin\BalloonHint.java

adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\app\PinyinIME.apk system/app/

adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\lib\libjni_pinyinime.so system/lib/

修改默认的输入法为拼音输入法:
设置默认输入法为google拼音
\frameworks\base\packages\SettingsProvider\res\values\defaults.xml
<!-- wdh add -->
<string name="config_default_input_method" translatable="false">com.android.inputmethod.pinyin/.PinyinIME</string>

\frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java
private void loadSecureSettings(SQLiteDatabase db)
//wdh add
loadStringSetting( stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
R.string.config_default_input_method );
adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\priv-app\SettingsProvider.apk /system/priv-app/


----------------------------------屏蔽home键-------------------

1,Z:\myandroid\frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindow.java下的 
// If we have released the home key, and didn't do anything else
// while it was pressed, then it is time to go home!
if (!down) {
cancelPreloadRecentApps();

mHomePressed = false;
if (mHomeConsumed) {
mHomeConsumed = false;
return -1;
}

if (canceled) {
Log.i(TAG, "Ignoring HOME; event canceled.");
return -1;
}

// If an incoming call is ringing, HOME is totally disabled.
// (The user is already on the InCallScreen at this point,
// and his ONLY options are to answer or reject the call.)
try {
ITelephony telephonyService = getTelephonyService();
if (telephonyService != null && telephonyService.isRinging()) {
Log.i(TAG, "Ignoring HOME; there's a ringing incoming call.");
return -1;
}
} catch (RemoteException ex) {
Log.w(TAG, "RemoteException from getPhoneInterface()", ex);
}

// Delay handling home if a double-tap is possible.
if (mDoubleTapOnHomeBehavior != DOUBLE_TAP_HOME_NOTHING) {
mHandler.removeCallbacks(mHomeDoubleTapTimeoutRunnable); // just in case
mHomeDoubleTapPending = true;
mHandler.postDelayed(mHomeDoubleTapTimeoutRunnable,
ViewConfiguration.getDoubleTapTimeout());
return -1;
}

// Go home! wdh add
// launchHomeFromHotKey();
return 0;
}
注释掉原来的锁屏app,return 0让上层处理


---------------------------------------------------------------------------------系统"xxx已停止运行"的对话框样式---------------------------------------------------------

1,代码位置: AppErrorDialog AppErrorDialog extends BaseErrorDialog系统"xxx已停止运行"的对话框

---------------------------------------------------------------------------------屏蔽通知栏,下拉刷新---------------------------

1,文件位置Z:\myandroid\frameworks\base\packages\SystemUI\src\com\Android\systemui\statusbar\phone\PanelView.Java
1,首先屏蔽通知栏,
在  public void setExpandedHeightInternal(float h) {
h = 0;//这个是通知栏下拉的高度,设置为0就不显示,不影响下拉动作的监听
if (Float.isNaN(h)) {
// If a NaN gets in here, it will freeze the Animators.
if (DEBUG_NAN) {
Log.v(TAG, "setExpandedHeightInternal: warning: h=NaN, using 0 instead",
new Throwable());
}
h = 0;
}

2,                        case MotionEvent.ACTION_UP:
Log.i("PanelView", "MotionEvent.ACTION_UP");//在up时添加自己要做的事
Intent intent = new Intent();
intent.setAction("RefreshView");
getContext().sendBroadcast(intent);


---------------------------------------------------------------------------------长按home键----------------------------

1,Z:\myandroid\frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java
adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\framework\android.policy.jar system/framework/


----------------------------------------------------------------------------------去掉导航栏----------------------------

隐藏 导航栏  frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
boolean showNav = mWindowManagerService.hasNavigationBar();
添加 showNav = false;


----------------------------------------------------------------------------------去掉系统锁屏----------------------------

Z:\myandroid\frameworks\base\packages\Keyguard\

 private boolean mExternallyEnabled = true;(false去掉)

adb push Z:\myandroid\out\target\product\evk_6sl_eink\system\priv-app\Keyguard.apk system/priv-app/

-----------------------------------------------------------OTA升级测试----------------------------

1,代码位置Z:\myandroid\packages\apps\fsl_imx_demo\FSLOta

2,adb install -r Z:\myandroid\out\target\product\evk_6sl_eink\system\app\FSLOta.apk system/app/

3,adb shell am start -n com.fsl.android.ota/com.fsl.android.ota.OtaAppActivity

----------------------------------------被动学习黑屏原因---------------可能是我framework那里改的有问题--------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: