使用函数计算来抽取apk信息

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 在之前的博客中我们看到,可以使用函数计算来实现一个自定义的图像处理服务,这个服务是稳定、可靠、弹性伸缩的,并且它是无服务器架构,按函数的调用时间收费,节省了服务器闲置的开销和运维成本。 使用函数计算可以方便地构建类似的微服务,比如我们可以创建一个处理android apk文件的微服务: 小吴将下

之前的博客中我们看到,可以使用函数计算来实现一个自定义的图像处理服务,这个服务是稳定、可靠、弹性伸缩的,并且它是无服务器架构,按函数的调用时间收费,节省了服务器闲置的开销和运维成本。

使用函数计算可以方便地构建类似的微服务,比如我们可以创建一个处理android apk文件的微服务:

  • 小吴将下载的apk文件上传到OSS
  • 他想分析一下这些apk应用的权限信息:

    1. 使用aapt工具抽取出每个apk文件的权限信息
    2. 将它们录入到数据库中(rds),方便日后查询

步骤

1. 创建一个OSS bucket

https://oss.console.aliyun.com/index#/

注意创建bucket时选择“华东2”区域。

image

2. 创建RDS数据库

https://rdsnew.console.aliyun.com/

  1. 在RDS控制台创建一个实例(注意选择华东2区域和经典网络)

    ![image](https://yqfile.alicdn.com/6d84edced63309c4c24cead703e0332861e20e22.png?x-oss-process=image/resize,m_mfit,w_600)
  2. 选择实例创建一个数据库
  3. 创建一个用户并授权其访问数据库的权限
  4. 添加白名单,允许所有的IP访问

    ![image](https://yqfile.alicdn.com/a7c7be069b825d298b769a3cf4b94a3aae012511.png?x-oss-process=image/resize,m_mfit,w_600)
    

3. 创建函数计算的服务和函数

https://fc.console.aliyun.com

  1. 创建服务
    image
  2. 准备aapt工具
    函数计算的运行环境是基于debian:8的镜像,因此我们最好在同样的环境下下载aapt工具:

    1. docker run -it -v $(pwd):/opt debian:8
    2. 在容器中运行apt-get update && apt-get install -y aapt
    3. 将aapt及其所依赖的库从容器中拷贝出来:
    4. mkdir /opt/aapt
    5. cp $(which aapt) /opt/aapt/
    6. cp -R /usr/lib/android /opt/aapt/
    7. ldd $(which aapt) | grep -v android将其所依赖的库也拷贝到/opt/aapt/
  3. 准备函数代码
    由于函数用到了mysql这个模块,所以需要将其安装:

    1. npm install mysql
      安装完毕之后,整个代码目录的结构是这样的:

    image

  4. 打包上传到OSS
    将整个代码目录打包成zip:

    1. 编辑index.js将其中的数据库信息替换成自己真实的信息
    2. zip -r code.zip *
    3. 将code.zip上传到OSS
  5. 创建函数
    image
    跳过触发器的设置,完成函数创建。

函数的关键代码如下,完整的代码包点此下载

  ossClient.get(objectName, apkPath).then(function(res) {
    exec.execFile(
      '/code/aapt/aapt', ['dump', 'permissions', apkPath],
      {
        env: {
          'LD_LIBRARY_PATH': '/code/aapt:/code/aapt/android',
        },
      }, function(err, stdout, stderr) {
        if (err) {
          callback(err);
          return;
        }
        var apkPerm = stdout;
        console.log('%s permissions: %s', apkName, apkPerm);

        conn.query(
          'CREATE TABLE IF NOT EXISTS APK_PERM(NAME VARCHAR(50) NOT NULL, PERM TEXT, PRIMARY KEY (NAME))',
          function(err) {
            if (err) {
              callback(err);
              return;
            }

            conn.query(
              'REPLACE INTO APK_PERM VALUES (?, ?)', [apkName, apkPerm], function(err, results) {
                if (err) {
                  callback(err);
                  return;
                }
                console.log('insert ok: %s', results);
                callback(null, 'ok');
              }
            );
          });
      });
  }).catch(function(err) {
    console.error('error: ', err);
    callback(err);
  });

4. 运行函数并查看结果

https://fc.console.aliyun.com

  1. 先将需要分析的apk文件上传到OSS
  2. 在函数计算控制台执行函数,指定event的内容为apk文件所在位置

    ![image](https://yqfile.alicdn.com/ea9462a60bd57f2fe5ed49ab793c6778b234fc7b.png?x-oss-process=image/resize,m_mfit,w_800)
    

可以看到函数运行成功,接下来我们可以去RDS数据库中确认一下:

image

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
前端开发 Android开发
使用Android Studio(AS)查看apk信息
使用Android Studio(AS)查看apk信息
658 0
使用Android Studio(AS)查看apk信息
|
JavaScript 前端开发
js解析上传APK文件的详细信息
js解析上传APK文件的详细信息
|
6月前
|
弹性计算 缓存 Serverless
Serverless 应用引擎操作报错合集之阿里函数计算中我打开sd时遇到错误,信息为"Function instance exited unexpectedly(code 1, message:operation not permitted) with start command ' '."如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
299 6
|
3月前
|
Serverless 对象存储
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
40 1
|
4月前
|
存储 弹性计算 Serverless
Serverless 应用引擎使用问题之如何解决在回滚之后实例部署信息中没有显示任何实例
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
运维 Serverless 开发工具
函数计算产品使用问题之怎么保存token之类共用信息
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
监控 Serverless 文件存储
函数计算操作报错合集之显示的错误信息 "Reserve resource exceeded limit",一般是什么导致的
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
5月前
|
消息中间件 监控 前端开发
函数计算操作报错合集之当遇到错误信息为Concurrent request count exceeded时,该如何解决
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
106 0
|
5月前
|
前端开发 Serverless Shell
函数计算操作报错合集之遇到错误信息为HandlerNotFound,该怎么办
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
6月前
|
人工智能 监控 算法
函数计算助力领健信息为“看牙”注入 AI 活力
口腔治疗+函数计算=效率提升🚀 领健作为业界领先的口腔机构,面向口腔诊所提供正畸算法,但早期的算法部署遇到较多问题,因此在对比了阿里云的多个云产品之后,最终选择了函数计算。 通过将 GPU 计算负载放到函数计算,领健技术团队达到了很好的降本效果,相比早前的按月持有 GPU 资源,函数计算的费用降低了 90% 左右,并大大提升了使用体验,实现了前所未有的敏捷性和效率。
57275 3

热门文章

最新文章

相关产品

  • 函数计算