gpt4 book ai didi

android - 如何在android框架[AOSP] java文件(不是Android Studio或Java IDE)中使用像jsoup库这样的外部jar

转载 作者:行者123 更新时间:2023-12-04 08:40:03 38 4
gpt4 key购买 nike

我希望在 Android 开源项目中使用 jsoup 库。
为此,我做了两件事:-
步骤1:

  • 做了一个通用的目录jsoup如下:[android]prebuilts/misc/common/jsoup/
  • 在这个 jsoup 文件夹中,我添加了从以下位置下载的 jsoup-1.13.1.jar:https://jsoup.org/download
  • 在同一个 jsoup 文件夹中,我添加了另一个文件 Android.mk {因为它是下面的名称和代码:}

  • LOCAL_PATH := $(call my-dir)
    include $(CLEAR_VARS)
    LOCAL_MODULE := jsoup
    LOCAL_MODULE_TAGS := optional
    LOCAL_SRC_FILES := jsoup-1.13.1.jar
    LOCAL_MODULE_CLASS := JAVA_LIBRARIES
    LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
    LOCAL_DEX_PREOPT := false
    include $(BUILD_PREBUILT)

    第2步:
  • 转到另一个make文件如下:[android]/frameworks/base/Android.mk
  • 在这个 Android.mk 文件中,我添加了如下所示的以​​下行(在设置 LOCAL_JAVA_LIBRARIES 变量之后):
    LOCAL_STATIC_JAVA_LIBRARIES += jsoup

  • 问题:
  • 我添加了一个文件 sample.java 如下 -
    [android]frameworks/base/services/core/java/com/android/server/am/sample.java
  • 在这个 sample.java 文件中,我有如下导入语句-
  •     import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.select.Elements;
  • 当我构建整个修改后的 android 代码时,我收到以下错误并且构建失败:
  • frameworks/base/services/core/java/com/android/server/am/sample.java:48: error: package org.jsoup does not exist  
    frameworks/base/services/core/java/com/android/server/am/sample.java:49: error: package org.jsoup.nodes does not exist
    frameworks/base/services/core/java/com/android/server/am/sample.java:50: error: package org.jsoup.select does not exist
  • 我什至尝试使用提到 Android.bp 而不是 Android.mk 但同样的构建错误的方法。
  • 我也对 jar 文件的命名感到困惑,因为 import 语句包括 org.jsoup ...但 jar 文件本身只是 jsoup。 (我是否必须更改导入语句,如 import jsoup ... 或将 jar 文件的名称更改为 org.jsoup ...)
  • 除了涉及 Android.mk 或 Android.bp 之外的任何其他方法也是高度可接受的。

  • 拜托,我不知道在 AOSP 中包含外部 jar 文件。否则,该代码在 IntelliJ IDE Java 中本地运行良好。任何帮助都深表感谢。提前致谢。

    最佳答案

    您可以将解决方案基于 AOSP 中已添加的其他 jar。
    例如见 ZXING external/zxing/ 中库的 Android.bp :

    java_import {
    name: "zxing-core-1.7",
    host_supported: true,
    installable: false,
    jars: ["core.jar"],
    }
    然后查看另一个 Makefile上的用法: :
    LOCAL_STATIC_JAVA_LIBRARIES := \
    androidx-constraintlayout_constraintlayout-solver \
    androidx.lifecycle_lifecycle-runtime \
    androidx.lifecycle_lifecycle-extensions \
    guava \
    jsr305 \
    carsettings-contextual-card-protos-lite \
    carsettings-log-bridge-protos-lite \
    carsettings-logtags \
    statslog-settings \
    zxing-core-1.7
    最后,根据您要添加的文件的路径 frameworks/base/services/core/java/com/android/server/am/sample.java ,您将库添加到错误的生成文件中。
    您更改的那个( frameworks/base/Android.mk )用于制作 framework.jar ,而您正试图在 services.jar 上添加一个类
    要修改的正确生成文件是: frameworks/base/services/core/Android.bp

    关于android - 如何在android框架[AOSP] java文件(不是Android Studio或Java IDE)中使用像jsoup库这样的外部jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64621191/

    38 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com