eeui 2.4.0 升级之后 Execution failed for task ‘:weex_sdk:unzipJSC‘.

前言

最近eeui社区有人反馈,android 11设备上无法正常运行。反馈没多久eeui官方开发者就给出了解决方案,那就是后续更新有开发自行编译打包weex sdk。

升级版本到2.4.0

运行出错:
What went wrong:
Execution failed for task ‘:weex_sdk:unzipJSC’.

解决办法:
1.我先在社区提出了这个问题,在提问题之前我看了以往的问题清单,貌似大家都没有遇到这个问题。所以想先提问一下,说不定就有人已经发现和解决了呢?(昨天晚上下班前体问的)
因为不知道问题出现的原因,也没有细看。所以我就这样描述的:

使用了2.4版本,android编译打包问题
执行构建命令,出现的错误。不知道是不是gradle版本的问题。因为studio版本比较高,想确认一下


task unzipJSC(type: Copy, dependsOn: download) {
from jsc_file.name.endsWith(".aar") ? jsc_file : tarTree(jsc_file)
into jsc_dir
include "/${aar_name}.aar", '/include/*.h'
includeEmptyDirs false
eachFile {
if(it.name.endsWith('.aar')) {
it.path = it.name
it.name = "${aar_name}.aar"
}
else if(it.name.endsWith('.h')){
it.path= 'include/' + it.name
}
}
inputs.file(jsc_file)
outputs.file(aar_file)
outputs.upToDateWhen {
aar_file.exists()
}
}

Could not copy tar entry
/Users/xxx/code/bas/plugins/eeui/WeexSDK/android/sdk/build/jsc/jsc-android-241213.1.0.tgz!package/dist/org/webkit/android-jsc-intl/r241213/android-jsc-intl-r241213.aar
to
‘/Users/xxx/code/bas/plugins/eeui/WeexSDK/android/sdk/build/jsc/android-jsc-intl.aar’.
java.io.EOFException: Unexpected end of ZLIB input stream

2.等到第二天早上我发现没有人回答我这个问题。于是乎我就开始了探索之旅
我根据上面的日志检查了下载的zip包,可是我始终没有明白zip包为啥解压失败。我一开始时怀疑gradle版本高的原因,会不会时groovy语法过时了?知道我尝试手动解压zip包看看里面有什么东西的时候。因为下面这个命令的意思是:
把zip包中的.h文件和aar包文件copy到当前目录下

task unzipJSC(type: Copy) {
    from jsc_file.name.endsWith(".aar") ? jsc_file : tarTree(jsc_file)
    into jsc_dir
    include "**/*${aar_name}*.aar", '**/include/*.h'
    includeEmptyDirs false
    eachFile {
        if(it.name.endsWith('.aar')) {
            it.path = it.name
            it.name = "${aar_name}.aar"
        }
        else if(it.name.endsWith('.h')){
            it.path= 'include/' + it.name
        }
    }
    inputs.file(jsc_file)
    outputs.file(aar_file)
    outputs.upToDateWhen {
        aar_file.exists()
    }
}

当我正想把zip打开来看看的时候,发现了unzip失败的原因,zip包资源损毁。我有自己手动下载了一把zip包点击下载
结果如下:垃圾网络
在这里插入图片描述
于是乎我找了我的小伙伴帮忙下载了一下
在这里插入图片描述

光有zip包也没有用啊,还得修改一下build的task任务。已经有zip包了,我们就不需要下载了,于是乎就有了下面的修改
在这里插入图片描述

改到这里我心想这回总该没问了吧!
结果世上不如意之事十有八九,现实真是残酷。这也就是我为啥要写这边篇文章的原因。原来我只是揭示了冰山一角,后面的问题还没有解决。
解决完上面的问题之后,我又遇到了下面两个问题
如上图所示,这次可以编译打包了。但是遇到了新的问题
logcat提示:页面渲染出错
E/weex: onRenderError -1001,degradeToH5|createInstance fail|wx_create_instance_error isJSFrameworkInit==false reInitCount == 1

中间在编译的过程种也遇到了一些问题
1.WXComponent类提示乱码(左边是修改之前,右边是修改之后)

2.另外还有一个问题就是编译过程中

`> Task :weex_sdk:generateJsonModelDebug
E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\CMakeLists.txt
: C/C++ debug|arm64-v8a : CMake Warning at
D:/android-ndk-r16b/build/cmake/android.toolchain.cmake:63 (message):
Using custom NDK path (ANDROID_NDK is set): D:\android-ndk-r16b Call
Stack (most recent call first):
E:/coding/smartmall/plugins/eeui/WeexSDK/android/sdk/.cxx/cmake/debug/arm64-v8a/CMakeFiles/3.10.2/CMakeSystem.cmake:6
(include) CMakeLists.txt:20 (project)

E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\CMakeLists.txt
C/C++ debug|arm64-v8a : CMake Warning at
D:/android-ndk-r16b/build/cmake/android.toolchain.cmake:63 (message):
Using custom NDK path (ANDROID_NDK is set): D:\android-ndk-r16b Call
Stack (most recent call first):
E:/coding/smartmall/plugins/eeui/WeexSDK/android/sdk/.cxx/cmake/debug/arm64-v8a/CMakeFiles/3.10.2/CMakeSystem.cmake:6
(include) CMakeLists.txt:20 (project)
E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\CMakeLists.txt
C/C++ debug|arm64-v8a : CMake Warning (dev) at
E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\Source\CMakeLists.txt:44:
Syntax Warning in cmake code at column 31

Argument not separated from preceding token by whitespace. This
warning is for project developers. Use -Wno-dev to suppress it.
E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\CMakeLists.txt
: C/C++ debug|arm64-v8a : CMake Warning (dev) at
E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\Source\CMakeLists.txt:44:
Syntax Warning in cmake code at column 31

Argument not separated from preceding token by whitespace. This
warning is for project developers. Use -Wno-dev to suppress it.
E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\CMakeLists.txt
: C/C++ debug|arm64-v8a : CMake Warning (dev) at
E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\Source\js_runtime\CMakeLists.txt:207:
Syntax Warning in cmake code at column 31

Argument not separated from preceding token by whitespace. This
warning is for project developers. Use -Wno-dev to suppress it.
E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\CMakeLists.txt
: C/C++ debug|arm64-v8a : CMake Warning (dev) at
E:\coding\smartmall\plugins\eeui\WeexSDK\android\sdk\src\legacyRelease\cpp\Source\js_runtime\CMakeLists.txt:207:
Syntax Warning in cmake code at column 31

Argument not separated from preceding token by whitespace. This
warning is for project developers. Use -Wno-dev to suppress it.`

在这里插入图片描述
在这里插入图片描述

安装r18b

结合着之前搞weex的经验,weex sdk的生成时需要ndk参与编译的。所以就找到了weex官方的android环境配置信息。
在这里插入图片描述
根据官网提示,我们需要NDK r18版本
1.找到sdkmanager
在这里插入图片描述
2.安装r18b
在这里插入图片描述
使用了r18b会提示下面的问题
Expected NDK STL shared object file at
在这里插入图片描述

使用了r18b。但是编译会提示找不到文件,我去r18b下面看了一下确实没有gnu库。但是到这个地方其实是干扰因素。clean之后提示我安装ndk21
于是乎我把版本升级到了提示的21版本

注意不要忘记修改NDK的环境变量

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页