這篇文章給大家介紹如何開發(fā)MTK Android平臺(tái),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)。1.拷貝代碼倉(cāng)庫(kù)從git@192.168.1.3:a89.git到work目錄下:
cbk@YCS:~/work$ll
cbk@YCS:~/work$rm-rfa89/
cbk@YCS:~/work$cd..
cbk@YCS:~/work$gitclonegit@192.168.1.3:a89.git
2.修改xshell用戶密碼:passwd
3.Android查看源代碼的版本號(hào)
1.)編譯的時(shí)候在終端中一開始就會(huì)打印出來(lái):PLATFORM_VERSION:2.3.1
2.)直接去make文件中去看:build\core\version_defaults.mk//搜索該文件中的PLATFORM_VERSION值
4.編譯具體appsudoku,源碼文件包位于..\package\app\sudoku,命令為:
./mkmmpackage/app/sudoku
5.設(shè)置eclipse選擇啟動(dòng)不同的AVD設(shè)置方式:
eclipse中右擊指定app文件夾、選擇Runas->Runconfigrations,彈出界面選擇Target項(xiàng),選擇指定的AVD。(debug方式類似設(shè)置)
6.adb命令
adbdevice:查看當(dāng)前的鏈接的設(shè)備情況
adblogcat>my.log:打印當(dāng)前的log記錄到文件my.log中
7.adb無(wú)法啟動(dòng)問題分析:
adbkill-server,然后adb–startserver
8、9.SDK的android類庫(kù)是android源碼工程的裁剪(SLIM)版本,不集成"@hide"類型的成員函數(shù)。故存在SDK上編譯的apk到處通行,源碼工程上編譯的apk很多情況下不能直接加載上其他軟件版本的平臺(tái)上。
10.打印查看項(xiàng)目的DENSITY_DEVICE,便于項(xiàng)目確認(rèn)對(duì)應(yīng)drawable文件夾:
res=getResources();//context.getResources();
dm=res.getDisplayMetrics();
density_device_value=dm.DENSITY_DEVICE;
11.Flashtool下載時(shí)候提示preloadusbvcomport驅(qū)動(dòng)沒有安裝,需要安裝指定路徑:
D:\Tools\Mtk_release_Tools_W1316\Driver(binary)\SP_Drivers_v1.5\SP_Drivers_v1.5
另外需要網(wǎng)上下載mt65xx+preloader+驅(qū)動(dòng),將其中文件usb2ser.sys改名為usbser.sys拷貝到C:\WINDOWS\system32\drivers下面
備注:如果安裝驅(qū)動(dòng)不成功,有可能是系統(tǒng)中缺少usbser.sys和mdmcpq.inf文件導(dǎo)致的??梢詫⒈疚臋n所在路徑附帶的usbser.sys拷貝到C:\WINDOWS\system32\drivers下面,將mdmcpq.inf拷貝到C:\WINDOWS\inf即可。
12.默認(rèn)壁紙的修改
a.屏幕上鎖屏界面背景圖片:
若是mtkslidelockscreen,可替換下面文件修改鎖界面時(shí)背景圖片
\mediatek\source\frameworks\banyan\res\res\drawable\lockscreen_default_wallpaper.png
若是androiddefaultlockscreen,可替換下面文件修改鎖界面時(shí)背景圖片
\frameworks\base\core\res\res\drawable\default_wallpaper.jpg
b.靜態(tài)壁紙:
我們可能會(huì)在系統(tǒng)的壁紙選擇中加入我們自己的壁紙,系統(tǒng)壁紙是Launcher模塊中加入的,我們只需要修改:./packages/apps/Launcher2/res/values-mdpi/wallpapers.xml在其中加入我們修改的壁紙的
c.動(dòng)態(tài)壁紙:
修改frameworks/base/core/res/res/values/config.xml文件中找到
其中com.android.wallpaper/.nexus.NexusWallpaper,”/”前為包名,后為類名
備注:如果要將內(nèi)置到系統(tǒng)中的無(wú)sourcecode的第三方動(dòng)態(tài)壁紙程序設(shè)置為默認(rèn)動(dòng)態(tài)壁紙,則需要知道該apk中WallpaperService對(duì)應(yīng)的類名和包名,可以通過Google提供的apk-tool工具來(lái)得到該apk的資源文件,那么就可以通過查看AndroidManifest.xml文件去查找到對(duì)應(yīng)的WallpaperService的類名和包名。
13.logo文件存放位置:
alps\mediatek\custom\common\uboot\logo\logo_folder
logo_folder:定義在..\mediatek\config\XXXX\ProjectConfig.mk中BOOT_LOGO=wsvganl
14.Lcd文件存放位置:
alps\mediatek\custom\common\kernel\lcm\lcd_folder
alps\mediatek\custom\common\uboot\lcm\lcd_folder
lcd_folder:定義在..\mediatek\config\XXXXProjectConfig.mk中:
CUSTOM_UBOOT_LCM=zs070#nt35510
CUSTOM_KERNEL_LCM=zs070#nt35510
15.camera文件存放位置:
alps\mediatek\custom\common\kernel\imgsensor\camera_folder
camera_folder:定義在..\mediatek\config\XXXX\ProjectConfig.mk中:
CUSTOM_HAL_IMGSENSOR=hi253_yuvgc0309_yuv#ov5647_rawhi704_yuv
CUSTOM_HAL_MAIN_IMGSENSOR=hi253_yuv#ov5647_raw
CUSTOM_HAL_SUB_IMGSENSOR=gc0309_yuv#hi704_yuv
CUSTOM_KERNEL_IMGSENSOR=hi253_yuvgc0309_yuv#ov5647_rawhi704_yuv
CUSTOM_KERNEL_MAIN_IMGSENSOR=hi253_yuv#ov5647_raw
CUSTOM_KERNEL_SUB_IMGSENSOR=gc0309_yuv#hi704_yuv
16.請(qǐng)教,android中如果修改了資源文件,如res/values/string.xml文件中的內(nèi)容,那么如何編譯生效?我將該模塊重新編譯了一下如mmmpath/module-name,但是好像沒有生效
刪掉生成的jar包就OK了。具體在out/target/common/obj目錄下
./mkk6mmpackages/apps/Launcher2
刪除apk文件alps\out\target\product\k6\system\app
./mksystemimage
17.工程基本配置文件:
mediatek\config\xxx\ProjectConfig.mk
build\target\product\common.mk
18.如何將ProjectConfig.mk中的宏(注意添加的宏必須大寫)添加到C/C++源文件的接口:
[KEYWORD]
AUTO_ADD_GLOBAL_DEFINE_BY_NAME
AUTO_ADD_GLOBAL_DEFINE_BY_VALUE
AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VALUE
19.如何分別配置基線工程和特定項(xiàng)目的開關(guān)、代碼:
需要被所有工程用到的代碼或配置放在以下目錄:
mediatek/customer/common
mediatek/config/common
只被一個(gè)專用工程用到的配置和代碼應(yīng)該放在什么位置?
mediatek/customer/$project$
mediatek/config/$project$
20.如何共享含很多Linux軟鏈接的代碼工程給他人:
解壓代碼包后,里面有很多l(xiāng)inux的軟鏈接并且編譯后也會(huì)生成很多軟鏈接,如何將代碼復(fù)制給其他人,并且也可以正常編譯很重要。
禁止以下方法壓縮軟件:
1.不能在windows下用壓縮軟件壓縮或用復(fù)制粘貼的方式
2.不能再linux下用右鍵壓縮的方法壓縮代碼;以上方式都是使鏈接失效。
正確的方法是:tarczfv
其中
21.編譯用戶版軟件(UserBuild)的命令是什么
./makeMtk-opt=TARGET_BUILD_VARIANT=user${projectname}new
${projectname}為客戶的工程名
22.GCC工具鏈
GCC:(GNUCompilerCollection,GNU編譯器集合)是一套由GNU工程開發(fā)的支持多種編程語(yǔ)言的編譯器。GCC是自由軟件發(fā)展過程中的著名例子,由自由軟件基金會(huì)以GPL協(xié)議發(fā)布。GCC是大多數(shù)類Unix操作系統(tǒng)(如Linux、BSD、MacOSX等)的標(biāo)準(zhǔn)的編譯器,GCC同樣適用于微軟的Windows。
GCC工具鏈:
23.android不同版本代號(hào)含義(GB,GB2,ICS,ICS2,JB)
AndroidV2.3(GB,GB2)
AndroidV4.0(ICS,ICS2):冰淇淋
AndroidV4.1(JB):果凍豆
24.Android2.3如何將MTK滑動(dòng)鎖屏替換為google默認(rèn)滑動(dòng)鎖屏:
請(qǐng)修改alps/mediatek/config/project_name/ProjectConfig.mk,將其中的
MTK_LOCKSCREEN_TYPE=2
修改為
MTK_LOCKSCREEN_TYPE=1
,修改后請(qǐng)重新buildproject
25JBframeowork資源添加新規(guī)則
JB版本代碼與之前的有點(diǎn)區(qū)別,就是在JB中添加frameworkresource,必須在
alps\frameworks\base\core\res\res\values\Public.xml中聲明,才會(huì)生成resourceID.
drawable
frameworkinternalbuildAndroidSDK
apk
26.如何修改默認(rèn)主題為mtkslicer(纖薄主題)
1frameworks/base/core/java/android/context/res/Configuration.javaSKIN_UNDEFINED
"/system/framework/theme-res-slicer.apk"
2frameworks/base/libs/utils/AssetManager.cppopenNonAssetString8
themeRes("/system/framework/framework-res.apk");String8themeRes("/system/framework/theme-res-slicer.apk");
3mediatek/source/frameworks/themes/theme-res-slicer/res/drawable-*dpilockwallpaper.png
mediatek/source/frameworks/banyan/res/res/drawablelockscreen_default_wallpaper.png
lockscreen_default_wallpaper.png
4mediatek/source/frameworks/themes/theme-res-slicer/res/drawable-*dpithemewallpaper.png
frameworks/base/core/res/res/drawabledefault_wallpaper.pngdefault_wallpaper.jpg
27.如何在主題管理(ThemeManager)中,客制化添加一套自己的Theme
1、在alps/mediatek/source/frameworks/themes目錄下,添加您自己的資源目錄theme-res-
xxx,以原有的3套theme為例子來(lái)參考即可,您需要為新添加的theme-res-xxx準(zhǔn)備相應(yīng)的資源和
Android.mk/AndroidManifest.xml等文件
2、在alps/build/target/product/common.mk文件中,找到MTK_THEMENANAGER_APP這個(gè)關(guān)鍵字,在
如下這個(gè)判斷中,添加自己的資源包的名字
ifeq($(strip$(MTK_THEMEMANAGER_APP)),yes)
PRODUCT_PACKAGES+=theme-res-mint\
theme-res-mocha\
theme-res-raspberry\
theme-res-xxx
endif
28.如何讓自己開發(fā)的Application,能適應(yīng)主題管理(ThemeManager)中的各種主題風(fēng)格
1、編輯alps/frameworks/base/data/etc/thememap.xml文件按照已有的app的樣式添加您自己的
app所想要替換的resource的名稱,可以參考Launcher2。
2、為自己的app在alps/mediatek/source/frameworks/themes/theme-res-xxx(themename)目錄下
添加具體風(fēng)格所對(duì)應(yīng)的資源,按照已有的app的樣式來(lái)添加;同樣以Launcher2為例,注意這里的資
源放置路徑要跟原始app里面被替換的資源的路徑保持一樣,資源的名稱也要保持一樣。
29.非hdpi項(xiàng)目,狀態(tài)欄刷新、或者list列表界面等出現(xiàn)顯示內(nèi)容花屏、錯(cuò)亂的情況,是什么原因
MTKrelease給客戶的工程,在75平臺(tái)、AndroidV2.3和V4.0的版本上,默認(rèn)只會(huì)buildhdpi資源到系統(tǒng)里,也就是說(shuō),alps/meidatek/config/xxx/ProjectConfig.mk中的MTK_PRODUCT_LOCALESdefault只加入了hdpi,如果客戶的項(xiàng)目不是hdpi的,就可能出現(xiàn)這種顯示錯(cuò)亂的情況。
解決的方法:請(qǐng)客戶針對(duì)其他非hdpi的項(xiàng)目,手動(dòng)加入相應(yīng)的*dpi到MTK_PRODUCT_LOCALES里:HVGA分辨率需要加入mdpi這一項(xiàng);QVGA需要加入ldpi這一項(xiàng)。
30.二級(jí)菜單的背景圖片:
進(jìn)入設(shè)置時(shí)默認(rèn)的黑色背景,放在
/frameworks/base/core/res/res/drawable-nodpi/backgroud_holo_dark.jpg。
默認(rèn)壁紙?jiān)谙到y(tǒng)源碼里是放在/frameworks/base/core/res/res/drawable-large-nodpi和drawable-xlarge-nodpi下的default_wallpaper.jpg,
31.6589項(xiàng)目如何關(guān)閉NavigationBar:
默認(rèn)NavigationBar的控制在alps/frameworks/base/core/res/res/values/config.xml
//6589MTKDemoProjectNavigationBarResourceOverlayNavigationBarresourceoverlay:
6589navigationBar最終控制在,會(huì)覆蓋掉上述設(shè)置:
alps/mediatek/custom/project_name/resource_overlay/generic/frameworks/base/core/res/res/values/config.xml
32..9.png圖片制作
java的jdk、android的sdk中tools目錄下的draw9patch.bat
33.如何去掉狀態(tài)欄和標(biāo)題欄
修改對(duì)應(yīng)的Activity,添加以下代碼:
finalWindowwin=getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);//removestatusbar
requestWindowFeature(Window.FEATURE_NO_TITLE);
requestWindowFeature(Window.FEATURE_PROGRESS);//removetitlebar
注意:必須添加在setContentView()方法之前,否則將提示錯(cuò)誤。
34.如何在狀態(tài)欄上增加一個(gè)icon、如何調(diào)整狀態(tài)欄icon之間的顯示順序:
具體查看:MTK_on_line_FAQ_SW_ALPS_20130123.pdf
35.在任意非鎖屏界面,按某個(gè)預(yù)設(shè)定好的按鍵進(jìn)入某個(gè)Activity的功能
PhoneWindowManager.java:interceptKeyBeforeDispatching()----按鍵響應(yīng)統(tǒng)一處理接口
具體查看:MTK_on_line_FAQ_SW_ALPS_20130123.pdf
36.如何自定義把工程模式的暗碼:
*#*#3646633#*#*
alps/mediatek/source/packages/EngineerMode/src/com/mediatek/engineermode/EngineerModeReceiver.java
//process*#*#3646633#*#*
UriengineerUri=Uri.parse("android_secret_code://3646633");
alps/mediatek/source/packages/EngineerMode/AndroidManifest.xml
37.觸屏的震動(dòng)響應(yīng)接口
調(diào)用native方法來(lái)開啟和關(guān)閉vibrator:
nativestaticvoidvibratorOn(longmilliseconds);
nativestaticvoidvibratorOff();
調(diào)用方法如下:VibratorService.vibratorOn()
38.Database位置和讀取方式:
以下是database的路徑(GB2andICS的project):
-MAUIMETAdatabaseisunderpath:
alps\mediatek\custom\common\modem\${Project}\BPLGUInfoCustomApp_MTXXX_S01_MAUI_XXX
-ALPSMETAdatabaseisunderpath:
alps\mediatek\source\cgen\APDB_MTXXX_S01_ALPS.XXXX_WXXX
Metatool有兩種類型:
一種是MAUIMetaTool,用來(lái)讀和修改modem的nvram數(shù)據(jù)。
另一種是SP_META,用來(lái)讀和修改androidapp端的nvram數(shù)據(jù)。
Nvram數(shù)據(jù)讀取方式:
首先,選擇這正確的tool;
然后通過usb把電腦和手機(jī)連起來(lái),再點(diǎn)擊optionmenu中的connecttosmartphone,
開機(jī),手機(jī)會(huì)進(jìn)入metamode;
最后選擇nvrameditor,來(lái)選擇正確的database。
39.如何抓取mobilelog
具體查看:MTK_on_line_FAQ_SW_ALPS_20130123.pdf
40.如何編譯單雙卡版本
具體查看:MTK_on_line_FAQ_SW_ALPS_20130123.pdf
41.如何遠(yuǎn)端調(diào)試framework
1.請(qǐng)?jiān)趀clipse中新建一個(gè)java工程,導(dǎo)入framework的代碼(導(dǎo)入的framework代碼需要和手機(jī)的代碼版本一致)
2.請(qǐng)?jiān)赿dms界面查看system_process對(duì)應(yīng)的TCP端口
3.請(qǐng)?jiān)趓un/DebugConfiguration...菜單彈出的對(duì)話框添加一個(gè)RemoteJavaApplication,選擇第一步新建的project,使用第二步得到的端口號(hào)
4.請(qǐng)?jiān)谛枰{(diào)試的地方設(shè)置斷點(diǎn),然后調(diào)試
42.如何確認(rèn)一個(gè)應(yīng)用程序的安裝位置
android:installLocation="internalOnly"
android:installLocation="auto"
android:installLocation="preferExternal">
具體查看:MTK_on_line_FAQ_SW_ALPS_20130123.pdf
43.如何在activity中控制屏幕點(diǎn)亮與關(guān)閉
Android中通過各種Lock鎖對(duì)電源進(jìn)行控制,需要注意的是加鎖和解鎖必須成對(duì)出現(xiàn)。
//啟用屏幕常亮功能
PowerManagerpm=(PowerManager)getSystemService(POWER_SERVICE);
wakeLock=pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP,myPowerManager.TAG);
wakeLock.acquire();
//關(guān)閉屏幕常亮功能
if(wakeLock!=null){wakeLock.release();}
44.如何安裝/卸載APK
DDMS工具/ADB命令/FileManager文件夾中點(diǎn)擊安裝
關(guān)于如何開發(fā)MTK Android平臺(tái)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。