dex-preopt,使用方法

Android 8.0 odex预编译与空间占用相关设置探究 本文主要介绍安卓8.0版本下,当开起odex预编译后,系统system分区占用过高,ROM包大小过大的解决方案。同时简单介绍了odex的相关内容以及其他可能的解决方案。 阅读详情

#
# Usage: dex-preopt [options] path/to/input.jar path/to/output.odex
#
# This tool runs a host build of dalvikvm in order to preoptimize dex
# files that will be run on a device

.
# The input may be any sort of jar file (including .apk files), as long
# as it contains a classes.dex file. Note that optimized versions of
# bootstrap classes must be created before this can be run on other files;
# use the "--bootstrap" option to do this.
#
# The "output.odex" file must not already exist.
# 

 

#
# This is expected to be running in a user build environment, where
# "dexopt" is available on the host.
#
# Options:
#   --build-dir=path/to/out -- Specify where the base of the build tree is.
#     This is typically a directory named "out". If not specified, it is
#     assumed to be the current directory. The specified input and output
#     paths are taken to be relative to this directory.
#   --dexopt=path/to/dexopt -- Specify the path to the dexopt executable.
#     If unspecified, there must be a unique subdirectory of the build-dir
#     that looks like host/ARCH/bin which must contain dexopt.
#   --product-dir=path/to/product -- Specify the path, relative to the build
#     directory, where the product tree to be used is. This directory should
#     contain the boot classpath jar files. If not specified, then there
#     must be a unique directory in the build named "target/product/NAME",
#     and this is the directory that will be used.
#   --boot-dir=path/to/bootclasspath -- Specify the path, relative to the
#     product directory, of the directory where the boot classpath files
#     reside. If not specified, this defaults to "system/framework"
#   --boot-jars=list:of:jar:base:names -- Specify the list of base names
#     of bootstrap classpath elements, colon-separated. Order is significant
#     and must match the BOOTCLASSPATH that is eventually specified at
#     runtime on the device. This defaults to "core". However, this really
#     needs to match the target product's BOOTCLASSPATH, which, as of this
#     writing, doesn't have a super-strict way of being defined within the
#     build. You can find variations of it in different init.rc files under
#     system/core/rootdir or under product-specific directories.
#   --bootstrap -- Process the bootstrap classes. If this is specified,
#     then, instead of processing a specified input file, no other arguments
#     are taken, and what is processed is the entirety of the boot jar
#     list, in order.
#   --verify={none,remote,all} -- Specify what level of verification to
#     do. Defaults to "all".
#   --optimize={none,verified,all} -- Specify which classes to optimize.
#     Defaults to "verified".
#   --no-register-maps -- Indicate that the output should not contain
#     register maps. By default, register maps are created and included.
#   --uniprocessor -- Indicate that the output should target a uniprocessor.
#     By default, optimizations will be made that specifically target
#     SMP processors (which will merely be superfluous on uniprocessors).
#

  43 # $(1): the input .jar or .apk file
  44 # $(2): the output .odex file
  45 define dexpreopt-one-file
  46 $(hide) $(DEXPREOPT) --dexopt=$(DEXPREOPT_DEXOPT) --build-dir=$(DEXPREOPT_BUILD_DIR) \
  47     --product-dir=$(DEXPREOPT_PRODUCT_DIR) --boot-dir=$(DEXPREOPT_BOOT_JAR_DIR) \
  48     --boot-jars=$(DEXPREOPT_BOOT_JARS) $(DEXPREOPT_UNIPROCESSOR) \
  49     $(patsubst $(DEXPREOPT_BUILD_DIR)/%,%,$(1)) \
  50     $(patsubst $(DEXPREOPT_BUILD_DIR)/%,%,$(2))
  51 endef


 

