当前位置: 首页 > wzjs >正文

成都建站网站杭州网站建设培训班

成都建站网站,杭州网站建设培训班,西宁网站建设费用,商务厅网站建设意见背景: 马哥学员朋友以前在vip群里,有问道如何在Android.bp中添加条件判断,在工作中经常需要一套代码兼容发货目标版本,即代码都是公共的一套,但是需要用这一套代码集成到各个产品设备上 但是这个产品设备可能面临比…

背景:

马哥学员朋友以前在vip群里,有问道如何在Android.bp中添加条件判断,在工作中经常需要一套代码兼容发货目标版本,即代码都是公共的一套,但是需要用这一套代码集成到各个产品设备上
在这里插入图片描述

但是这个产品设备可能面临比较多的情况,例如有以下几种:

1、产品设备可能面临android大版本的差异,新老版本的api可能都有差异,都写到代码中无法编译通过

2、产品本身有一些特别定制的功能,可能面临只是在某些机型有这个功能

在这里插入图片描述
面临上面要适配多个机型差异的问题,大家可能第一时间会想到用不同的代码分支不就行了么,但是大家注意如果用不同的代码分支同时意味着每个分支的代码你都需要进行维护,维护工作量极大,也就是经常可能修改了一个bug,做了一个新需求,你不得不同步一遍到多个分支,这样一旦机型多了,差异多了,你的维护成本会越来越多。

所以使用分支差异来管理是不可取的,一般还是希望一个公共分支可以实现对多个机型的适配,那么这个该怎么实现呢?
这个其实也需要分情况来进行考虑,主要有2种情况:

情况1:代码层面可以区分,通过相关产品类型属性值等代码端走不同的分支

情况2:代码编译依赖api或者库都有差异,即会有编译上的差别情况,那么这种就一定需要通过Android.mk,Android.bp中进行相关的条件判断才可以

下面我们主要针对情况2的编译差异进行讲解相关方法。

Android.mk配置条件判断

Android.mk这个实现判断编译比较简单

1 获取当前安卓版本号‌

通过$(PLATFORM_VERSION)获取系统版本值,例如:
13对应Android 13(Tiramisu),14对应Android 14(UpsideDownCake)‌

2‌ 条件分支实现‌
使用ifeq/else根据版本号选择依赖文件

案例1:使用不通过的依赖jar

# 示例:Android 13及以上使用新JAR,低版本使用旧JAR
ifeq ($(PLATFORM_VERSION),13)LOCAL_JAVA_LIBRARIES := new_sdk_jar
elseLOCAL_JAVA_LIBRARIES := legacy_sdk_jar
endif

案例1:使用不通过的依赖代码文件夹

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)# Android 14使用新功能类,其他版本使用兼容类
ifeq ($(PLATFORM_VERSION),14)LOCAL_SRC_FILES := $(LOCAL_PATH)/src/new_feature/*.java
elseLOCAL_SRC_FILES := $(LOCAL_PATH)/src/compat/*.java
endifLOCAL_MODULE := my_library
include $(BUILD_JAVA_LIBRARY)

Android.bp配置条件判断

Android.mk是可以直接有条件判断,但Android.bp中的条件判断相对就复杂的多,下面是整个源码:
目录结构如下:
test@test:~/aosp/get_display_ids$ tree

.
├── aidl
│   └── android
│       └── hardware
│           └── display
│               ├── DisplayInfo.aidl
│               └── IDisplayManager.aidl
├── Android.bp  ---核心bp文件
├── src
│   ├── DisplayBase.cpp
│   ├── DisplayBase.h
│   ├── main1.cpp  --sdk版本大于33的编译的cpp文件
│   └── main.cpp  --sdk版本小于等于33的编译的cpp文件
└── version.go ---主要判断版本然后控制编译不同cpp的go文件5 directories, 9 files

逻辑都在version.go文件核心源码(完整源码分享vip群中)
在这里插入图片描述

再看看Android.bp

// add start
bootstrap_go_package {name: "soong-version",pkgPath: "android/soong/version",deps: ["soong-android","soong-cc",],srcs: ["version.go",],pluginFor: ["soong_build"],
}filegroup {name: "libdms_client_aidl",srcs: ["aidl/**/*.aidl"],path: "aidl"
}cc_library {name: "libdms_client",srcs: [ "src/DisplayBase.cpp",":libdms_client_aidl"],aidl: {export_aidl_headers: true,local_include_dirs: ["aidl"],},export_include_dirs: ["src",],shared_libs: ["libbinder","liblog","libutils",],
}cc_version_binary {name: "version_defaults",
}
// add endcc_binary {name: "get_display_ids",defaults: ["version_defaults"],//依赖version_defaultsshared_libs: ["libbinder","liblog","libutils","libdms_client",],
}

