博客
关于我
android源码环境下编译fourthling.cling库的依赖问题
阅读量:689 次
发布时间:2019-03-16

本文共 1269 字,大约阅读时间需要 4 分钟。

建立从源头开始的解决方案来处理fourthline.cling在Android上的静态库编译问题,可以分为以下步骤:

  • 了解依赖关系并准备knife :首先,确保在Android的源码环境中预制所有必要的JAR文件。编辑LOCAL_STATIC_JAVA_LIBRARIES,确保包含了 BUILD_STATIC_JAVA_LIBRARY 相关的 .mk 文件。例如,在你的项目根目录下找到相应的文件,进行适当的修改。

  • 处理javax依赖问题:Android环境不支持直接使用javax包,因此需要引入cdi-api-2.0的JAR包,这个包包含了如javax.decorator.Decorator等类。确保这个JAR已经添加在LOCAL_STATIC_JAVA_LIBRARIES中,并未被遗漏或权限错误阻止。

  • 修复编译错误:当你在编译fourthling.cling时遇到如“第四ling.cling (java:sdk) 不应链接到cdi-api (java:platform)”的错误,说明SDK接口不能够链接到平台级别的依赖。为了修复这个错误,在Android.mk文件中将 LOCAL_SDK_VERSION := current 替换为 LOCAL_PRIVATE_PLATFORM_APIS := true。这样编译器允许链接到这些私有接口。

  • 处理编译警告:当你看到如“can't find referenced class javax.el.ExpressionFactory”等警告时,首先确认这些警告是否影响程序的正常运行。如果它们不会导致程序崩溃或其他严重问题,可以通过创建proguard.flags文件来过滤这些警告:

    # 在项目根目录下创建proguard.flags-dontnote org.fourthline.cling.*-dontwarn org.eclipse.jetty.jmx.*-dontwarn javax.el.*

    然后在Android.mk文件中添加LOCAL_PROGUARD_FLAG_FILES := proguard.flags,这样ProGuard会忽略这些警告,继续编译。

  • 确保缺失的类不会影响运行:如果这些缺失的类确实会导致程序崩溃或功能缺失,需要额外引入相关的JAR包。例如,添加javax.el.jakarta或其他包含必要类的库,确保所有依赖都已满足。

  • 验证编译环境:在编译fourthline.cling之前,执行以下命令确保环境正确:

    source build/envsetup.sh

    这将设置必要的环境变量,确保后续步骤顺利执行。

  • 在编译时检查日志:编译完成后,仔细检查日志,确保没有遗漏的依赖错误或其他潜在问题。如果发现新的依赖问题,逐步解决,确保所有必要的库都已正确添加和配置。

  • 通过以上步骤,你应该能够解决fourthline.cling在Android编译中的静态库依赖问题。这些方法可以帮助你避开常见的编译错误,并通过合理的配置确保程序的稳定性。

    转载地址:http://bbeqz.baihongyu.com/

    你可能感兴趣的文章
    python中 yaml库 & json库 & xmltodict库使用
    查看>>
    python中 将你的名字转化成为二进制并输出
    查看>>
    Python中*args 和**kwargs的用法
    查看>>
    Python中*args 和**kwargs的用法
    查看>>
    Python中*args和**kwargs的使用
    查看>>
    python中0、1、True、False、if条件
    查看>>
    python中argparse模块关于 parse_args() 函数详解(全)
    查看>>
    python中base64编码与解码
    查看>>
    python中break怎么用_详解Python中break语句的用法
    查看>>
    python中del函数的垃圾回收
    查看>>
    Python中DrissionPage的详细解析与实战
    查看>>
    python中enumerate、变量类型转换
    查看>>
    python中execute是啥_python – 为什么“c.execute(…)”打破循环?
    查看>>
    python中exit和break区别_Python中exit()和sys.exit()之间的区别
    查看>>
    python中h5的用法
    查看>>
    python中http协议编程_HTTP编程
    查看>>
    python中import os_Python:相对导入与绝对导入(import)、os.path、__file__
    查看>>
    Python中set.discard和set.remove方法之间的运行时差异?
    查看>>
    python中yield的用法详解——最简单,最清晰的解释
    查看>>
    python中‘set.intersection()‘的算法是什么?
    查看>>