搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
正经夜光杯
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
NLP实用小工具Tokenizer和pad_sequences进行文本的数字编码和长度填充或截断_tokenizer 统计特征的长度
2
vue项目基于WebRTC实现一对一音视频通话_vue实战 1-1 webrtc点对点语音视频通话
3
ADS仿真工具使用_ads仿真软件
4
真实遇到的产品经理面试题
5
【AI 大模型】提示工程 ① ( 通用人工智能 和 专用人工智能 | 掌握 提示工程 的优势 | 提示工程目的 | 提示词组成、迭代、调优及示例 | 思维链 | 启用思维链的指令 | 思维链原理 )_ai 提示词工程
6
Item2vec_movielens item2vec
7
JS常用方法_数组对象元素保留某些属性
8
海康视觉平台VisionMaster使用学习笔记(1)_visionmaster图像源怎么连接相机
9
【Pytorch】学习记录分享8——自然语言处理基础-词向量模型Word2Vec_pytorch word2vec
10
⛳ TCP 协议详解
当前位置:
article
> 正文
Android自动打包之命令行打包
作者:正经夜光杯 | 2024-07-01 14:13:10
赞
踩
android自动打包
Android自动打包流程详细图:
总结为以下几个步骤:
1. 生成R文件
2. Java代码编译成class文件
3. class文件生成dex文件
4. 打包资源
5. 生成apk
6. 创建密匙
7. 签名apk
下面用Ubuntu命令行来打包,流程如下:
1. 生成R文件,命令如下:
aapt package -f -m -J
$BUILD_SOURCE_PATH/
$ANDROID_GEN
\
-A
$BUILD_SOURCE_PATH/
$PACKAGE_RESOURCE_FILE
\
-S
$BUILD_SOURCE_PATH/
$ANDROID_RESOURCE_DIRECTORY
\
-I
$BUILD_API_LEVEL_JAR
\
-M
$BUILD_SOURCE_PATH/
$MANIFEST_FILE
-f 如果编译生成的文件已经存在,强制覆盖。
-m 使生成的包的目录存放在-J参数指定的目录
-J 指定生成的R.java 的输出目录路径
-S 指定res文件夹的路径
-I 指定某个版本平台的android.jar文件的路径
-A 指定assert文件夹的路径
2.将Java代码编译成class文件,命令行如下:
javac -encoding UTF-8
\
-target 1.7
\
-bootclasspath
$BUILD_API_LEVEL_JAR
\
-d
$BUILD_SOURCE_PATH/
$ANDROID_BIN/
$ANDROID_BIN_CLASSES
\
$BUILD_SOURCE_PATH/
$ANDROID_GEN/com/clarck/httpclientnew/R.java
\
$BUILD_SOURCE_PATH/src/com/clarck/httpclientnew/*.java
-encoding <编码> 指定编码格式
-target <版本> 生成特定 VM 版本的类文件
-bootclasspath <路径> 覆盖引导类文件的位置
-d <目录> 指定存放生成的类文件的位置
-sourcepath <路径> 指定查找输入源文件的位置
3. class文件生成dex文件,命令行如下:
dx --dex --output
=
$BUILD_SOURCE_PATH/
$ANDROID_BIN/
$ANDROID_CLASSES_DEX
\
$BUILD_SOURCE_PATH/
$ANDROID_BIN/
$ANDROID_BIN_CLASSES
--output=<要生成的classes.dex路径> <要处理的class文件的路径>
4. 打包资源,命令行如下:
aapt package -f -M
$BUILD_SOURCE_PATH/
$MANIFEST_FILE
\
-S
$BUILD_SOURCE_PATH/
$ANDROID_RESOURCE_DIRECTORY
\
-A
$BUILD_SOURCE_PATH/
$PACKAGE_RESOURCE_FILE
\
-I
$BUILD_API_LEVEL_JAR
\
-F
$BUILD_SOURCE_PATH/
$ANDROID_BIN/byreadreader
-f 如果编译生成的文件已经存在,强制覆盖
-M 指定AndroidManifest.xml的路径
-S 指定res文件夹路径
-I 指定某个版本平台的android.jar的路径
-F 指定输出文件完整路径
5. 生成apk,命令行如下:
apkbuilder
$BUILD_APK_PATH/
$BUILD_APK_NAME
\
-v -u -z
$BUILD_SOURCE_PATH/
$ANDROID_BIN/byreadreader
\
-f
$BUILD_SOURCE_PATH/
$ANDROID_BIN/
$ANDROID_CLASSES_DEX
\
-rf
$BUILD_SOURCE_PATH/
$ANDROID_SRC
-v Verbose 显示过程信息
-u 创建一个无签名的包
-z 指定apk资源路径
-f 指定dex文件路径
-rf 指定源码路径
6. 创建密匙,命令行如下:
keytool -genkey -alias release -keyalg RSA -validity 20000 -keystore release.keystore
-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias 产生别名
-keyalg 指定密钥的算法
-validity 指定创建的证书有效期多少天
-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)
7. 签名apk,命令行如下:
jarsigner -verbose -keystore release.keystore -storepass !@#
$%^ -keypass !@#
$%^ -signedjar
$BUILD_APK_PATH/
$BUILD_RELEASE_APK_NAME
$BUILD_APK_PATH/
$BUILD_APK_NAME release
-verbose 签名/验证时输出详细信息
-keystore 密钥库位置
-storepass 用于密钥库完整性的口令
-keypass 专用密钥的口令(如果不同)
-signedjar 已签名的 JAR 文件的名称 (第一个apk是签名之后的文件, 第二个apk是需要签名的文件)
注:关于混淆代码,只需要在project.properties中指定用來混淆的.pro文件即可。
以上命令可以综合使用一个shell脚本来执行,具体demo详见:
https://github.com/clarck/CommandAutoBuild
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/正经夜光杯/article/detail/776675
推荐阅读
article
【
Android
Studio
】创建第一个
APP
工程及
生成
APK安装包_
android
studio
...
本文详细介绍创建
Android
Studio
第一个
APP
工程及打包
生成
APK安装包。_
android
studio
怎么生...
赞
踩
article
Android
studio
自带的
LoginActivity
连接
MySQL
实现登录功能_an...
用
Android
studio
自带的
LoginActivity
连接
MySQL
实现登录功能
连接
MySQL
import j...
赞
踩
article
【
Android
Studio
】--- 创建运行第一个App Hello
world
超详细_and...
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将...
赞
踩
article
Android
项目
必备(三十)-->从 0 到 1
开发
一个
属于自己的
App
_
android
小项...
一个
Android
开发
者的真正蜕变,要从真正做
一个
属于自己的
App
开始,只有自己
一个
人摸索、研究,真正靠自己踏上...
赞
踩
article
Android
Gradle
Plugin、
Gradle
、
Android
Studio
版本关系_an...
本文详细说明了
Android
Gradle
Plugin与不同
Gradle
版本的对应关系,
Android
Studio
各个版本...
赞
踩
article
Android
Studio
Koala
|
2024.
1
.
1
发布,快来看看有什么更新吧_andr...
可以看到,
Android
Studio
现在从
Koala
开始,每个动物版本都会有两个版本更新,
1
版本更新容器,...
赞
踩
article
Android
SDK
是什么?...
在深入探讨
Android
SDK
之前,我们首先需要明确其定义和重要性。
Android
SDK
,全称
Android
Sof...
赞
踩
article
android
webview
调用
js
滚动
到指定位置...
【代码】
android
webview
调用
js
滚动
到指定位置。
android
webview
调用
js
滚动
到指定位置 ...
赞
踩
article
老罗
专访:
Android
源码
之旅_
老罗
android
源码
...
老罗
专访:
Android
源码
之旅【原文链接】http://www.csdn.net/article/2014-08-1...
赞
踩
article
Android
WebSocket
使用指南
:详细步骤与实践_
android
连接
websocket
...
WebSocket
是一种在单个长
连接
上进行全双工通信的协议。相比于传统的HTTP请求,
WebSocket
可以减少通信...
赞
踩
article
Android
ffmpeg
入门(1)—— 使用
NDK
交叉
编译
ffmpeg
集成到
Android
项目
_...
使用
NDK
交叉
编译
ffmpeg
静态库,并集成到
Android
项目
实现JNI互调。_
编译
ffmpeg
ndk
之前,配置an...
赞
踩
article
Android
Aidl for
hal
开发案例_
android
11(r) power
hal
a...
一次Aidl for
hal
的实现案例,包含bp编译、
aidl
接口、服务端、客户端、selinux的实现以及一些问题的解...
赞
踩
article
3种解决安卓(
android
)
手机
锁屏
密码
忘记的
方法
!_
adb
绕过
usb
调试
解开
手机
密码
...
方法
一:ADB解锁 点击下载ADB解锁工具必要条件:USB
调试
模式为打开状态(MIUI系统默认打开)1、
手机
连接电脑,确...
赞
踩
article
Android
App保护用户隐私————
禁止
应用
截屏或
录屏
_
android
禁止
录屏
...
近几年随着移动互联的饱和,基本上各项技能都有所完善,这里就保护用户隐私————
禁止
应用
截屏或
录屏
来给大家做实际
应用
以及实...
赞
踩
article
Android
UI高级之
自定义
控件
...
Android
UI高级之
自定义
控件
----仿360加速器
Android
UI高级之
自定义
控件
...
赞
踩
article
android
:
自定义
view
--
组合
控件_
android
组合
控件...
项目中用到了很多类似的界面,一行左右两边都是显示文本,数量非常多;如果按照普通的方法画肯定也能非常轻松的画出来,但是因为...
赞
踩
article
Android
自定义
view
第二弹——
组合
控件
_
android
自定义
view
组合
控件
...
概述:本篇为
自定义
控件
的三种实现方式第一种—
组合
控件
,在此篇中,我将以一个例子的形式来展现
组合
控件
的实现方式。一
组合
控件
...
赞
踩
article
Android
自定义
View
★...
实现一个
自定义
View
,你通常会覆盖一些framework层在所有view上调用的标准方法。你不需要重写所有这些方法。事...
赞
踩
article
Android
UI
自定义
控件
_使用
android
的
fragment
碎片
控件
、textview文本...
Android
UI
自定义
控件
自绘
控件
(图表等无交互的
控件
)组合
控件
继承
控件
事件类
控件
容器类
控件
自绘
控件
(图表等无交互...
赞
踩
article
android
自定义
view
_
创建
一个
draw
view
,继承自
android
.
view
.
view
...
组合控件就是将多个控件组合成
一个
新的控件,可以重复使用应用场景:在项目中经常会遇到一些比较复杂的UI块需要用在多处使用,...
赞
踩
相关标签
android studio
android
ide
mysql
数据库
java
javascript
开发语言
源代码
专访
程序员
websocket
网络协议
音视频
ffmpeg
android ndk
ndk