最近在研究apk的编译,有些技术点放到这里作为备注吧。
下面图是手动打包的过程图
手动编译的流程如下:
1.生成资源文件
2.编译本地库
3.编译java代码
4.生成dex文件
5.打包资源文件
6.生成apk文件
7.对apk文件进行签名
1.生成资源文件,使用aapt生成R.java类文件:
aapt package -f -m -J ./gen -S res -I D:\tools\java\android-sdk-windows\platforms\android-16\android.jar -M AndroidManifest.xml
其中
-f -m -J ./gen 代表按覆盖的形式在gen目录下生成带包路径的R.java
-S res指定资源文件
-I D:\tools\java\android-sdk-windows-1.6_r1\platforms\android-7\android.jar 指定使用的android类
-f force overwrite of existing files
-m make package directories under location specified by -J
-J specify where to output R.java resource constant definitions
-S directory in which to find resources. Multiple directories will be scanned and the first match found (left to right) will take precedence.
-I add an existing package to base include set
2.编译本地库,使用android SDK提供的aidl.exe把.aidl转成.java文件:
usage: aidl OPTIONS INPUT [OUTPUT]
aidl --preprocess OUTPUT INPUT...
OPTIONS:
-I<DIR> search path for import statements.
-d<FILE> generate dependency file.
-p<FILE> file created by --preprocess to import.
-o<FOLDER> base output folder for generated files.
-b fail when trying to compile a parcelable.
INPUT:
An aidl interface file.
OUTPUT:
The generated interface files.
3.编译java代码,编译.java类文件生成class文件
javac -encoding utf8 -target 1.5 -bootclasspath D:\tools\java\android-sdk-windows-1.6_r1\platforms\android-7\android.jar -d bin/classes src\com\jimmy\*.java src\com\baidu\np\client\*.java gen\com\jimmy\*.java
4.生成dex文件,使用android SDK提供的dx.bat命令行脚本生成classes.dex文件:
dx.bat --dex --output=d:/workspace/testaa/bin/classes.dex d:/workspace/testaa/bin/classes
5.打包资源文件,使用Android SDK提供的aapt.exe生成资源包文件(包括res、assets、androidmanifest.xml等):
aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I D:\tools\java\android-sdk-windows-1.6_r1\platforms\android-7\android.jar -F bin\byreadreader
将AndroidManifest.xml,res和assets文件夹中的资源文件打包生成byreadreader,用法参见1
6.生成apk文件,第六步 生成未签名的apk安装文件:
D:\tools\java\android-sdk-windows-1.6_r1\tools\apkbuilder.bat d:/workspace/testaa/misc_dj_np.apk -u -z d:/workspace/testaa/bin/byreadreader -f d:/workspace/testaa/bin/classes.dex -rf d:/workspace/testaa/src -rj d:/workspace/testaa/lib
apkbuilder ${output.apk.file} -u -z ${packagedresource.file} -f ${dex.file} -rf ${source.dir} -rj ${libraries.dir}
${output.apk.file} -u 创建一个未签名的包
-z ${packagedresource.file} 将文件压缩,添加到包里面
-f ${dex.file} 将文件添加到包里面
-rf ${source.dir}
-u Creates an unsigned package.
-z Followed by the path to a zip archive. Adds the content of the application package.
-f Followed by the path to a file. Adds the file to the application package.
-rf Followed by the path to a source folder. Adds the java resources found in that folder to the application
package, while keeping their path relative to the source folder.
7.对apk文件进行签名, 使用jdk的jarsigner对未签名的包进行apk签名:
java -jar D:\MyWorks\component\lib\signature\sign.jar keystore/platform.x509.pem keystore/platform.pk8 misc_dj_np.apk misc_dj_np_sined.apk
其中
–keystore f:\explorer\eclipse3.5\bbyread.keystore 为密钥文件
-storepass byread002为密钥文件密码
byread 为密钥别名
-keypass byread002为密钥别名密码
-signedjar f:\explorer\byread.apk为签名后生成的apk文件
f:\explorer\byreadreader.apk为未签名的文件
经过以上7个步骤,就可以获得一个签名的apk了。
在反编译的时候
apktool d -f apk/xxx.apk decode/xxx
查看decode/xxx/res/values 有三个文件 ids.xml, public.xml, string.xml
ids.xml 这个项目有多少id 都在这个ids.xml文件中声明。
public.xml ids对应的索引。
string.xml 项目的所有string声明 都在这个文件里。
相关推荐
最近在做项目,sqlite中有大量的手动存进去得数据,在打包成APK时候,发现,sqlite没有一起被打包过,现提供解决方案和demo的源码,希望对各位有用。
项目写完了,现在需要把应用上传到市场上面,那么怎么把项目打包成apk呢?下面脚本之家小编给大家带来了Android Studio手动打包的方法,一起看看吧
ant打包android工程,手动打包apk文件
如果出现打包失败的报错可能是你把项目解压到了中文目录,另外解压后的文件夹名为:"安装apk"是中文项目路径需要手动改一下文件夹名称应该就可以打包了。安装包在根目录下可直接安装在手机测试。最新使用androidx...
主要介绍了Android apk无法安装及闪退问题的相关资料,这里对闪退问题进行详解及解决步骤的详细介绍,需要的朋友可以参考下
android热更新方案,apaapatch
unity打包安卓实现安卓应用开机自启。使用方法:把"安卓开机自动.arr"文件导入到unity项目中,手机重启后等待1-2分钟该应用即可自己打开。之前的在安卓10上没效果,修改了下。适用于安卓10版本。注意:需要在安卓10里...
android apk的打包工具,包含windows,linux32位和linux64位。用于aapt工具的一些功能,查看apk的一些信息等,为android开发爱好者提供手动打包apk的工具。
Android APK v1签名库,便于开发跟APK签名有关的应用或利用生成的jar包手动签名 说明 本项目包含两个Module ,使用的均是V1签名,签名后可适用所有Android版本。 JarSigner > sun提供的签名方案 ApkSigner > ...
如果只用生成少量的apk,那么可以将所有图片因此,必须手动更换图片和代码进行打包。容易出错,也比较低效,一旦出错必须全部重新返工。所有就写了一个简单的Python脚本来进行一次性批量打包。 ###安装Python环境...
phaser3-cordova 参考文献 ... 流 游戏文件在phaser_project目录中 阅读phaser_project...要cordova build android apk,请使用cordova build android (有关详细信息,请参见参考资料) 如果Android要求的PATH已更正
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
为了成功利用此软件,您的系统上应该存在以下工具: apktool (打包)APK apksigner签署APK zipalign优化APK adb安装APK和管理Android设备您可以手动获取它们(例如,在Debian中使用apt-get ),也可以运行scripts/...
之前没有设置过打包的命名,每次打包都是默认的”app-realease.apk”,之后手动修改名字来显示出它是一个新版本。 晚上学习了如何配置打包名称,很简单,修改build.gradle里的代码就行。 详细记录如下: 1、打开...
Android应用程序更新检查器,下载并安装apk(自动或手动)。 支持API级别8+ 更新记录 v2.1.0 添加消费者保护规则,以保持Gson转换相关类。 无需添加额外的proguard。 v2.0.0 使用rxjava而不是线程Gradle,将以下...
每次发版本,产品部都会提供一个渠道列表,Android开发者会根据这些渠道相应地生成渠道包,随着渠道越来越多,客户端如果都是机械手动去打的话,会累死,程序猿都是聪明而懒惰的,客户端打渠道包的方法一直在演进和...
拷贝到SDK目录下的tools文件夹下使用,用于手动打包apk。 工具是可用的,如果报错看一下是不是路径的问题。
建造要从源代码手动构建,请克隆此存储库并运行以下命令: npm installnpm run build然后可以在build目录中找到打包的文件。 要构建Android APK,请安装Android SDK并运行: npm run build:android执照GPL-3.0
获取root权限补丁说明: 本补丁是基于RK3399验证通过!!! 1.在device/rockchip/common目录下打上0001-android8.1-root.patch (进入common目录后使用命令 ...6、更新固件后使用测试apk或者其他apk验证root权限
1.自动化app_v1.0.0.apk是打包好的apk,可以直接安装使用 2.针对伊对app自动化的操作,需安装伊对app,并要自行登录app 2.后台是用nodejs写的,chatbot.sql是mysql数据表结构 3.index.js是手机端js脚步 测试步骤 1....