Android面试题-Android源码编译实现静默安装和静默偷拍

Android程序员面试宝典

自定义控件

  • 一分钟实现贴纸功能
  • 一分钟实现TextView高亮
  • 一分钟实现新手引导页
  • 一分钟实现ViewPager卡片
  • 一分钟实现轮播图
  • 一分钟实现GridView拖拽
  • 一分钟实现底部导航栏
  • 一分钟实现底部FragmentTabhost
  • 一分钟实现多张图片选择
  • 一分钟实现仿美拍直播的点赞动画
  • 一分钟实现高仿今日头条视频列表
  • 一分钟实现购物车加减控件
  • 一分钟实现省市县三级联动
  • 一分钟实现二维码生成和扫描
  • 一分钟实现沉浸式状态栏
  • 一分钟实现图片裁剪
  • 一分钟实现视频弹幕
  • 一分钟实现图片缩放
  • 一分钟实现旋转选择器
  • 一分钟实现ofo小黄车的引导界面
  • 一分钟实现自定义ImageView外貌
  • 一分钟实现向左拖拽跳转详情页
  • 一分钟实现QQ首页动画特效
  • 一分钟实现ViewPager上下滑动

联网

  • 一分钟学会Retrofit并且进行实战
  • 一分钟实现OkHttp3

工具

  • 一分钟实现RecyclerView
  • 一分钟实现H5和Android通信
  • 一分钟实现pinyin4j
  • 一分钟实现分析内存泄漏

数据库

  • 一分钟实现LitePal数据库
  • 一分钟实现ormlite数据库
  • 一分钟实现GreenDao数据库

源码分析相关面试题

  • Volley源码分析
  • 注解框架实现原理
  • okhttp3.0源码分析
  • onSaveInstanceState源码分析
  • 静默安装和源码编译

Activity相关面试题

  • 保存Activity的状态
  • 深刻剖析activity启动模式(一)
  • 深刻剖析activity启动模式(二)
  • 深刻剖析activity启动模式(三)
  • Activity Task和Process之间的关系
  • 源码分析service开启Activity抛异常?activity不会抛异常
  • Activity优雅退出
  • onCreate源码分析

Service相关面试题

  • IntentService源码分析
  • Service是否在main thread中执行, service里面是否能执行耗时的操作?
  • Service不死之身

与XMPP相关面试题

  • XMPP协议优缺点
  • 极光消息推送原理

与性能优化相关面试题

  • 内存泄漏和内存溢出区别
  • UI优化和线程池实现原理
  • 代码优化
  • 内存性能分析
  • 内存泄漏检测
  • App启动优化
  • 与IPC机制相关面试题

与登录相关面试题

  • oauth认证协议原理
  • token产生的意义
  • 微信扫一扫实现原理

与开发相关面试题

  • 迭代开发的时候如何向前兼容新旧接口
  • 手把手教你如何解决as jar包冲突
  • context的原理分析
  • 解决ViewPager.setCurrentItem中间很多页面切换方案
  • 字体适配
  • 软键盘适配
  • 机型适配,例如三星、小米、华为、魅族等
  • CardView 设置水波纹效果

与人事相关面试题

  • 人事面试宝典

本文配套视频

  • 静默安装原理一
  • 静默安装原理二

很多哥们在后台公众号留言,让讲讲如何编译源码,感觉源码开发很神秘,好吧,今天就手把手教大家安装虚拟机编译源码,文字部分的东西就别看了,毕竟源码或者技术这种东西三言两语也讲不明白,直接看视频吧,通过本文我录制的视频希望对大家能起到抛砖引玉的作用,不过这个视频是我在三年前录制的,讲的是通过源码编译不需要root权限实现静默安装和偷拍,然后也把Android系统安装源码给大家分析了,毕竟三年前随堂录制的视频,也比较简单的东西,如果没有收获随便看看就行,有收获点个赞就行,对静默安装感兴趣就从第一个视频开始看起,如果只是单纯对源码编译感兴趣,直接从第二个视频15分钟开始看就行,这样能节约大家的时间,视频时间有点长。

四年前写的静默安装代码,有兴趣看看吧:http://www.apkbus.com/forum.php?mod=viewthread&tid=120895

Android源码分析

1. 了解虚拟机的的使用

Android 系统的编译环境目前只支持 Linux 以及 Mac OS 两种操作系统
虚拟机可以很方便的搭建不同系统的开发环境
虚拟机可以完整的模拟一台电脑
虚拟机中的系统独立于主系统存在,子系统的损坏与否不影响主系统功能

1.1. 了解虚拟机的安装和创建新虚拟机的方法

Android面试题-Android源码编译实现静默安装和静默偷拍_第1张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第2张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第3张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第4张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第5张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第6张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第7张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第8张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第9张图片

1.2. 了解虚拟机里安装Ubuntu系统的方法

Android面试题-Android源码编译实现静默安装和静默偷拍_第10张图片
Android面试题-Android源码编译实现静默安装和静默偷拍_第11张图片
Android面试题-Android源码编译实现静默安装和静默偷拍_第12张图片
Android面试题-Android源码编译实现静默安装和静默偷拍_第13张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第14张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第15张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第16张图片

Android源码下载

Android源码下载支持的系统目前只有Ubuntu和Mac OS两种操作系统, 本次以Ubuntu系统为例.

