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

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
#include
#include
#include
#include
#include
-#include
#include
#include
#include // for AID_SYSTEM
+#include
#include
#include
@@ -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后再进行测试。
谢谢~


你可能感兴趣的:(L版本APPIOT常见问题总结(对比机可以复现))