Android优化技艺
1、去掉锁屏功能:
1)、在frameworks/base/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java修改:
-------------------------------------------
/**
* External apps (like the phone app) can tell us to disable the keygaurd.
*/
private boolean mExternallyEnabled = true;
-------------------------------------------
private boolean mExternallyEnabled = false;
-------------------------------------------
如果采用这种方法,那么在应用程序中仍然可以通过setKeyguardEnabled方法来启动锁屏,
2)、设置默认锁屏时间:
-----------------------------------
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
private void loadSystemSettings(SQLiteDatabase db) {
loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,
R.integer.def_screen_off_timeout);
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<integer name="def_screen_off_timeout">60000</integer>
-----------------------------------
可以修改<integer name="def_screen_off_timeout">60000</integer>的数值为-1,它是以毫秒为单位,重新编译Setting Provider模块。
但是虽然改成-1,启动后依旧会进入锁屏状态,解锁之后就再也不会锁屏了。
因此在这里这种方法不可取。
3)、如果1和2两种方法结合,就不会启动锁屏了。
2、如何去掉状态栏的电池图标:
1)、在/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java中加入
import android.view.View;
修改
----------------
public BatteryController(Context context) {
mContext = context;
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
context.registerReceiver(this, filter);
}
---------------
public BatteryController(Context context) {
mContext = context;
IntentFilter filter = new IntentFilter();
// filter.addAction(Intent.ACTION_BATTERY_CHANGED);
context.registerReceiver(this, filter);
}
----------------
修改
----------------
public void addIconView(ImageView v) {
mIconViews.add(v);
}
-----------------
public void addIconView(ImageView v) {
v.setVisibility(View.GONE);
mIconViews.add(v);
}
-----------------
修改
-----------------
public void addLabelView(TextView v) {
mLabelViews.add(v);
}
-----------------
public void addLabelView(TextView v) {
v.setVisibility(View.GONE);
mLabelViews.add(v);
}
-----------------
3、去掉状态栏的方法:把/system/app/下的SystemUI.apk删掉就可以了。
4、修改 dalvik/vm/analysis/DexPrepare.cpp
<pre>
1326 if (memcmp(signature, ptr, kSHA1DigestLen) != 0) {
1327 LOGI("DexOpt:mismatch dep signature for '%s'", cacheFileName);
1328 // goto bail;
1329 }
</pre>
可以解决不同环境下编译的APK不兼容的问题;
当重新编译Android时,必须重新编译APK,如果还是用原来环境下编译的就会出现mismatch dep signature的问题;