手工编译Android程序  

赖锋

我的china-unix博客 http://laiboy.cublog.cn

我的CSDN博客 http://blog.csdn.net/laiboy

程序描述

利用命令行方式重新编译Android自带的Notepad程序!通过手工安装程序到摸拟器上运行!

程序目的

了解Eclipse的Android开发插件编译,部署程序的过程!

为实现Android应用程序自动化构建部署作准备前工作.

实现流程

以下为实现命令行构建Android应用程序的流程图

以下为实现过程的演示步聚

准备工作

1.设置环境变量

由于是选择Androi2.3的例子,所以选择5

设置了相应的环境变量

2.创建基于Android2.3的摸拟器,使用以下命令创建

android create avd -c 32M -t 6 -n AndroidVD2.3

则创建一个32M,基于android2.3平台的摸拟器

运行摸拟器

emulator -avd AndroidVD2.3

以下有两个辅助命令,很有帮助

列出SDK支持的开发列表

android list target

列出已创建的摸拟器列表

android list avd

注意点:如果没有设置ANDROID_SDK_HOME这个环境变量,则虚拟机会安装在默认目录下,在windows平台上默认目录为

C:/User/<user>/.android

构建过程

以下为android sdk自带例子的目录结构,我删除了test的目录,这部分不需要

以上是一个标准的android的应用程序目录结构,手工开发也应该遵守官方推荐标准(事实也可以自已定义目录结构)

例子没有bin,gen,assets这三个目录,需要建立这三个目录.

以下为我编译notepad的过程,具体参数意义参考官方文档

1.选用aapt生成资源文件

  1. aapt package -f -m -J gen -S res -I E:/android-sdk-windows/platforms/android-9/android.jar -M AndroidManifest.xml

这个会在gen目录下生成R.java文件