ODEX文件转换成DEX文件工具 一、APK生成odex文件方法: 编译开源GIT上的build/tools/dexpreopt/dexopt-wrapper这个,使用dexopt-wrapper即可,操作步骤 将dexopt-wrapper放到/data/local目录中,使用adb shell执行linux命令行,使用cd命令进入/data/local目录, cd /data/local ./dexopt-wrapper android123.apk android123.odex 二、合并odex和 少dex的apk 为完整的apk文件 1. 需要odex所在rom中的一些引用类,一般在 /system/framework 目录中 2 . 通过odex生成class文件 java -jar baksmali-1.2.6.jar -x android123.odex 执行完上面这行命令后,会生成一个out 文件夹里面是android123.odex的class文件。主意,最好把odex文件放到framework目录下执行上面的命令,免得报缺少类文件的错误。 3. 通过class生成classes.dex 文件。 java -Xmx512M -jar smali-1.2.6.jar out -o classes.dex 4. 将classes.dex放到apk文件 因为apk是zip的mime编码类型,使用winzip或winrar直接拖入到apk改名为zip的压缩包中即可。 5. 不要忘记了签名,使用jdk中的arsigner和keytool打包重新签名即可。 主意:1.2.2版本的用不起的,会报错。 立即下载

相关推荐

Android PREBUILT APPS 运行dex preopt

NULL 博文链接:https://qianjigui.iteye.com/blog/1987213

android编译dex-preopt

对于android2.3编译时候选择下面的情况,既可以对dex进行preopt优化了。 如何从apk生成odex 在BoardConfig.mk中加入 # Enable the optimized DEX WITH_DEXPREOPT=true 或者直接修改system.prop # ODEX dalvik.vm.verify-bytecode=true ...

quanminchaoren 1270

汽车LED驱动芯片TPS92682-Q1 SPI接口配置与调试实战指南

SPI(串行外设接口)作为一种高速、全双工的同步串行通信总线,广泛应用于微控制器与外围设备之间的数据交换。其工作原理基于主从架构,通过时钟、数据线和片选信号实现设备间的精准时序控制。在汽车电子和工业控制领域,SPI因其简单高效、易于扩展的特性,成为配置复杂电源管理芯片、传感器和存储器的关键技术。通过SPI接口,工程师能够动态调整设备参数、实时读取状态信息,并实现复杂的故障诊断与保护策略,极大地提升了系统的灵活性与可靠性。本文以汽车级双通道LED恒流驱动器TPS92682-Q1为例,深入解析如何通过SPI接口

weixin_29185493的博客 288

Android 预编译优化笔记

做 Android 系统开发,碰到了首次开机会很久的问题,这里针对改善措施做下记录。 以下修改在 6.0 、8.0 上做过验证,是 OK 的。 1.打开预编译优化 修改 device/xxx/xxx/BoardConfigCommon.mk , 添加 WITH_DEXPREOPT := true DEX_PREOPT_DEFAULT := nostripping 去掉 WITH_DEXPREOPT_BOOT_IMG_ONLY := true #WITH_DEXPREOPT_BOOT_IMG_ONLY :=

weixin_44021334的博客 3919

使用OpenCV进行3D重建:详细指南

3D重建是计算机视觉领域的一项关键技术,它能够从二维图像中恢复出场景的三维结构。这项技术在机器人视觉、增强现实和3D建模等多个领域都有广泛的应用。在本篇技术博客中,我们将详细介绍如何使用OpenCV这一流行的计算机视觉库来实现3D重建。我们将逐步探讨整个过程,包括相机标定、特征点提取与匹配、立体校正、深度图计算以及最终的三维重建。3D重建是一个复杂的过程,涉及多个步骤和多种算法。OpenCV提供了强大的工具来支持这一过程,从相机标定到特征点提取与匹配,再到立体校正和深度图计算,最后实现三维重建。

weixin_41544125的博客 1315

从零开始:如何在Windows上搭建Airsim仿真环境(避坑指南)

