MTK Android平台开发流程

本篇给大家详细讲解了MTKAndroid平台开发流程,大致分为44个步骤,我们把每个步骤的命令详细讲解了下,一起来学习下。

1.拷贝代码仓库从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查看源代码的版本号

1.)编译的时候在终端中一开始就会打印出来:PLATFORM_VERSION:2.3.1

2.)直接去make文件中去看:build\core\version_defaults.mk//搜索该文件中的PLATFORM_VERSION值

4.编译具体appsudoku,源码文件包位于..\package\app\sudoku,命令为:

./mkmmpackage/app/sudoku

5.设置eclipse选择启动不同的AVD设置方式:

eclipse中右击指定app文件夹、选择Runas->Runconfigrations,弹出界面选择Target项,选择指定的AVD。(debug方式类似设置)

6.adb命令

adbdevice:查看当前的链接的设备情况

adblogcat>my.log:打印当前的log记录到文件my.log中

7.adb无法启动问题分析:

adbkill-server,然后adb–startserver

8、9.SDK的android类库是android源码工程的裁剪(SLIM)版本,不集成"@hide"类型的成员函数。故存在SDK上编译的apk到处通行,源码工程上编译的apk很多情况下不能直接加载上其他软件版本的平台上。

10.打印查看项目的DENSITY_DEVICE,便于项目确认对应drawable文件夹:

res=getResources();//context.getResources();

dm=res.getDisplayMetrics();

density_device_value=dm.DENSITY_DEVICE;

11.Flashtool下载时候提示preloadusbvcomport驱动没有安装,需要安装指定路径:

D:\Tools\Mtk_release_Tools_W1316\Driver(binary)\SP_Drivers_v1.5\SP_Drivers_v1.5

另外需要网上下载mt65xx+preloader+驱动,将其中文件usb2ser.sys改名为usbser.sys拷贝到C:\WINDOWS\system32\drivers下面

备注:如果安装驱动不成功,有可能是系统中缺少usbser.sys和mdmcpq.inf文件导致的。可以将本文档所在路径附带的usbser.sys拷贝到C:\WINDOWS\system32\drivers下面,将mdmcpq.inf拷贝到C:\WINDOWS\inf即可。

12.默认壁纸的修改

a.屏幕上锁屏界面背景图片:

若是mtkslidelockscreen,可替换下面文件修改锁界面时背景图片

\mediatek\source\frameworks\banyan\res\res\drawable\lockscreen_default_wallpaper.png

若是androiddefaultlockscreen,可替换下面文件修改锁界面时背景图片

\frameworks\base\core\res\res\drawable\default_wallpaper.jpg

b.静态壁纸:

我们可能会在系统的壁纸选择中加入我们自己的壁纸,系统壁纸是Launcher模块中加入的,我们只需要修改:./packages/apps/Launcher2/res/values-mdpi/wallpapers.xml在其中加入我们修改的壁纸的<item>wallpaperName</item>即可。

c.动态壁纸:

修改frameworks/base/core/res/res/values/config.xml文件中找到<stringname=”default_wallpaper_component”>@null</string>,修改为

<stringname=”default_wallpaper_component”>com.android.wallpaper/.nexus.NexusWallpaper</string>

其中com.android.wallpaper/.nexus.NexusWallpaper,”/”前为包名,后为类名

备注:如果要将内置到系统中的无sourcecode的第三方动态壁纸程序设置为默认动态壁纸,则需要知道该apk中WallpaperService对应的类名和包名,可以通过Google提供的apk-tool工具来得到该apk的资源文件,那么就可以通过查看AndroidManifest.xml文件去查找到对应的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.请教,android中如果修改了资源文件,如res/values/string.xml文件中的内容,那么如何编译生效?我将该模块重新编译了一下如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.如何分别配置基线工程和特定项目的开关、代码:

需要被所有工程用到的代码或配置放在以下目录:

mediatek/customer/common

mediatek/config/common

只被一个专用工程用到的配置和代码应该放在什么位置?

mediatek/customer/$project$

mediatek/config/$project$

20.如何共享含很多Linux软链接的代码工程给他人:

解压代码包后,里面有很多linux的软链接并且编译后也会生成很多软链接,如何将代码复制给其他人,并且也可以正常编译很重要。

禁止以下方法压缩软件:

1.不能在windows下用压缩软件压缩或用复制粘贴的方式

2.不能再linux下用右键压缩的方法压缩代码;以上方式都是使链接失效。

正确的方法是:tarczfv<project_name>.tar.gzalps

其中<project_name>为任意名字,最好是项目+版本的命名方式,alps为源代码目录,已当前要压缩的目录为准。

21.编译用户版软件(UserBuild)的命令是什么

./makeMtk-opt=TARGET_BUILD_VARIANT=user${projectname}new

${projectname}为客户的工程名

22.GCC工具链

GCC:(GNUCompilerCollection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。GCC是自由软件发展过程中的著名例子,由自由软件基金会以GPL协议发布。GCC是大多数类Unix操作系统(如Linux、BSD、MacOSX等)的标准的编译器,GCC同样适用于微软的Windows。

GCC工具链:

23.android不同版本代号含义(GB,GB2,ICS,ICS2,JB)

AndroidV2.3(GB,GB2)

AndroidV4.0(ICS,ICS2):冰淇淋

AndroidV4.1(JB):果冻豆

24.Android2.3如何将MTK滑动锁屏替换为google默认滑动锁屏:

请修改alps/mediatek/config/project_name/ProjectConfig.mk,将其中的

MTK_LOCKSCREEN_TYPE=2

修改为

MTK_LOCKSCREEN_TYPE=1

,修改后请重新buildproject

25JBframeowork资源添加新规则

JB版本代码与之前的有点区别,就是在JB中添加frameworkresource,必须在

alps\frameworks\base\core\res\res\values\Public.xml中声明,才会生成resourceID.

drawable<java-symboltype="drawable"name="xxx"/>name

frameworkinternalbuildAndroidSDK

apk<publictype="drawable"name="xxx"/>的方式声明为frameworkpublic资源,注意,不需要写id的值,且编译时,需要手动updateapi。

26.如何修改默认主题为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为例子来参考即可,您需要为新添加的theme-res-xxx准备相应的资源和

Android.mk/AndroidManifest.xml等文件

2、在alps/build/target/product/common.mk文件中,找到MTK_THEMENANAGER_APP这个关键字,在

如下这个判断中,添加自己的资源包的名字

ifeq($(strip$(MTK_THEMEMANAGER_APP)),yes)

PRODUCT_PACKAGES+=theme-res-mint\

theme-res-mocha\

theme-res-raspberry\

theme-res-xxx

endif

28.如何让自己开发的Application,能适应主题管理(ThemeManager)中的各种主题风格

1、编辑alps/frameworks/base/data/etc/thememap.xml文件按照已有的app的样式添加您自己的

app所想要替换的resource的名称,可以参考Launcher2。

2、为自己的app在alps/mediatek/source/frameworks/themes/theme-res-xxx(themename)目录下

添加具体风格所对应的资源,按照已有的app的样式来添加;同样以Launcher2为例,注意这里的资

源放置路径要跟原始app里面被替换的资源的路径保持一样,资源的名称也要保持一样。

29.非hdpi项目,状态栏刷新、或者list列表界面等出现显示内容花屏、错乱的情况,是什么原因

MTKrelease给客户的工程,在75平台、AndroidV2.3和V4.0的版本上,默认只会buildhdpi资源到系统里,也就是说,alps/meidatek/config/xxx/ProjectConfig.mk中的MTK_PRODUCT_LOCALESdefault只加入了hdpi,如果客户的项目不是hdpi的,就可能出现这种显示错乱的情况。

解决的方法:请客户针对其他非hdpi的项目,手动加入相应的*dpi到MTK_PRODUCT_LOCALES里:HVGA分辨率需要加入mdpi这一项;QVGA需要加入ldpi这一项。

30.二级菜单的背景图片:

进入设置时默认的黑色背景,放在

/frameworks/base/core/res/res/drawable-nodpi/backgroud_holo_dark.jpg。

默认壁纸在系统源码里是放在/frameworks/base/core/res/res/drawable-large-nodpi和drawable-xlarge-nodpi下的default_wallpaper.jpg,

31.6589项目如何关闭NavigationBar:

默认NavigationBar的控制在alps/frameworks/base/core/res/res/values/config.xml

<boolname=“config_showNavigationBar”>true</bool>

//6589MTKDemoProjectNavigationBarResourceOverlayNavigationBarresourceoverlay:

6589navigationBar最终控制在,会覆盖掉上述设置:

alps/mediatek/custom/project_name/resource_overlay/generic/frameworks/base/core/res/res/values/config.xml

<boolname=“config_showNavigationBar”>true</bool>

32..9.png图片制作

java的jdk、android的sdk中tools目录下的draw9patch.bat

33.如何去掉状态栏和标题栏

修改对应的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()方法之前,否则将提示错误。

34.如何在状态栏上增加一个icon、如何调整状态栏icon之间的显示顺序:

具体查看:MTK_on_line_FAQ_SW_ALPS_20130123.pdf

35.在任意非锁屏界面,按某个预设定好的按键进入某个Activity的功能

PhoneWindowManager.java:interceptKeyBeforeDispatching()----按键响应统一处理接口

具体查看: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

<receiverandroid:name=".EngineerModeReceiver">

<intent-filter>

<actionandroid:name="android.provider.Telephony.SECRET_CODE"/>

<dataandroid:scheme="android_secret_code"android:host="3646633"/>

</intent-filter>

</receiver>

37.触屏的震动响应接口

调用native方法来开启和关闭vibrator:

nativestaticvoidvibratorOn(longmilliseconds);

nativestaticvoidvibratorOff();

调用方法如下: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,用来读和修改modem的nvram数据。

另一种是SP_META,用来读和修改androidapp端的nvram数据。

Nvram数据读取方式:

首先,选择这正确的tool;

然后通过usb把电脑和手机连起来,再点击optionmenu中的connecttosmartphone,

开机,手机会进入metamode;

最后选择nvrameditor,来选择正确的database。

39.如何抓取mobilelog

具体查看:MTK_on_line_FAQ_SW_ALPS_20130123.pdf

40.如何编译单双卡版本

具体查看:MTK_on_line_FAQ_SW_ALPS_20130123.pdf

41.如何远端调试framework

1.请在eclipse中新建一个java工程,导入framework的代码(导入的framework代码需要和手机的代码版本一致)

2.请在ddms界面查看system_process对应的TCP端口

3.请在run/DebugConfiguration...菜单弹出的对话框添加一个RemoteJavaApplication,选择第一步新建的project,使用第二步得到的端口号

4.请在需要调试的地方设置断点,然后调试

42.如何确认一个应用程序的安装位置

android:installLocation="internalOnly"

android:installLocation="auto"

android:installLocation="preferExternal">

具体查看:MTK_on_line_FAQ_SW_ALPS_20130123.pdf

43.如何在activity中控制屏幕点亮与关闭

Android中通过各种Lock锁对电源进行控制,需要注意的是加锁和解锁必须成对出现。

//启用屏幕常亮功能

PowerManagerpm=(PowerManager)getSystemService(POWER_SERVICE);

wakeLock=pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP,myPowerManager.TAG);