2.编译生成的java文件与源文件

  1. javac -encoding GB18030 -target 1.5 -bootclasspath E:/android-sdk-windows/platforms/android-9/android.jar -d bin src/com/example/android/notepad/*.java gen/com/example/android/notepad/R.java

这会在bin目录下生成java字节码文件

3.利用dx将文件编译成Dalvik虚拟机文件

  1. dx.bat --dex --output=G:/Danny-workshop/workspace-android/NotePad/bin/classes.dex G:/Danny-workshop/workspace-android/NotePad/bin

我定义生成的文件名为classes.dex

4.利用aapt生成资源包文件

我定义生成的资源包文件名为resources.ap_

5.利用apkbuilder生成未带签名证书的apk安装包

  1. apkbuilder.bat G:/Danny-workshop/workspace-android/NotePad/bin/Notepad_usigned.apk -v -u -z G:/Danny-workshop/workspace-android/NotePad/bin/resources.ap_ -f G:/Danny-workshop/workspace-android/NotePad/bin/classes.dex -rf G:/Danny-workshop/workspace-android/NotePad/src

6.利用keytool生成签名

  1. keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore

这个命令会在当前目录下生成一个android.keystore的文件

7.用jarsigner对apk进行签名

  1. jarsigner -verbose -keystore G:/Danny-workshop/workspace-android/NotePad/android.keystore -storepass kingsoft -keypass kingsoft -signedjar G:/Danny-workshop/workspace-android/NotePad/bin/Notepad.apk G:/Danny-workshop/workspace-android/NotePad/bin/Notepad_usigned.apk android.keystore

 

一个完成的应用程序已实现,可以进行安装了!

部署过程 安装

在启动摸拟器的情况下,输入以下命令,即可安装

以上提示为程序成功安装

  1. adb install Notepad.apk

 

缷载程序

1.摸拟器删除

可以在摸拟器里的settings删除程序

  1. Application->Manager->Uninstall

2.手工删除

在摸拟器成功启动的情况下,输入以下命令

  1. adb shell
  2. #cd data
  3. #cd app
  4. #rm 指定的程序名
  5. #exit

即可删除安装的程序

小结

学习,永没止境!!

  1. aapt package -f -M AndroidManifest.xml -S res -A assets -I E:/android-sdk-windows/platforms/android-9/android.jar -F bin/resources.ap_

手工编译Android程序相关推荐

  1. 记一次android程序反编译并二次打包的过程

    例行广告,推广一下我的博客http://zwgeek.com 在安全界有一句话叫不懂攻,焉知防. 前几天看到有一个问题在问Android端目前防止二次打包的方法有哪些?我想从攻击的角度来说这个问题.在 ...

  2. 《深入解析Android 虚拟机》——第1章,第1.3节编译Android源码

    本节书摘来自异步社区<深入解析Android 虚拟机>一书中的第1章,第1.3节编译Android源码,作者 钟世礼,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  3. vs2015编译android,VS2015 Update2 构建 Android 程序问题汇总

    自VS2015起, Visual Studio开始逐渐内置支持跨平台开发, 并且Visual Studio团队还额外发布了一个编译工具集Clang with Microsoft CodeGen, 方便 ...

  4. Android程序apk编译、打包、签名

    一直想搞清楚Android apk是怎么编译打包并且签名发布Application的??今天花了几个小时,并在网上查资料,终于把apk编译签名打包整个流程弄清楚了. PS:因为android程序一共有 ...

  5. ffmpeg 编译Android

    环境 macOS 10.15.4    NDK 21.3.6528147   ffmpeg 4.2.3 1.执行sudo xcodebuild -license,防止编译的时候找不到一些文件报错 2. ...

  6. android 牛人必修 ant 编译android工程

    最近比较懒,博客一直都没更新,上次有人问ant 来编译android 工程,这里我就完整的整理了一下.如果你嫌弃IDE太慢或者觉得手动编译更Cool,不用IDE你可以学到更多.也是成为牛人的必修课啊! ...

  7. 【Android 逆向】代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 )

    文章目录 一.Android 平台代码调试器代码 二.Android.mk 构建脚本内容 三.Application.mk 构建脚本内容 四.正式编译 五.博客资源 一.Android 平台代码调试器 ...

  8. 安卓9.0刷linux,Ubuntu系统下编译Android 9.0系统

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 在Ubuntu系统下编译Android系统.哎呀不知道是不是换了新电脑的缘故,这次编译居然从安装JDK和配置环境下 ...

  9. 基于ubuntu16.04多用户编译android N(android 7.1)系统提示ninja_wrapper错误问题

    基于ubuntu16.04多用户编译android N(android 7.1)系统提示ninja_wrapper错误问题 Ubuntu 1604系统除了root,还有kandi和sundi两个用户, ...

最新文章

  1. javascript知识点
  2. python自动化可以做什么菜_用 Python 自动化办公能做到哪些有趣或有用的事情?...
  3. SpringCloud之声明式服务调用 Feign(三)
  4. Enterprise search Callstack in runtime
  5. nginx正则表达式
  6. 使用windows crypto API加密解密
  7. 一个JS多个数组取交集算法
  8. C++实现txt文件读到另一个txt文件,并替代其中默写特定字符
  9. 稳压二极管型号对照表
  10. iOS 加速计 摇一摇
  11. 电商或财务系统计算钱精度的问题
  12. C语言解决渔夫打鱼晒网问题
  13. 关于ADS1292测心率心电的一些学习总结
  14. 什么是静态测试?什么是动态测试?
  15. 共享单车变天: 竞争尚未结束,哈罗已超摩拜ofo?
  16. 白帽子讲Web安全学习之浏览器
  17. 京东和区块链的那些事儿
  18. SiamCAR: Siamese Fully Convolutional Classification and Regression for Visual Tracking
  19. uni-app如何让图片高度自适应
  20. 稳定性高可用测试——各大厂质量保障实践分享汇总(下)

热门文章

  1. 【Android 异步操作】AsyncTask 异步任务 ( 参数简介 | 方法简介 | 使用方法 | AsyncTask 源码分析 )
  2. 【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )
  3. 大龄开发人员如何破局
  4. vue java 使用AES 前后端加密解密
  5. base--AuditResult
  6. 软件架构设计 导言
  7. GridView的Command命令集合
  8. 通过 React Hooks 声明式地使用 setInterval
  9. 814. Binary Tree Pruning
  10. day38--MySQL基础二