L版本APPIOT常见问题总结(对比机可以复现)

本文总结了L版本APPIOT中常见的问题,包括64位应用兼容性问题及memorylayout引起的闪退等现象,并提供了针对这些问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

L版本APPIOT常见问题总结(对比机可以复现)

[DESCRIPTION]


L版本上,一些APPIOT常见问题,对比机同样可以复现。
这类问题如何判别和解决呢?


[SOLUTION]


L版本目前遇到的一些对比机也可以复现的问题总结如下:
1 64bit 应用兼容问题
一些apk在32bit机器中运行OK,在64bit机器中运行有问题。
这类问题需要使用64bit的对比机进行测试,一般为apk对64bit的兼容性问题,需要apk后续改进。
2 memory layout的引起的appiot问题
一些应用自身有bug,对比机也可以复现问题。
此类问题的现象:
运行时apk会闪退,log里可以看到类似错误:
JAVA.lang.UnsatisfiedLinkError: Bad JNI version returned from JNI_OnLoad in
Mtk可以提供workaround方法,但是不建议修改,因为google的默认做法不是这样,一旦后期APP兼
容L 平台 ,就可能导致这些APP在MTK平台上运行不了。
--- //ALPS_SW/MP/L0.MP6/alps/frameworks/base/cmds/app_process/app_main.cpp 2014-12-12 03:51:25.000000000
0800
+++ /worktmp/mtk03113/wip/l0.mp6/alps/frameworks/base/cmds/app_process/app_main.cpp 2014-12-12
03:51:25.000000000 0800
@@ -7,15 +7,16 @@
#define LOG_TAG "appproc"
+#include <cutils/properties.h>
#include <binder/IPCThreadState.h>
#include <binder/ProcessState.h>
#include <utils/Log.h>
#include <cutils/memory.h>
#include <cutils/process_name.h>
-#include <cutils/properties.h>
#include <cutils/trace.h>
#include <android_runtime/AndroidRuntime.h>
#include <private/android_filesystem_config.h> // for AID_SYSTEM
+#include <sys/personality.h>
#include <stdlib.h>
#include <stdio.h>
@@ -185,6 +186,33 @@
int main(int argc, char* const argv[])
{
+#ifdef __arm__
+ /*
+ * b/7188322 - Temporarily revert to the compat memory layout
+ * to avoid breaking third party apps.
+ *
+ * THIS WILL GO AWAY IN A FUTURE ANDROID RELEASE.
+ *
+ * http://git.kernel.org/?p=linux/k ... mmitdiff;h=7dbaa466
+ * changes the kernel mapping from bottom up to top-down.
+ * This breaks some programs which improperly embed
+ * an out of date copy of Android's linker.
+ */
+ char value[PROPERTY_VALUE_MAX];
+ property_get("ro.kernel.qemu", value, "");
+ bool is_qemu = (strcmp(value, "1") == 0);
+ if ((getenv("NO_ADDR_COMPAT_LAYOUT_FIXUP") == NULL) && !is_qemu) {
+ int current = personality(0xFFFFFFFF);
+ if ((current & ADDR_COMPAT_LAYOUT) == 0) {
+ personality(current | ADDR_COMPAT_LAYOUT);
+ setenv("NO_ADDR_COMPAT_LAYOUT_FIXUP", "1", 1);
+ execv("/system/bin/app_process32", argv);
+ return -1;
+ }
+ }
+ unsetenv("NO_ADDR_COMPAT_LAYOUT_FIXUP");
+#endif
+
if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) < 0) {
// Older kernels don't understand PR_SET_NO_NEW_PRIVS and return
// EINVAL. Don't die on such kernels.
3 ART自有bug引起的APPIOT问题
请申请art的最新patch后再测试
L0:请申请patchALPS02149675
L1:请申请patchALPS02125533
由于ART的影响面比较广,在做APPIOT兼容测试前都请申请ART的最新patch后再进行测试。
谢谢~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值