aosp13上验证结果
代码差异:
在这里插入图片描述

编译时候:
在这里插入图片描述
执行时候:

在这里插入图片描述

aosp14上验证结果
代码差异:
在这里插入图片描述

编译时候:
在这里插入图片描述
执行时候:

在这里插入图片描述
因为aosp14版本是sdk为34

更多framework实战开发干货,请关注下面“千里马学框架”


文章转载自:

http://8JcM32Y4.qbLbg.cn
http://KJf4L2Xo.qbLbg.cn
http://a3z1sVCq.qbLbg.cn
http://ikOUagnG.qbLbg.cn
http://SXB8zatz.qbLbg.cn
http://BINRES73.qbLbg.cn
http://e5rde9wI.qbLbg.cn
http://AQ29Zt69.qbLbg.cn
http://RALAqUsB.qbLbg.cn
http://ip4kPjOu.qbLbg.cn
http://aOT2vKsp.qbLbg.cn
http://Hahp3Xts.qbLbg.cn
http://RXP0DHgX.qbLbg.cn
http://x9O0JGID.qbLbg.cn
http://G7C5BD99.qbLbg.cn
http://9TKRI3gL.qbLbg.cn
http://01R90fqt.qbLbg.cn
http://zNVzjGDM.qbLbg.cn
http://4gydEwCe.qbLbg.cn
http://bMnx0Ynu.qbLbg.cn
http://POF1pQEC.qbLbg.cn
http://E6Yf3L2f.qbLbg.cn
http://Zxnrb5EL.qbLbg.cn
http://ym31bgkE.qbLbg.cn
http://LZtCfidJ.qbLbg.cn
http://IALlLyU3.qbLbg.cn
http://yfxwu2JP.qbLbg.cn
http://Pjdj2L5W.qbLbg.cn
http://lSdDFgoQ.qbLbg.cn
http://D1lW9BMm.qbLbg.cn
http://www.dtcms.com/wzjs/617941.html

相关文章:

  • 网站正在建设中 给你带来dw怎么做自我展示网站
  • 做网站彩票的代理好吗wordpress页面教程
  • php彩票网站建设教程怎么用dw做简单网站
  • 怎么做试玩平台推广网站企业宣传册模板科技
  • wordpress制作单页网站导航页面wordpress 商品站
  • 常州专业做网站家居企业网站建设渠道
  • 服务器怎么添加网站韶关网站开发
  • flash 网站建设软件定制网
  • 做网站用不用thinkphp云南房产网站建设
  • 做的好的办公家具网站seo咨询推广找推推蛙
  • 网站建设外包排名东莞比较好的设计公司
  • 网站建设课程有哪些收获中国排名第一的策划公司
  • 效果型网站建设安徽省建设监理网站
  • 基于html5的电商网站开发网站建设的简要任务执行书
  • 北京做养生SPA的网站建设制作企业宣传片拍摄公司
  • 自己的网站打不开了北京通网站建设
  • 郑州网站建设企业推荐怎么做电商运营
  • 上海网站开发定制wordpress标签分级
  • 网站编辑适不适合男生做wordpress 阌栾
  • 手机网站和电脑网站开发wordpress seo
  • 红安建设局官方网站河南小学网站建设
  • 临沂做网站wyjzgzs设计logo怎么设计
  • 企业为什么要建站点呢广州做网站公司电话
  • 商城网站大全做网站改版的
  • 沈阳市建设局网站首页嘉兴网络项目建站公司
  • 免费软件不收费网站WordPress相册插件pro
  • 网站建立策划书郑州设计logo公司
  • 6731官方网站下载it培训学校哪家好
  • 如何做学校的网站设计项目三的设计与制作
  • html5网站开发语言的有点亚马逊电商平台入口