weex源码编译踩坑记录

前言

在gradle声明依赖,sync的时候依赖一直拉不下来,提示Fail to resolve: org.apache.weex:sdk:0.28.0,尝试过换阿里云镜像、走梯子,依然无法获取到依赖。

编译过程

  1. 获取源码
git clone https://github.com/alibaba/weex
  1. 准备安卓环境,最终sync通过的环境

    • gradle 6.5
    • classpath 'com.android.tools.build:gradle:4.1.1'
    • ndk.dir=D\:\\Android\\Sdk\\ndk-bundle
  2. gradle配置踩坑

    • buildSrc/packageName.gradle文件注释掉以下代码,不注释会提示task无法创建
      task(cleanCopyProguard, overwrite: true, type: Delete){
          delete 'proguard-rules-legacy.pro'
      }
    • buildSrc/jcenter.gradle文件,对应节点修改为以下配置
      artifactory {
          contextUrl = 'http://oss.jfrog.org/artifactory'
          publish {
              repository {
                  repoKey = 'oss-snapshot-local'
                  username = bintray.user
                  password = bintray.key
                  maven = true
              }
              defaults {
                  // 注释以下行
                  // publications ('artifactorySnapthost')
              }
          }
      }
    • 在命令行编译没有问题,如果在android studio编译会提示Merged dex is null. We tried to merge 0 DEX filesUnable to merge dex,需要在sdk模块的gradle配置添加依赖。
      compile 'com.android.support:multidex:1.0.3'
  3. cpp踩坑

    • 编译报错'assert' : undeclared identifier,在cpp文件中添加包含,需要修改的文件:js_runtime/weex/task/back_to_weex_core_queue.cppjs_runtime/weex/task/timer_queue.cppjs_runtime/weex/task/weex_task_queue.cpp。注意,这些文件都是在weex-master项目根目录下的weex_core/Source目录中修改,而不是修改android项目的cpp文件。
      #include <assert.h>
  4. 编译出来的aar包名是com.taobao.weex

总结

根据报错,找到报错行,判断是否影响实际功能,如果不影响则可以直接注释掉。


weex源码编译踩坑记录
http://blog.icy8.cn/posts/1853495173/
作者
icy8
发布于
2023年10月19日
许可协议