- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
L版本APPIOT常见问题总结(对比机可以复现)
录入:edatop.com 点击:
[DESCRIPTION]
L版本上,一些APPIOT常见问题,对比机同样可以复现。
这类问题如何判别和解决呢?
[SOLUTION]
APPIOT已有FAQ:
ID: FAQ13604L版本APP不兼容问题第一手分析
ID: FAQ04289APPIOT问题第一手分析以及对比测试注意事项
在APPIOT已有的FAQ里均有提到,对比机可以复现的问题可以归结为三方apk issue,非mtk问题。
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/php?mod=tag&id=6090" target="_blank" class="relatedlink">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后再进行测试。
谢谢~
L版本上,一些APPIOT常见问题,对比机同样可以复现。
这类问题如何判别和解决呢?
[SOLUTION]
APPIOT已有FAQ:
ID: FAQ13604L版本APP不兼容问题第一手分析
ID: FAQ04289APPIOT问题第一手分析以及对比测试注意事项
在APPIOT已有的FAQ里均有提到,对比机可以复现的问题可以归结为三方apk issue,非mtk问题。
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/php?mod=tag&id=6090" target="_blank" class="relatedlink">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后再进行测试。
谢谢~
沙发
:):)
楼上的,看出来了,你是来赚RD币的
:lol哈哈
申明:网友回复良莠不齐,仅供参考。如需专业帮助,请学习易迪拓培训专家讲授的ADS视频培训课程。
ADS培训课程推荐详情>>
国内最全面、最专业的Agilent ADS培训课程,可以帮助您从零开始,全面系统学习ADS设计应用【More..】
- Agilent ADS教学培训课程套装
- 两周学会ADS2011、ADS2013视频教程
- ADS2012、ADS2013射频电路设计详解
- ADS高低阻抗线微带滤波器设计培训教程
- ADS混频器仿真分析实例视频培训课程
- ADS Momentum电磁仿真设计视频课程
- ADS射频电路与通信系统设计高级培训
- ADS Layout和电磁仿真设计培训视频
- ADS Workspace and Simulators Training Course
- ADS Circuit Simulation Training Course
- ADS Layout and EM Simulation Training Course
- Agilent ADS 内部原版培训教材合集