android5.1 태블릿이나 핸드폰 응용층에서 자주 사용하는 수정 항목(eg:MTK8163)
1. 그래서 시스템 응용이 있는 디렉터리:
\alps\packages\apps
2. 일부 시스템 속성의 정의: 그리고 자체 정의 변수를 모방할 수 있다.
\alps\build\tools\buildinfo.sh
3. 일부 apk의 추가 및 삭제:
\alps\build\target\product\generic.mk
\alps\build\target\product\generic_no_telephony.mk
\alps\build\target\product\telephony.mk
\alps\build\target\product\core.mk
4, 와이파이, bt, sn의 쓰기 위치:
alps\out\target\product\elink8163_tb_l1\obj\CGEN\
5. 제3자 apps 디렉터리:
\alps\vendor\mediatek\proprietary\operator\common\packages
\alps\vendor\mediatek\proprietary\operator\common\frameworks
6, VideoPlayer, Stk1, Stk2, MTKthermal Manager의values가 저장된 디렉토리:
\alps\device\mediatek\common\overlay\tablet\vendor\mediatek\proprietary\packages\apps
\alps\device\mediatek\common\overlay\tablet\vendor\mediatek\proprietary\frameworks
\alps\device\mediatek\common\overlay\tablet\vendor\mediatek\proprietary\protect-app
7. Launcher3, Settings,DeskClock의values가 저장된 위치(단wifi):
\alps\device\mediatek\common\overlay\tablet\packages\apps
8.\rameworks values가 저장된 위치:
\alps\device\mediatek\common\overlay\tablet\frameworks\base\core\res\res
9. 내비게이션 표시줄에 config를 표시하거나 숨깁니다.xml:
\alps\device\mediatek\common\overlay
avbar\frameworks\base\core\res\res\values
10. MemoryDeviceList 비교 표:
\alps\device\mediatek\build\build\tools\emigen\ \MemoryDeviceList_MT8163.xls
11. 애니메이션을 켜서 저장하는 디렉터리 안드로이드.구성 지침 mk:
\alps\vendor\mediatek\proprietary\operator\OP09\prebuilt\bootanim\bootanimation
\alps\vendor\mediatek\proprietary\operator\OP09\prebuilt\bootanim\bootaudio
\alps\vendor\mediatek\proprietary\operator\OP09\prebuilt\bootanim\shutanimation
12. 메모리 변경 디렉터리:
\alps\bootable\bootloader\preloader\custom\elink8163_tb_l1\inc\custom_MemoryDevice.h
\alps\bootable\bootloader\preloader\tools\emigen\MT8163\MemoryDeviceList_MT8163.xls
\alps\bootable\bootloader\preloader\tools\emigen\MT8163\full_elink8163_e ,
13, lcm, 로고 등의 구성 디렉토리:
\alps\bootable\bootloader\lk\dev
14. 대응하는 화면 크기, 서로 다른 아이콘 설정:
wxga
wxgal
</pre> WXGA 16:10 , <pre name="code" class="java">QVGA 240×320
HVGA 480*320
VGA 640X480
SVGA 800X600
XGA 1024X768
SXGA 1280X1024
SXGA+ 1400X1050
UXGA 1600X1200
WXGA 1280X800
WXGA+ 1400X900
WSXGA 1600X1024
WSXGA+ 1680X1050
WUXGA 1920X1200
WQXGA 2560X1600
필요에 따라 WSVGA와 유사한 1024의 태블릿 옵션×576 및 WXGA 1280×768 등 Google은 기기를 small(2~3인치),normal(4인치 정도),large(5~7인치),xlarge(7인치 이상) 크기에 따라 스크린 크기가 다른 그림으로 나눈다.low:medium:high:extra-high 그림 크기의 비율은 3:4:6:8이다.예를 들어, 중간 밀도 (medium) 의 화면에 대한 그림 픽셀 크기는 48이다×48, 그러면 저밀도(low) 화면의 그림 크기는 36이어야 한다×36, 높음(high) 72×72, extra-high는 96×96. 15. 프로필의 수정(화면의 넓이, 로고의 설정 etc):
\alps\device\elink\elink8163_e\ProjectConfig.mk
CUSTOM_LK_LCM = KR070IA4T_DSI_VDO
CUSTOM_UBOOT_LCM = KR070IA4T_DSI_VDO
MTK_BUILD_VERNO = ALPS.**( )
\alps\device\elink\elink8163_e\full_elink8163_e
set locales & aapt config.
PRODUCT_LOCALES := en_US es_ES zh_CN zh_TW ru_RU pt_BR fr_FR de_DE tr_TR it_IT in_ID ms_MY vi_VN ar_EG hi_IN th_TH bn_IN pt_PT ur_PK fa_IR nl_NL el_GR hu_HU tl_PH ro_RO cs_CZ iw_IL my_MM km_KH ko_KR pl_PL es_US bg_BG hr_HR lv_LV lt_LT sk_SK uk_UA de_AT da_DK fi_FI nb_NO sv_SE en_GB ja_JP
#AAPT configuration
PRODUCT_AAPT_CONFIG := normal large xlarge
PRODUCT_AAPT_PREF_CONFIG := hdpi
# Set those variables here to overwrite the inherited values.
PRODUCT_MANUFACTURER := alps
PRODUCT_NAME := **
PRODUCT_DEVICE :=**
PRODUCT_MODEL := **
PRODUCT_POLICY := android.policy_phone
PRODUCT_BRAND := alps
DEFAULT_INPUT_METHOD = com.sohu.inputmethod.sogou.SogouIME //
DEFAULT_LATIN_IME_LANGUAGES = en-US fr ru
16. lcd 밀도 설정:
\alps\device\elink\elink8163_e\system.prop
ro.sf.lcd_density=213
17. 기본 벽지의 보관 위치:
\alps\frameworks\base\core\res\res\drawable-nodpi\default_wallpaper
18. 제3자 응용 프로그램이 있는 디렉터리,eg:Sina 마이크로 블로그
\alps\vendor\mediatek\proprietary\binary\3rd-party\free\Sina_Weibo
, device\mediatek\common\device.mk
Sina PRODUCT_PACKAGES 。PRODUCT_PACKAGES += Sina, build
19. 대응하는drawable:
320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
480dp: a tweener tablet like the Streak (480x800 mdpi).
600dp: a 7” tablet (600x1024 mdpi).
720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
1280*720 720dp .
20. power 키를 길게 눌러 팝업하는 옵션:
framework\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java
Runnable mPowerLongPress = new Runnable() {
public void run(){
mShouldTurnOffOnKeyUp = false;
performHapticsFeedbackLw(null,HapticFeedbackConstants.LONG_PRESS,false);
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
showGlobalActionsDialog();
} };
show Global Action Dialog 방법을 호출하면'비행 모드','정음','끄기', 옵션의 대화상자가 표시됩니다. 이 때 우리는 여기에 있는 프레임워크\policies\base\phone\com\android\internal\policy\impl\Global Actions를 표시할 수 있습니다.java 이 파일의createDialog 메소드 코드21. 시스템은 기본적으로 내장된 정적 벽지 한 장만 있고 이를 수정하면 여러 장의 정적 벽지를 내장할 수 있다.
KK 버전: 1).Launcher3/res/drawable-xxx의 폴더 아래에wallpaer의 그림을 추가합니다. 모든wallpaper는 두 가지 그림을 필요로 합니다. 원도 한 장과 줄임말 그림 한 장을 필요로 합니다. 다음과 같은 형식입니다.
wallpaper_01.jpg
wallpaper_01_small.jpg
wallpaper_02.jpg
wallpaper_02_small.jpg
축소판 그림의 파일 이름은 원래 그림의 파일 이름 + small이어야 합니다.2).Launcher3/res/values-nodpi의wallpapers에 있습니다.xml에서 다음과 같이 수정되었습니다.
<resources>
<string-array name="wallpapers" translatable="false">
<item>wallpaper_01</item>
<item>wallpaper_02</item>
</string-array>
</resources>
L 버전:1).Launcher3/WallpaperPicker/res/drawable-xxx의 폴더 아래에wallpaer의 그림을 추가합니다. 모든wallpaper는 두 가지 그림을 필요로 합니다. 원도 한 장에 줄임말 그림 한 장을 필요로 합니다. 다음과 같은 형식입니다.
wallpaper_01.jpg
wallpaper_01_small.jpg
wallpaper_02.jpg
wallpaper_02_small.jpg
축소판 그림의 파일 이름은 원래 그림의 파일 이름 + small이어야 합니다.2).Launcher3/WallpaperPicker/res/values-nodpi의wallpapers.xml에서 다음과 같이 수정되었습니다.
<resources>
<string-array name="wallpapers" translatable="false">
<item>wallpaper_01</item>
<item>wallpaper_02</item>
</string-array>
</resources>
22. reboot 추가
재부팅 메뉴를 추가해서 핸드폰을 재부팅하는 동작을 하려면 다음과 같은 절차를 참고하여 수정할 수 있습니다: 1),alps\\rameworks\base\core\res\values\strings.xml에 태그 추가하기
<string name="zzzzz_global_action_power_reboot">Reboot</string>
메뉴 항목을 다시 시작하는 문자열 자원을 표시합니다. 다른 언어의 표식이 필요하면 다른 대체 가능한 자원의res folder에 대응하는 자원을 추가하십시오.자원 파일이 컴파일될 수 있도록 이 자원을symbols에 동기화하십시오.xml 중입니다.
2), alps\brameworks\base\core\res\res\drawable-hdpi에 아이콘을 추가합니다.
zzzzz_ic_lock_power_reboot.png
3), alps\brameworks\base\policy\src\com\android\internal\policy\impl\GlobalActions.java 파일의 createDialog() 함수에 다음을 추가합니다.
Private GlobalActionsDialog createDialog(){
……
mItems = new ArrayList<Action>();
// first: power off
mItems.add(……);
/////////////////////////////////////////////Added for reboot items start
mItems.add(
new SinglePressAction(
com.android.internal.R. zzzzz_ic_lock_power_reboot,
R.string.zzzzz_global_action_power_reboot) {
public void onPress() {
mWindowManagerFuncs.reboot(true);
}
public boolean onLongPress() {
mWindowManagerFuncs.rebootSafeMode(true);
return true;
}
public boolean showDuringKeyguard() {
return true;
}
public boolean showBeforeProvisioning() {
return true;
}
});
/////////////////////////added end
// next: airplane mode
mItems.add(mAirplaneModeOn);
……
}
4), frameworks\base\core\java\android\view\WindowManagerPolicy.java 파일에서 WindowManagerFuncs라는 인터페이스 정의를 찾아 다음과 같은 function 설명을 추가합니다.public interface WindowManagerFuncs {
public void reboot(boolean confirm);
}
5), Frameworks\base\services\java\com\android\server\wm\WindowManager Service.자바에서 윈도우 관리자 Funcs라는 인터페이스를 실현했기 때문에 이 파일에 리부트 () 함수의 실현체를 추가해야 합니다.
shutdown() 함수를 찾아 reboot() 함수를 다음과 같이 추가합니다.
// Called by window manager policy. Not exposed externally.
@Override
public void reboot(boolean confirm) {
ShutdownThread.reboot(mContext, confirm);
}
array에 더 필요합니다.xml의 config글로벌 ActionsList reboot 옵션 추가public.xml에서 설정
문자열 추가: (처음 편집할 수 있으며, 뒤에 컴파일러res가 있으면 찾을 수 없습니다)
strings.xml:
<string name="reboot_confirm_question">"Do you want to reboot?"</string>
<string name="global_action_reboot">"Reboot"</string>
<string name="reboot_progress">"Rebooting..."</string>
symbols.xml
<java-symbol type="string" name="reboot_confirm_question" />
<java-symbol type="string" name="global_action_reboot" />
<java-symbol type="string" name="reboot_progress" />( res , symbols.xml, )
주:android5.1의 configX:\8163 글로벌 ActionsListeng\alps\frameworks\base\core\res\res\values\config.xml에 정의됨23. GMS 사전 설정:
L버전 GMS의 사전 설정은 비교적 간단합니다. GMS의 사전 설정 내용을alps/vendor/google/폴더 밑에 놓고 (구글 폴더는 스스로 만들어야 함) vendor/google/아래에 안드로이드가 있는지 확인하십시오.이 안드로이드가 없는 경우 mk 파일.mk, 새로 만들고 다음 내용을 복사하십시오.
ifdef BUILD_GMS
ifeq ($(strip $(BUILD_GMS)), yes)
include $(call all-subdir-makefiles)
endif
endif
vendor/google/다음 두 폴더 apps/와frameworks/1층 디렉터리에 안드로이드가 있는지 확인합니다.mk가 존재하지 않으면 각각 하나씩 새로 만들고 다음 내용을 복사합니다.include $(call all-subdir-makefiles)
마지막으로build에서 "BUILD GMS=yes"를 가져옵니다.source build/envsetup.sh && lunch full_<YourProjectName>-user && source ./mbldenv.sh && BUILD_GMS=yes make -j24
알림이 mbldenv를 찾지 못하면sh 는 다음 명령을 사용합니다.source build/envsetup.sh && lunch full_<YourProjectName>-user && BUILD_GMS=yes make -j24
소스 코드의build 파일에 BUILDGMS의 값은 다른build 행위의 문장을 만들 수 있습니다. 수정하지 마십시오. 그렇지 않으면 GMS의 미리 설정이 충돌하거나 완전하지 않은 문제를 초래할 수 있습니다24.vendor/operator/app 아래로 apk 미리 설정
apk를vendor/operator/app 아래에 미리 설정하면 때때로 컴파일할 수 있습니다. 그러나 이런 상황은 apk 자체가 정렬되지 않아서 발생한 것입니다. 먼저 zipalign을 사용하여 apk를 다시 정렬한 다음에 미리 설정할 수 있습니다. 구체적인 방법은 다음과 같습니다.
out/host/linux-x86/bin/zipalign -f 4 unalign.apk aligned.apk
그 중에서 unalign.apk는 현재source apk,aligned를 가리킵니다.apk는 정렬된 출력의 apk를 가리킨다.25. mtk가 자체로 가지고 있는 일부 도구 파일,eg: 프로젝트 모드
\alps\vendor\mediatek\proprietary\packages\apps\EngineerMode
26. Launcher3의 추가된 디렉토리:
\alps\device\mediatek\mt8163\device.mk
27. apn 프로필이 있는 디렉터리:
\alps\device\generic\goldfish\data\etc\apns-conf.mk
28. GMS 패키지 인터페이스가 있는 디렉토리:
\alps\device\mediatek\common\device.mk
29. 이 디렉터리에 추가할 수 있습니다.jar과.so 라이브러리 (gms에 필요한 라이브러리는 여기에 추가할 수 있습니다)
eg:\alps\vendor\**\libs\**\com.google.widevine.software.drm\com.google.widevine.software.drm.jar
30,hotseat 레이아웃 레이아웃, 소재 디렉터리:defaultworkspace_5x6
\alps\device\mediatek\common\overlay\wifi\packages\apps\Launcher3\res\xml\default_workspace_5x6.xml
31. 프로젝트 테스트 모드 명령어(암호)
\alps\brameworks\base\telephony\java\com\android\internal\telephony\TelephonyIntents.자바에 인터페이스(android.provider.Telephony.SECRET CODE)가 있습니다.packages/서비스s/telephony/src/com/android/phone/SPecialCharSequenceMgr.자바의handle SecretCode 방법에서 암호를 처리하면 됩니다.\alps\vendor\mediatek\proprietary\packages\apps에FactoryMode를 추가하고\alps\device\mediatek\common\device를 추가합니다.mk 파일에FactoryMode를 추가하여 엉뚱한 오류를 보고합니다. (나중에 동료에게 물어보니 새 클래스의 함수나 구성원 변수가public이면/* * {@hide} */수식을 추가해야 합니다.)계산기에서 다음과 같은 데모를 사용하여 암호 호출을 할 수 있다
if(text.contains("(2586)")) {
// mDisplay.setText(mResult, scroll);
// setDeleteMode(DELETE_MODE_CLEAR);
int len = text.length();
// Intent intent = new Intent(TelephonyIntents.SECRET_CODE_ACTION,Uri.parse("android_secret_code://" + text.substring(1, len - 1)));
Intent intent = new Intent("android.provider.Telephony.SECRET_CODE",Uri.parse("android_secret_code://" + text.substring(1, len - 1)));
mContext.sendBroadcast(intent);
return;
}
Settings에서 수신.java의 <receiver android:name="TestingSettingsBroadcastReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SECRET_CODE" />
<data android:scheme="android_secret_code" android:host="4636" />
</intent-filter>
</receiver>
Apk를 직접 작성하여 공장 모드를 호출할 수도 있습니다.
Intent intent=new Intent();
intent.setComponent(new ComponentName("com.mediatek.engineermode", "com.mediatek.engineermode.EngineerMode"));
startActivity(intent);
31.Launcher3중,android.mk 파일에 LOCALPRIVILEGED_MODULE: = true 를 사용해야 Launcher3에 appwidget을 추가할 수 있습니다.
32. Launcher3 데스크톱 가로 화면 표시:
1).AndroidManifest를 수정합니다.xml
<activity
android:name="com.android.launcher3.Launcher"
android:launchMode="singleTask"
android:clearTaskOnLaunch="true"
android:stateNotNeeded="true"
android:theme="@style/Theme"
android:configChanges="mcc|mnc"
android:windowSoftInputMode="adjustPan"
android:screenOrientation="sensor"> <!--modify to sensor -->
2).Utilities를 수정합니다.java의 isRotationEnabled 방법
public static boolean isRotationEnabled(Context c)
{
return true;// true
}
이때 핸드폰을 돌리면 Launcher가 가로로 화면을 전환한다.하지만 hotseat는 화면 오른쪽에 표시됩니다.화면 하단에 hotseat을 표시하려면 다음 절차를 따르십시오.3).res/values/config를 수정합니다.xml
<!--hotseat -->
<bool name="hotseat_transpose_layout_with_orientation">false</bool> <!-- false-->
4).Hotseat 수정java의 onFinishInflate 방법
@Override
protected void onFinishInflate() {
super.onFinishInflate();
LauncherAppState app = LauncherAppState.getInstance();
DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
mAllAppsButtonRank = grid.hotseatAllAppsRank;
mContent = (CellLayout) findViewById(R.id.layout);
if (grid.isLandscape && !grid.isLargeTablet()) {
mContent.setGridSize((int) grid.numHotseatIcons, 1); //modify
} else {
mContent.setGridSize((int) grid.numHotseatIcons, 1);
}
mContent.setIsHotseat(true);
Log.i(TAG, "onFinishInflate,(int) grid.numHotseatIcons: " + (int) grid.numHotseatIcons);
resetLayout();
}
33. 배터리 곡선 수정 디렉터리:
\alps\kernel-3.10\drivers\misc\mediatek\mach\..\..\power\cust_battery_meter_table.h
34. 메모리 크기 설정:
excel 테이블의 해당 위치:
\alps\bootable\bootloader\preloader\tools\emigen\..\MemoryDeviceList_MT8163.xls
\alps\bootable\bootloader\preloader\custom\..\inc\custom_MemoryDevice.h
#define CS_PART_NUMBER[1] H5TC4G63AFR-PBA
35. 장치 화면 크기 변경:
\alps\kernel-3.10\arch\arm64\configs\**_e_debug_defconfig.mk
\alps\device\..\..\ProjectConfig.mk
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.