wakeLock.acquire();

//关闭屏幕常亮功能

if(wakeLock!=null){wakeLock.release();}

44.如何安装/卸载APK

DDMS工具/ADB命令/FileManager文件夹中点击安装

时间: 2017-12-04

iOS直播类APP开发流程解析

本文为大家分享了iOS直播类APP开发流程,供大家参考,具体内容如下 一 . 音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示 1.数据采集: 摄像机及拾音器收集视频及音频数据,此时得到的为原始数据 涉及技术或协议: 摄像机:CCD.CMOS 拾音器:声电转换装置(咪头).音频放大电路 2.数据编码: 使用相关硬件或软件对音视频原始数据进行编码处理(数字化)及加工(如音视频混合.打包封装等),得到可用的音视频数据 涉及技术或协议: 编码方式:CBR.VB

微信公众平台开发——群发信息

1.目的 完成在微信公众号中群发消息.这里只是完成简单的文字发送.也可以发送语音图片等,只是发送数据格式不同而已,下面有链接,可以查询数据类型的数据发送格式. 2.群发短信的流程 获取测试公众账号(有账号的可以不用测试账号,不过正式的账号限制比较多) 用户关注上面的公众账号 通过appid和appsecret获取我们的access_token 通过access_token群发短信 3.获取测试公众账号 + 关注公众号 1).公众测试账号获取 访问上面的连接,选择"接口测试号申请"获得直