本文是一份详细的Windows平台AirSim仿真环境搭建指南。文章从硬件要求、Visual Studio与虚幻引擎安装开始,逐步讲解AirSim插件编译、UE项目配置,并重点介绍了通过WSL2连接PX4飞控软件实现软件在环仿真的完整流程。内容涵盖常见问题排查与性能优化,旨在帮助开发者避开常见陷阱,高效构建可用于无人机算法开发的虚拟测试平台。

earth的博客 300

Failed to open dex from file

编译时使用odex形式优化后的apk报错, 有可能是在Android.mk中的配置有问题, 如: LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages com.android.camera 如果实在没办法解决, 可以关掉ODEX, 在Android.mk中添加以下语句: LOCAL_DEX_PREOPT := false ...

攻城狮的物联网基地 488

PCL 法向量夹角剔除错误匹配点对【2026最新版】

实现了一种简单的基于对应点法线角度的对应关系去除方法。博客长期更新,本文最新更新时间为:2026年5月24日。

点云侠的博客 41万+

解决adb push ODEX 后缀文件不生效的问题

1、在Android.mk中添加 LOCAL_DEX_PREOPT := false 2、 mm -B 编译后将生成 APK 文件,之后知道该怎么办了吧

wonbin2011的专栏 983

《Python基础教程》专栏总结篇

今天给大家带来的文章是《Python基础教程》专栏总结篇,希望能对同学们有所帮助。 文章目录 1. 背景 2. 专栏亮点 3. 你的收获 4. 详细目录

weixin_43178406的博客 73万+

手把手教你学Simulink——基于多能互补微电网系统的建模与优化场景实例:风柴储联合供电系统在孤岛模式下的功率分配建模

本文介绍了使用MATLAB/Simulink和Simscape Electrical构建风柴储联合供电系统的建模方法。系统包含风力发电、柴油发电、储能电池等模块,重点研究孤岛模式下功率分配策略。详细说明了从创建项目、添加模块到搭建风力发电系统(含MPPT控制)、柴油发电系统及集成各模块的全过程,并提供了仿真参数设置建议。通过分析频率偏差、电池SOC等关键指标,验证了系统在维持稳定运行的同时能有效利用可再生能源。该模型为研究多能互补微电网提供了实验平台,未来可拓展更高效的能量管理策略和AI技术的应用。

MHD0815的博客 1万+

Android 编译不生成odex文件

Android 编译不生成odex文件

Android framework 429

道威棱镜的设计参考

道威棱镜的设计参考

weixin_72050316的博客 379

让某个android app不做odex

LOCAL_DEX_PREOPT=false 直接加入这个app编译的android.mk 即可。 这样在调试app时候就很方便,不需要push odex文件。 以防忘记push odex导致编译不生效!

qq_37610155的博客 3195

即插即用系列(代码实践) | CVPR 2025 FDConv:频域动态卷积,打破密集预测任务的参数效率瓶颈

本文提取自 CVPR 2025 的最新底层算子革新论文《Frequency Dynamic Convolution for Dense Image Prediction》。近年来,动态卷积(Dynamic Convolution)通过融合多个并行卷积核极大地提升了模型性能,但研究表明:这些并行卷积核在频域上的响应高度相似,导致了极其严重的参数浪费,且缺乏对不同频率特征的自适应能力。本文复现了该网络的核心架构——FDConv(频率动态卷积)。该方案创造性地在傅里叶域(Fourier Domain)中学习固定参

分享顶会顶刊论文即插即用模块 110

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android 4.0源码编译不生成odex

修改/build/core/package.mk,找到LOCAL_DEX_PREOPT := ture,把值改为false,这个是生成apk程序时只生成apk的包,不再生成odex。 修改/build/core/java_library.mk,找到LOCAL_DEX_PREOPT := ture,把值改为false,这个是生成jar程序时只生成jar的包,不再生成odex。

无问的专栏 3207

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

android 不生成odex文件方法 .

在Android.mk文件中加入下面一句: LOCAL_DEX_PREOPT := false 就直接打包生成.apk 不会附带生成.odex文件了

langze的专栏 1049

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android修改了sdk里面的apk编译push进机器不生效问题

