Android系統應用開發(一)原稿

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那裏改的有問題--------
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章