Java微信公众平台开发(15) 微信JSSDK的使用

在前面的文章中有介绍到我们在微信web开发过程中常常用到的 [微信JSSDK中Config配置] ,但是我们在真正的使用中我们不仅仅只是为了配置Config而已,而是要在我们的项目中真正去使用微信JS-SDK给我们带来便捷,那么这里我们就简述如何在微信web开发中使用必要的方法!微信的JS-SDk中为我们提供的方法很多,这里我有一个简单截图如下: 在上图的提供的所有口中我们可以按照接口实现的难易程度分成两个部分: 较易实现:基础接口.分享接口.设备信息接口.地理位置接口.界面操作接口.微信扫一扫

图文详解Android Studio搭建Android集成开发环境的过程

有很长一段时间没有更新博客了,最近实在是太忙了,没有时间去总结,现在终于可以有时间去总结一些Android上面的东西了,很久以前写过这篇关于使用Android Studio搭建Android集成开发环境,不过一直没有发表出来,写这篇文章的目的是记录一下Android开发环境的搭建过程,这篇文章写得一般般,主要是记录了整个搭建过程,没什么技术含量,觉得有帮助的朋友就看一下! 一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(A

基于php的微信公众平台开发入门实例

本文实例讲述了基于php的微信公众平台开发方法.分享给大家供大家参考.具体如下: 最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并返回数据至微信 -> 微信把返回数据发送给用户,期间数据交互通过XML完成,就这么简单.   下面写个实例,开发微信智能聊天机器人:   1. 注册微信公众平台账号 微信公众平台:

微信公众平台开发入门教程(SAE方倍工作室)

我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用启用微信公众平台开发模式基础接口消息及事件微信公众平台PHP SDK微信公众平台开发模式原理开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.申请地址:http://sae.sina.com.cn/ ,使用新浪微博账号可以直接登录SAE,登录后SAE将赠送50

Android NDK开发入门

神秘的Android NDK开发往往众多程序员感到兴奋,但又不知它为何物,由于近期开发应用时,为了是开发的.apk文件不被他人解读(反编译),查阅了很多资料,其中有提到使用NDK开发,怀着好奇的心理,通过在线视频教育网站,我初步了解了NDK的神秘面纱,好东西自然要分享,接下来我们就一起来认识一下Android NDK开发. 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三

Android NDK开发详细介绍

Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这并不等同于"第三方应用只能使用Java".在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,"Java+C"的

Android平台基于Pull方式对XML文件解析与写入方法详解

本文详细讲述了Android平台基于Pull方式对XML文件解析与写入方法.分享给大家供大家参考,具体如下: XML技术在跨平台的情况下的数据交互中得到了广泛的应用,假如我们需要开发一个Android应用程序,需要同服务器端进行数据交互,通过XML文件可以很方便的在Android平台和服务器之间进行数据传输,具体实现涉及到对XML文件进行解析及写入的技术.本文实现在Android平台上基于Pull方式对XML文件解析的技术. XmlPullParser是一个Java实现的开源API包(源码下载地

微信支付的开发流程详解

最近在公司做了微信支付的接入,这里总结下开发的一些经验 注意,我使用的是微信开放平台的支付,与手机app相关,而与公众账号无关. 微信支付的主要操作流程 1.用户浏览app,选定商品然后下单. 2.服务器处理订单逻辑,开始正式发起支付流程 3.首先,后台服务器向weixin服务器发起请求,获取一个token. 4.后台服务器拿到token,使用和其他参数加密,再次向weixin服务器发起请求,获取一个预支付prepayid 5.后台服务器将该prepayid返回给app客户端 6.app调用手机