Android应用开发之Android编译小结(新建android项目)
凌雪 2018-09-21 来源 :网络 阅读 600 评论 0

摘要:本文将带你了解Android应用开发之Android编译小结(新建android项目),希望本文对大家学Android有所帮助。

本文将带你了解Android应用开发之Android编译小结(新建android项目),希望本文对大家学Android有所帮助。


Android编译小结(新建android项目),正式开始一个新的平台,以前的项目拿到的代码都是供应商改好的,感觉有很多不规范的地方。
    这次从一个全新的项目着手,严格按照android规范进行项目的添加、板级文件的支持。目标是争取不改动build目录下的文件,而是用好它的扩展机制。
    在lunch中增加combo选项的标准方法
    在执行完. build/envsetup.sh后,执行lunch,会出现lunch菜单:
're building on LinuxLunch menu... pick a   combo:  1. aosp_arm-eng  2. aosp_arm64-eng  3.   aosp_mips-eng  4. aosp_mips64-eng  5.   aosp_x86-eng  6. aosp_x86_64-eng  7. aosp_flounder-userdebug  8.   mini_emulator_mips-userdebug  9.   mini_emulator_x86-userdebug  10.   mini_emulator_arm64-userdebug  11.   mini_emulator_x86_64-userdebug  12.   m_e_arm-userdebug  13. aosp_manta-userdebug  ……
在build/envsetup.sh中只增加了默认的几项:
<code># add the default one   hereadd_lunch_combo aosp_arm-engadd_lunch_combo aosp_arm64-engadd_lunch_combo   aosp_mips-engadd_lunch_combo aosp_mips64-engadd_lunch_combo   aosp_x86-engadd_lunch_combo aosp_x86_64-eng</code>
    lunch函数会到venor和device目录中寻找vendorsetup.sh,然后执行文件中类似的
<code>add_lunch_combo   aosp_flounder-userdebug</code>
然后就会多出个
<code><code>  7.   aosp_flounder-userdebug</code></code>
    Android 5.1可以自动识别JAVA_HOME
参见build/envsetup.sh,代码如下:
<code><code># Force JAVA_HOME to   point to java 1.7 or java 1.6  if it isn't already set.## Note that the   MacOS path for java 1.7 includes a minor revision number (sigh).# For some   reason, installing the JDK doesn't make it show up in the#   JavaVM.framework/Versions/1.7/ folder.function set_java_home() { # Clear   the existing JAVA_HOME value if we set it ourselves, so that # we can   reset it later, depending on the version of java the build # system   needs. # # If we don't do this, the JAVA_HOME value set by the   first call to # build/envsetup.sh will persist forever. if [ -n   "$ANDROID_SET_JAVA_HOME" ]; thenexport   JAVA_HOME="" fi  if [ ! "$JAVA_HOME" ];   thenif [ -n "$LEGACY_USE_JAVA6" ]; then  case `uname -s`   inDarwin) export   JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home ;;*) export   JAVA_HOME=/usr/lib/jvm/java-6-sun ;;  esacelse  case   `uname -s` inDarwin) export JAVA_HOME=$(/usr/libexec/java_home -v   1.7) ;;*) export   JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 ;;  esacfi #   Keep track of the fact that we set JAVA_HOME ourselves, so that# we can   change it on the next envsetup.sh, if required.export   ANDROID_SET_JAVA_HOME=true fi}</code></code>
    Android 5.1的编译使用了openjdk,在ubuntu上可以直接通过apt-get进行安装。
    如何新建一个device
从原有的device目录复制一份,将目录命名为你要新建的设备名称。如把msm8916_64复制一份,重命名为msm8916_d500。
    将msm8916_d500目录下的AndroidProducts.mk内容更新为:
<code><code>PRODUCT_MAKEFILES :=   \ $(LOCAL_DIR)/msm8916_d500.mk</code></code>
将msm8916_d500目录下原有的msm8916_64.mk重命名为msm8916_d500.mk。修改里面的PRODUCT_NAME和PRODUCT_DEVICE:
<code><code>PRODUCT_NAME :=   msm8916_d500PRODUCT_DEVICE := msm8916_d500</code></code>
在msm8916_d500目录下新建一个vendorsetup.sh,在里面增加combo选项,这样msm8916_d500就会出现在lunch菜单里。
<code><code>add_lunch_combo   msm8916_d500-userdebugadd_lunch_combo msm8916_d500-engadd_lunch_combo   msm8916_d500-user</code></code>
修改msm8916_d500目录下的AndroidBoard.mk,修改KERNEL_DEFCONFIG,将其指向我们自己的defconfig文件:
<code><code>#----------------------------------------------------------------------#   Compile Linux   Kernel#----------------------------------------------------------------------ifeq   ($(KERNEL_DEFCONFIG),) ifeq ($(TARGET_BUILD_VARIANT),user)KERNEL_DEFCONFIG   := msm8916_d500-perf_defconfig elseKERNEL_DEFCONFIG :=   msm8916_d500_defconfig endifendif</code></code>
    msm8916_d500_defconfig和msm8916_d500-perf_defconfig在kernel/arch/arm/configs目录下,不存在的话,要以msm8916_defconfig为模板新建一个,并在其中加入一行:
<code><code>CONFIG_BOARD_SEUIC_D500=y</code></code>
这个变量会在导入dts中用到。
kernel/arch/arm/boot/dts/qcom/Makefile中增加:
<code><code>dtb-$(CONFIG_BOARD_SEUIC_D500)   += msm8916_d500.dtb</code></code>    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注移动开发之Android频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程