2024年Android的多渠道打包,音视频开发面试

总结

作为一名从事Android的开发者,很多人最近都在和我吐槽Android是不是快要凉了?而在我看来这正是市场成熟的表现,所有的市场都是温水煮青蛙,永远会淘汰掉不愿意学习改变,安于现状的那批人,希望所有的人能在大浪淘沙中留下来,因为对于市场的逐渐成熟,平凡并不是我们唯一的答案!

资料.png
资料图.jpg

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

}

}

//如果需要在不同渠道统一配置,使用productFlavors.all字段

productFlavors.all { flavor ->

flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]

}

applicationVariants.all { variant ->

variant.outputs.each { output ->

def outputFile = output.outputFile

if (outputFile != null && outputFile.name.endsWith(‘.apk’)) {

def fileName = outputFile.name.replace(“.apk”, “-${defaultConfig.versionName}.apk”)

output.outputFile = new File(outputFile.parent, fileName)

}

}

}

如果没有错误情况,我们会在Android studio的BuildVariant看到对应的渠道,如下图所示:

image.png

  1. 获取渠道

在代码中我们可以通过读取mate-data信息来获取渠道,然后添加到请求参数中,获取方法如下:

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

String channel=getChannel();

Toast.makeText(MainActivity.this, “channel==” + channel, Toast.LENGTH_SHORT).show();

}

private String getChannel() {

try {

PackageManager pm = getPackageManager();

ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);

return appInfo.metaData.getString(“UMENG_CHANNEL”);

} catch (PackageManager.NameNotFoundException ignored) {

}

return “”;

}

然后再进行签名

签名配置

签名主要有两种方式:

  1. 手动签名打包

  2. 自动签名。

手动签名打包:

image.png

使用之前签名的文件,输入密码进行签名打包,如下图

image.png

选择打包渠道,如下图

image.png

finish后,生成apk文件,如下图

image.png

自动签名打包(通过命令的方式进行签名):

自动签名,是在我们的application中的build.gradle(Module:app),先配置好签名文件信息,我们要先创建好一个签名文件.

(1)加载Key Store:

我们先删掉上面的通过第一种方式所签名的apk文件。接下来进行第二种方式来签名,即命令行的方式。

打开Project Stucture图形化界面:

image.png

上图中,选中app这个module,然后切换到signing标签栏,紧接着点击添加,然后生成release签名信息,点击"OK"。

image.png

上图中,切换到Build Types标签,将Signing config选择为"release",即将刚刚生成的release签名信息配置进去。

操作完成之后,我们可以看到app这个module的build.gradle文件多出了如下红框部分的代码:

image.png

然后执行菜单栏的"build-clean Project":

image.png

(2)生成realease版本的apk:

在命令行Terminal输入如下命令:(AS已经将命令行Terminal集成到了软件当中)

gradlew assembleRelease

如果运行成功,效果如下:

image.png

项目/app/build/outputs/apk目录下

image.png

(3)为什么要使用gradlew命令而不是gradle命令:

在项目工程目录下有一个gradle文件夹,在gradle/wrapper目录下有一个gradle-wrapper.properties文件,打开:

image.png

上图代表着这个工程所依赖的gradle的版本信息。上图的红线表示,如果我们的工程中没有gradle,软件会根据这个url去下载gradle,终于知道为啥第一次打开AS时会这么慢了吧?

注意如果我们执行了gradlew命令,实际上是执行上面的gradle wrapper,然后找到我们已经下载好的gradle 2.2.1。如果现在有很多个工程,但是每个工程的gradle版本都不一样,我就必须要将每个版本的gradle都要配置到环境变量当中,而执行了gradlew命令,就会避免这个麻烦。

再把安装包在手机上安装即可。

缺点:

这样的打包方式效率比较低下,如果是几十个包还可以应付,打一个包快的话需要十几秒,慢的话需要几分钟不等,跟机器性能很有关系。

美团多渠道打包(速度比较快)

==============

原理

把一个Android应用包当作zip文件包进行解压,然后发现在签名生成的目录下(META-INF)添加一个空文件不需要重新签名。利用这个机制,该文件的文件名就是渠道名。这种方式不需要重新签名等步骤,非常高效。

优点:

这种打包方式速度非常快,900多个渠道不到一分钟就能打完

缺点:

1、google如果哪天更改打包规则,使得在META-INF中建立空文件还需要重新打包,这种方式将不可用

2、一些不法的渠道商很容易通过工具修改渠道,如果一个渠道商,通过网络劫持和篡改渠道的组合方式来获取暴利,对于程序开发者来说可能会存在着巨大的经济损失

如何使用

把需要打包的apk放在一个文件夹PythonTool下:

image.png

image.png

image.png

info文件夹下,czt.txt自动生成:

image.png

image.png

360多渠道打包(如果打包上百个)

=================

原理

apk文件本质就是zip文件,利用zip文件“可以添加comment(摘要)”的数据结构特点,在文件的末尾写入任意数据,而不用重新解压zip文件,我们就可以将渠道信息写入摘要区

优点:

1、5M的apk,1秒种能打300个

2、在下载apk的同时,服务端可以写入一些信息,例如邀请码,分享信息等

Android核心知识点

面试成功其实是必然的,因为我做足了充分的准备工作,包括刷题啊,看一些Android核心的知识点,看一些面试的博客吸取大家面试的一些经验。

下面这份PDF是我翻阅了差不多3个月左右一些Android大博主的博客从他们那里取其精华去其糟泊所整理出来的一些Android的核心知识点,全部都是精华中的精华,我能面试到现在2-2资深开发人员跟我整理的这本Android核心知识点有密不可分的关系,在这里本着共赢的心态分享给各位朋友。

不管是Android基础还是Java基础以及常见的数据结构,这些是无原则地必须要熟练掌握的,尤其是非计算机专业的同学,面试官一上来肯定是问你基础,要是基础表现不好很容易被扣上基础不扎实的帽子,常见的就那些,只要你平时认真思考过基本上面试是没太大问题的。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

本上面试是没太大问题的。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值