在安卓上用
com.yanzhenjie.andserver库实现了一个http server,以前一直好好的。最近由于要和另一个APP通信,改成使用系统的platform签名,结果HTTP服务不能启动,报错如下
09-21 18:01:46.262 7588 7603 W AndServer: An exception occurred while registering components.
09-21 18:01:46.262 7588 7603 W AndServer: java.io.IOException: No original dex files found for dex location /system/app/。。。。。。
09-21 18:01:46.262 7588 7603 W AndServer: at dalvik.system.DexFile.openDexFileNative(Native Method)
09-21 18:01:46.262 7588 7603 W AndServer: at dalvik.system.DexFile.openDexFile(DexFile.java:353)
09-21 18:01:46.262 7588 7603 W AndServer: at dalvik.system.DexFile.<init>(DexFile.java:100)
09-21 18:01:46.262 7588 7603 W AndServer: at dalvik.system.DexFile.<init>(DexFile.java:86)
09-21 18:01:46.262 7588 7603 W AndServer: at com.yanzhenjie.andserver.ComponentRegister.register(ComponentRegister.java:71)
09-21 18:01:46.262 7588 7603 W AndServer: at com.yanzhenjie.andserver.Server$1.run(Server.java:91)
09-21 18:01:46.262 7588 7603 W AndServer: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
09-21 18:01:46.262 7588 7603 W AndServer: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
09-21 18:01:46.262 7588 7603 W AndServer: at java.lang.Thread.run(Thread.java:764)
最后用ls命令看,发现我的APK小了很多,解压后发现没了dex文件,有目标了,一通搜索,发现是安卓优化的锅。
解决办法:
Android.mk中加入 LOCAL_DEX_PREOPT:=false 即可。
LOCAL_DEX_PREOPT有3个值可用:
false - 不进行优化 nostripping - 优化但不剥离apk中的classes.dex true - 优化并剥离APK中的classes.dex