修改了sdk里面的apk,例如packages/apps/Settings, 然后编译 czd/rk3399_7.1_ind/packages/apps/Settings$ mm -B -j8 push进去机器,改动却没有生效。 做法:可以在Android.mk加上这句:+LOCAL_DEX_PREOPT := false true为odex版本,false为非odex版本; 目前库上的代码编译apk时,同时生成了apk和odex,push/install进去不生效。 ODEX是安卓上的应用程序apk中提

Android/Linux驱动开发传帮带学习,让驱动入门门槛更低! 5229

android7.x版本编译framework.jar无效解决(五十二)

Android.mk添加: LOCAL_DEX_PREOPT := false # make framework.jar -j32 # adb shell # rm -rf /system/framework/arm # rm -rf /system/framework/arm64 # adb push framework.jar /system/framework

Android系统攻城狮 3067

rockchip 系列apk预安装几个需要注意的地方

2 存放在X:\android\android11\vendor\rockchip\common\apps中 通常是以文件夹的形式,这里可以参考一个apk的方法进行操作,这里需要注意的是文件夹名称和apk的名称最好一致。这种方法集成的apk也会在编译的时候进行优化并且在out对应的目录产生oat优化目录。这个目录直接存放.apk的文件进来,脚本会自动解压apk生成对应的app文件夹 这个里面的apk都是会经过dex2oatd64进行优化的。

xiaowang_lj的博客 354

android mk odex问题 push apk 不生效

Android编译是否生成odex的设置 默认编译odex版本,如果需要非odex版本,请将device/huawei/k3v2_s10/BoardConfig.mk如下两个变量的值修改为:DISABLE_DEXPREOPT := trueWITH_DEXPREOPT := false其它说明A. device/hisi/k3v2oem1/下面的配置文件不再使用,对应的配置文件在device/h...

weixin_30751947的博客 271

Verification error in boolean android.app.HomeVisibilityObserver.isHomeActivityVisible()

某些应用会依赖一些第三方 jar 包,编译时如果打开了预编译优化,全编译时可能报错无法正常编译。这时候,针对单个应用,去掉其预编译优化。整包编译源码的时候的时候报错。

yangyulong0622的博客 641

如何在Ubuntu下进行framework和普通文件的odex优化

最近玩几个android手机,修改了部分framework下的jar和apk,当然jar和apk都是从odex合并来的,然后没有odex化,导致制作的刷机包输入系统之后,第一次开机系统启动非常的慢,因为后台在davik的process进程中间进行odex化,于是,我就像能否先把这些jar和apk给odex了。以前都是单独做apk的odex,使用的在手机端运行dexopt-wrapper工具完成的,

zangcf的专栏 3008

编译AOSP报错

修改WITH_DEXPREOPT := false。方案2:禁用Dex2oat。方案1:切换到5.x内核。

2404_88068383的博客 89

android odex版本调试_Android开启odex开关和开机速度优化

开odex优化首次开机速度,是牺牲空间换取时间的做法,仅限于空间足够的设备。开了odex之后,在编译的时候,整个system image就会被预先优化。由于在启动时不再需要进行app的dex文件进行优化(dex2oat操作)从而提升其启动速度。关于odex,有几个下面几个宏开关:1、WITH_DEXPREOPT这个开关在6.0 USER版本上是默认开启的,意思就是USER版本要开odex预编译。会...

weixin_39755625的博客 1070

开发过程问题汇总(不断更新)

1、Total Commander FTP乱码问题: 配置ftp时,在“发送命令”处输入“OPTS UTF8 OFF”,关闭ftp服务器的utf8模式。 ctrl+7 ---->  点击编辑。如下图: 2、Linux中使用搜狗输入法 1)在http://code.google.com/p/scim-python/downloads/list 下载sicm-python

秋风的博客 1506
上一篇: Android中静态jar库
下一篇: 与browser相关的代码
jackie_gnu
博客等级 码龄16年 3粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值