You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@weex.apache.org by wcxwave <wc...@aliyun.com.INVALID> on 2018/07/14 09:39:32 UTC
[ANDROID] Release 0.19-rc2 weex-core crashing using clang toolchain
Dear all,
in release 0.19-rc2 android project, I find the libweexcore has some problems.
1) First, in the latest ndk 0.16 - 0.17, the android just support clang platform tools.
-DANDROID_TOOLCHAIN=clang
-DANDROID_STL=c++_static
but in the weex-sdk project, it still uses gcc.
-DANDROID_TOOLCHAIN=gcc,
-DANDROID_STL=gnustl_static,
I get some bugs such as 'there no memcpy function'.
2) Second, After I change it to use clang, there are some warning during the compile.
I just ignore it.(but the developer should resolve it. some warning just a bug.)
I get the weexcore.so. But it crashes after launch the app.
Then I think it maybe my enviroment problems, so I just replace the weexcore.so from the apache github.
Unfortunately, there weexcore.so in the github is not matched the source.
It reports there is no native method nativeSetViewPort in WXBridge. I'm depressed for it.
Then I just try to solve the crash.
A/art: art/runtime/check_jni.cc:70] JNI DETECTED ERROR IN APPLICATION: native code passing in reference to invalid local reference: 0x200001
A/art: art/runtime/check_jni.cc:70] in call to DeleteLocalRef
After some debuging, I find the reason for it.
In the jni_load.cc funtion JNI_OnLoad,
the function WeexCore::RegisterJNIMeasureMode(env); will crash, it will call DeleteLocalRef twice.
After debuging more times and chaning code, I find a problem for the function RegisterJNIMeasureMode.
the origin source:
bool RegisterJNIMeasureMode(JNIEnv *env) {
RegisterNativesImpl(env);
}
there is no return value.
after I change it to the following code,
bool RegisterJNIMeasureMode(JNIEnv *env) {
///wcheer.com modified by simon add return 2018.7.14
return RegisterNativesImpl(env);
}
It can works for the function. but the latter function is crashed again.
WeexCore::RegisterWXJsFunction(env);
it has the same reason for crashing.
In the last, I suggest the weex project ndk should use clang toolschain.
You can resolve some easy problems and it can save other developer's time and efforts.\
Thanks.
Regards Best.
Simon Wu.
2018.7.14
Re: [ANDROID] Release 0.19-rc2 weex-core crashing using clang
toolchain
Posted by 申远 <sh...@gmail.com>.
Already updated. BTW, you can recompile the corresponding so files by 'cd weex_core ; ./weex_core/release.sh'
> 在 2018年7月16日,11:20,wcxwave <wc...@aliyun.com> 写道:
>
> Thanks for replying.
> I find the rending speed in 0.19-rc2 is very slow than 0.16.
> Maybe it's caused by our compile weex-core.
> Can you supply the works weex-core.so in the release libs?
> The latest weex-core.so in the libs dictionay doesn't work now. It's too old to match the newest code.
> ------------------------------------------------------------------
> 发件人:申远 <sh...@gmail.com>
> 发送时间:2018年7月16日(星期一) 10:45
> 收件人:dev <de...@weex.incubator.apache.org>; wcxwave <wc...@aliyun.com>
> 抄 送:dev <de...@weex.apache.org>; Hanks Zhang <zh...@gmail.com>
> 主 题:Re: [ANDROID] Release 0.19-rc2 weex-core crashing using clang toolchain
>
> Thank you for your notice.
>
> 1. First, It is our goal to support arm-v7a, which is removed in NDK 17. There is no other way except for using NDK 16 for now.
> 2. Weex uses JavaScript Core compiled by GCC as a JS Interpreter. It is strongly suggested to use GCC instead of Clang.
> 3. We will fix the return value issue soon.
>
> > 在 2018年7月14日,17:39,wcxwave <wc...@aliyun.com.INVALID> 写道:
> >
> > Dear all,
> > in release 0.19-rc2 android project, I find the libweexcore has some problems.
> > 1) First, in the latest ndk 0.16 - 0.17, the android just support clang platform tools.
> > -DANDROID_TOOLCHAIN=clang
> > -DANDROID_STL=c++_static
> > but in the weex-sdk project, it still uses gcc.
> > -DANDROID_TOOLCHAIN=gcc,
> > -DANDROID_STL=gnustl_static,
> > I get some bugs such as 'there no memcpy function'.
> > 2) Second, After I change it to use clang, there are some warning during the compile.
> > I just ignore it.(but the developer should resolve it. some warning just a bug.)
> > I get the weexcore.so. But it crashes after launch the app.
> > Then I think it maybe my enviroment problems, so I just replace the weexcore.so from the apache github.
> > Unfortunately, there weexcore.so in the github is not matched the source.
> > It reports there is no native method nativeSetViewPort in WXBridge. I'm depressed for it.
> > Then I just try to solve the crash.
> > A/art: art/runtime/check_jni.cc:70] JNI DETECTED ERROR IN APPLICATION: native code passing in reference to invalid local reference: 0x200001
> > A/art: art/runtime/check_jni.cc:70] in call to DeleteLocalRef
> > After some debuging, I find the reason for it.
> > In the jni_load.cc funtion JNI_OnLoad,
> > the function WeexCore::RegisterJNIMeasureMode(env); will crash, it will call DeleteLocalRef twice.
> > After debuging more times and chaning code, I find a problem for the function RegisterJNIMeasureMode.
> >
> > the origin source:
> > bool RegisterJNIMeasureMode(JNIEnv *env) {
> > RegisterNativesImpl(env);
> > }
> > there is no return value.
> > after I change it to the following code,
> > bool RegisterJNIMeasureMode(JNIEnv *env) {
> > ///wcheer.com modified by simon add return 2018.7.14
> > return RegisterNativesImpl(env);
> > }
> > It can works for the function. but the latter function is crashed again.
> > WeexCore::RegisterWXJsFunction(env);
> > it has the same reason for crashing.
> >
> > In the last, I suggest the weex project ndk should use clang toolschain.
> > You can resolve some easy problems and it can save other developer's time and efforts.\
> > Thanks.
> >
> > Regards Best.
> > Simon Wu.
> > 2018.7.14
> >
> >
> >
> >
>
回复:[ANDROID] Release 0.19-rc2 weex-core crashing using clang toolchain
Posted by wcxwave <wc...@aliyun.com.INVALID>.
Thanks for replying.
I find the rending speed in 0.19-rc2 is very slow than 0.16.
Maybe it's caused by our compile weex-core.
Can you supply the works weex-core.so in the release libs?
The latest weex-core.so in the libs dictionay doesn't work now. It's too old to match the newest code.
------------------------------------------------------------------
发件人:申远 <sh...@gmail.com>
发送时间:2018年7月16日(星期一) 10:45
收件人:dev <de...@weex.incubator.apache.org>; wcxwave <wc...@aliyun.com>
抄 送:dev <de...@weex.apache.org>; Hanks Zhang <zh...@gmail.com>
主 题:Re: [ANDROID] Release 0.19-rc2 weex-core crashing using clang toolchain
Thank you for your notice.
1. First, It is our goal to support arm-v7a, which is removed in NDK 17. There is no other way except for using NDK 16 for now.
2. Weex uses JavaScript Core compiled by GCC as a JS Interpreter. It is strongly suggested to use GCC instead of Clang.
3. We will fix the return value issue soon.
> 在 2018年7月14日,17:39,wcxwave <wc...@aliyun.com.INVALID> 写道:
>
> Dear all,
> in release 0.19-rc2 android project, I find the libweexcore has some problems.
> 1) First, in the latest ndk 0.16 - 0.17, the android just support clang platform tools.
> -DANDROID_TOOLCHAIN=clang
> -DANDROID_STL=c++_static
> but in the weex-sdk project, it still uses gcc.
> -DANDROID_TOOLCHAIN=gcc,
> -DANDROID_STL=gnustl_static,
> I get some bugs such as 'there no memcpy function'.
> 2) Second, After I change it to use clang, there are some warning during the compile.
> I just ignore it.(but the developer should resolve it. some warning just a bug.)
> I get the weexcore.so. But it crashes after launch the app.
> Then I think it maybe my enviroment problems, so I just replace the weexcore.so from the apache github.
> Unfortunately, there weexcore.so in the github is not matched the source.
> It reports there is no native method nativeSetViewPort in WXBridge. I'm depressed for it.
> Then I just try to solve the crash.
> A/art: art/runtime/check_jni.cc:70] JNI DETECTED ERROR IN APPLICATION: native code passing in reference to invalid local reference: 0x200001
> A/art: art/runtime/check_jni.cc:70] in call to DeleteLocalRef
> After some debuging, I find the reason for it.
> In the jni_load.cc funtion JNI_OnLoad,
> the function WeexCore::RegisterJNIMeasureMode(env); will crash, it will call DeleteLocalRef twice.
> After debuging more times and chaning code, I find a problem for the function RegisterJNIMeasureMode.
>
> the origin source:
> bool RegisterJNIMeasureMode(JNIEnv *env) {
> RegisterNativesImpl(env);
> }
> there is no return value.
> after I change it to the following code,
> bool RegisterJNIMeasureMode(JNIEnv *env) {
> ///wcheer.com modified by simon add return 2018.7.14
> return RegisterNativesImpl(env);
> }
> It can works for the function. but the latter function is crashed again.
> WeexCore::RegisterWXJsFunction(env);
> it has the same reason for crashing.
>
> In the last, I suggest the weex project ndk should use clang toolschain.
> You can resolve some easy problems and it can save other developer's time and efforts.\
> Thanks.
>
> Regards Best.
> Simon Wu.
> 2018.7.14
>
>
>
>
Re: [ANDROID] Release 0.19-rc2 weex-core crashing using clang
toolchain
Posted by 申远 <sh...@gmail.com>.
Thank you for your notice.
1. First, It is our goal to support arm-v7a, which is removed in NDK 17. There is no other way except for using NDK 16 for now.
2. Weex uses JavaScript Core compiled by GCC as a JS Interpreter. It is strongly suggested to use GCC instead of Clang.
3. We will fix the return value issue soon.
> 在 2018年7月14日,17:39,wcxwave <wc...@aliyun.com.INVALID> 写道:
>
> Dear all,
> in release 0.19-rc2 android project, I find the libweexcore has some problems.
> 1) First, in the latest ndk 0.16 - 0.17, the android just support clang platform tools.
> -DANDROID_TOOLCHAIN=clang
> -DANDROID_STL=c++_static
> but in the weex-sdk project, it still uses gcc.
> -DANDROID_TOOLCHAIN=gcc,
> -DANDROID_STL=gnustl_static,
> I get some bugs such as 'there no memcpy function'.
> 2) Second, After I change it to use clang, there are some warning during the compile.
> I just ignore it.(but the developer should resolve it. some warning just a bug.)
> I get the weexcore.so. But it crashes after launch the app.
> Then I think it maybe my enviroment problems, so I just replace the weexcore.so from the apache github.
> Unfortunately, there weexcore.so in the github is not matched the source.
> It reports there is no native method nativeSetViewPort in WXBridge. I'm depressed for it.
> Then I just try to solve the crash.
> A/art: art/runtime/check_jni.cc:70] JNI DETECTED ERROR IN APPLICATION: native code passing in reference to invalid local reference: 0x200001
> A/art: art/runtime/check_jni.cc:70] in call to DeleteLocalRef
> After some debuging, I find the reason for it.
> In the jni_load.cc funtion JNI_OnLoad,
> the function WeexCore::RegisterJNIMeasureMode(env); will crash, it will call DeleteLocalRef twice.
> After debuging more times and chaning code, I find a problem for the function RegisterJNIMeasureMode.
>
> the origin source:
> bool RegisterJNIMeasureMode(JNIEnv *env) {
> RegisterNativesImpl(env);
> }
> there is no return value.
> after I change it to the following code,
> bool RegisterJNIMeasureMode(JNIEnv *env) {
> ///wcheer.com modified by simon add return 2018.7.14
> return RegisterNativesImpl(env);
> }
> It can works for the function. but the latter function is crashed again.
> WeexCore::RegisterWXJsFunction(env);
> it has the same reason for crashing.
>
> In the last, I suggest the weex project ndk should use clang toolschain.
> You can resolve some easy problems and it can save other developer's time and efforts.\
> Thanks.
>
> Regards Best.
> Simon Wu.
> 2018.7.14
>
>
>
>