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

本文涉及的产品
简介: 在之前的博客中我们看到,可以使用函数计算来实现一个自定义的图像处理服务,这个服务是稳定、可靠、弹性伸缩的,并且它是无服务器架构,按函数的调用时间收费,节省了服务器闲置的开销和运维成本。 使用函数计算可以方便地构建类似的微服务,比如我们可以创建一个处理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

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
前端开发 Android开发
使用Android Studio(AS)查看apk信息
使用Android Studio(AS)查看apk信息
499 0
使用Android Studio(AS)查看apk信息
获取apk的签名信息
在接入第三方功能时,经常要注册提交apk的签名信息 (sha1签名)?,下面列出相关步骤。 获取apk签名信息的步骤: 1)修改apk后缀名为zip,解压得到其中的META-INF文件夹; 2)把META-INF文件夹放到C盘根目录下; 3)在dos面板中,  敲入命令:  keytool -printcert -file C:\META-INF\CERT.
4294 0
|
3月前
|
存储 监控 Serverless
在处理阿里云函数计算3.0版本的函数时,如果遇到报错但没有日志信息的情况
在处理阿里云函数计算3.0版本的函数时,如果遇到报错但没有日志信息的情况【1月更文挑战第23天】【1月更文挑战第114篇】
63 5
|
6月前
|
C#
.net core 从(本地)服务器获取APK文件并解析APK信息
## 1、apk解析除了使用客户端利用aapt.exe、unzip.exe开发客户端解析外,还可以直接利用服务进行解析 ```csharp /// <summary> /// 从本地服务器获取APK文件并解析APK信息 /// </summary> /// <param name="fileName">APK文件的完整路径</param> /// <returns></returns> [HttpPost, HttpGet, HttpOptions, CorsOptions] public IActionResult DecodeAPK(string fileName) { if(fi
29 0
|
10月前
|
存储 运维 数据挖掘
关于EMR Serverless StarRocks的信息
关于EMR Serverless StarRocks的信息
80 1
|
12月前
|
Kubernetes Cloud Native 安全
浪潮信息龙蜥联合实验室领衔成立 Serverless SIG, 打造标准化开源解决方案
龙蜥社区首届 Serverless SIG MeetUp 圆满结束,共同探讨了 SIG 的发展规划及共建方案。
浪潮信息龙蜥联合实验室领衔成立 Serverless SIG, 打造标准化开源解决方案
|
Serverless Python
函数计算中使用Python语言编写函数的运行环境信息——环境说明
函数计算中使用Python语言编写函数的运行环境信息——环境说明自制脑图
1024 0
函数计算中使用Python语言编写函数的运行环境信息——环境说明
|
Java 测试技术 程序员
软件测试|解析 apk 基本信息和方法调用
软件测试|解析 apk 基本信息和方法调用
136 0
软件测试|解析 apk 基本信息和方法调用
错误代码:88000, 错误信息:without comment privilege hint: [7oJ0533w689] rid: 630432cd-15944cf6-083e04fc
错误代码:88000, 错误信息:without comment privilege hint: [7oJ0533w689] rid: 630432cd-15944cf6-083e04fc
144 0
错误代码:88000, 错误信息:without comment privilege hint: [7oJ0533w689] rid: 630432cd-15944cf6-083e04fc
|
Web App开发 JSON Ubuntu
使用函数计算的常态化疫情信息推送
常态化疫情管控下,我们还是需要了解疫情发展态势,以便做出旅行甚至是通勤的决策。主动查询太心累了,那么就不妨试试使用函数计算来每日定时推送常态化疫情信息。省心、省力又便捷。
29310 2
使用函数计算的常态化疫情信息推送

相关产品

  • 函数计算