官方网站: http://source.android.com/source/downloading.html

  1. 下载Git(版本控制工具). 调出命令行: ctrl + alt + T

     sudo apt-get install git
    
  2. 安装curl(上传和下载数据的工具).

     sudo apt-get install curl
    
  3. 安装repo(一个基于git的版本库管理工具, 这里用于自动批量下载android整个项目.).

     // 创建目录
     mkdir bin
    
     // 下载repo脚本到本地bin文件夹下
     curl http://android.git.kernel.org/repo >~/bin/repo
     // 如果上面下载失败, 采用下面这种方式
     curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" >~/bin/repo
    
     // 给所有用户追加可执行的权限
     chmod a+x ~/bin/repo
    
     // 临时把repo添加到环境变量中, 方便后面执行.
     // 注意: 每次重启ubuntu之后此环境变量失效, 重新配置就可以了.
     export PATH=~/bin:$PATH
    
  4. 创建文件夹, 用于存放下载的Android源码.

     // 创建目录
     mkdir android_source 
    
     // 修改权限
     chmod 777 android_source
    
     cd android_source
    
  5. 初始化库.

     // 需要先配置git的用户信息
     git config --global user.email "[email protected]"
     git config --global user.name "liyindong"
    
     repo init -u https://android.googlesource.com/platform/manifest -b android-2.3_r1
     
     // 如果上面初始化失败, 用下面的代码
     repo init -u git://codeaurora.org/platform/manifest.git -b gingerbread
     // 或
     repo init -u git://android.git.kernel.org/platform/manifest.git -b  gingerbread
    
    出现以下信息成功初始化
     repo initialized in /home/liyindong/android_source
    
  6. 开始同步下载.

     repo sync
    

    注意: 下载过程中, 因为网络问题, 可能会中断下载. 当中断下载时, 继续使用repo sync命令继续下载.

Android源码编译

在编译源码之前需要做一些准备操作, 详细步骤如下:

1. 安装JDK, google官方要求编译2.3源码需要JDK1.6.

  • 1). 下载JDK1.6, 下载地址:http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin

  • 2). 创建目录.

      sudo mkdir /usr/java
    
  • 3). 把下载好的jdk-6u45-linux-x64.bin拷贝到上面创建的目录下.

      sudo cp /home/liyindong/jdk-6u45-linux-x64.bin /usr/java
    
  • 4). 添加可执行权限.

      sudo chmod 755 /usr/java/jdk-6u45-linux-x64.bin
    
  • 5). 解压.

      cd /usr/java
      sudo ./jdk-6u45-linux-x64.bin
    
  • 6). 配置环境变量.

      export JAVA_HOME=/usr/java/jdk1.6.0_45
      export PATH=$PATH:$JAVA_HOME/bin
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
  • 7). 验证是否成功.

      liyindong@liyindong-VirtualBox:~$ java -version
      java version "1.6.0_45"
      Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
      Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
    

2. 安装其他编译时依赖的软件.

注意: ubuntu自带的源中速度比较慢, 有些软件找不到, 所以需要修改为国内的源, 修改源步骤如下:

  • 1). 备份ubuntu自带的源.

      sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
    
  • 2). 修改源文件.

      sudo gedit /etc/apt/sources.list
    
  • 3). 这时会弹出一个文本编辑框, 先删除所有内容, 然后把以下内容拷贝进去, 并保存.

      deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
      deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
      deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
      deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
      deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
      deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
      deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
      deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
      deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
      deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
      
      deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
      deb http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
      deb http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
      deb http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
      deb http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
      deb-src http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
      deb-src http://mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
      deb-src http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
      deb-src http://mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
      deb-src http://mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
      
      deb http://mirrors.oschina.net/ubuntu/ trusty main restricted universe multiverse
      deb http://mirrors.oschina.net/ubuntu/ trusty-backports main restricted universe multiverse
      deb http://mirrors.oschina.net/ubuntu/ trusty-proposed main restricted universe multiverse
      deb http://mirrors.oschina.net/ubuntu/ trusty-security main restricted universe multiverse
      deb http://mirrors.oschina.net/ubuntu/ trusty-updates main restricted universe multiverse
      deb-src http://mirrors.oschina.net/ubuntu/ trusty main restricted universe multiverse
      deb-src http://mirrors.oschina.net/ubuntu/ trusty-backports main restricted universe multiverse
      deb-src http://mirrors.oschina.net/ubuntu/ trusty-proposed main restricted universe multiverse
      deb-src http://mirrors.oschina.net/ubuntu/ trusty-security main restricted universe multiverse
      deb-src http://mirrors.oschina.net/ubuntu/ trusty-updates main restricted universe multiverse
    
  • 4). 保存之后, 更新数据源.

      sudo apt-get update
    
  • 执行完上面几步, 数据源就更新完成了, 下面就开始安装编译依赖的软件, 同样, 在终端中以行为单位依次输入以下命令:

      sudo apt-get install gnupg
      sudo apt-get install flex
      sudo apt-get install bison
      sudo apt-get install gperf
      sudo apt-get install zip
      sudo apt-get install curl
      sudo apt-get install build-essential
      sudo apt-get install libesd0-dev
      sudo apt-get install libwxgtk2.6-dev
      sudo apt-get install libsdl-dev
      sudo apt-get install lsb-core
      sudo apt-get install lib32readline-gplv2-dev
      sudo apt-get install g++-multilib
      sudo apt-get install lib32z1-dev
      sudo apt-get install libswitch-perl
    

3. 开始编译, 在源码的目录下, 执行一下命令:

    make

5. 了解SourceInsight的使用方法

Android面试题-Android源码编译实现静默安装和静默偷拍_第17张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第18张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第19张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第20张图片

Android面试题-Android源码编译实现静默安装和静默偷拍_第21张图片
Android面试题-Android源码编译实现静默安装和静默偷拍_第22张图片
  • 欢迎关注微信公众号,长期推荐技术文章和技术视频
  • 微信公众号名称:Android干货程序员
Android面试题-Android源码编译实现静默安装和静默偷拍_第23张图片

你可能感兴趣的:(Android面试题-Android源码编译实现静默安装和静默偷拍)