java org.jsoup does not exist_How to use external jar like jsoup library in android framework [AOSP]...

I wish to use jsoup library in Android Open Source Project.

For this I did two things:-

Step 1:

Made a directory jsoup in common as follows: [android]prebuilts/misc/common/jsoup/

In this jsoup folder I added jsoup-1.13.1.jar downloaded from : https://jsoup.org/download

In this same jsoup folder I added another file Android.mk {as it is name and code below:}

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)

Step 2:

Go to another make file as follows : [android]/frameworks/base/Android.mk

In this Android.mk file I added following line shown below (after the LOCAL_JAVA_LIBRARIES variable is set):

LOCAL_STATIC_JAVA_LIBRARIES += jsoup

Problem:

I have added a file sample.java as follows-

[android]frameworks/base/services/core/java/com/android/server/am/sample.java

In this sample.java file I have import statements as follows-

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.select.Elements;

When I build this whole modified android code, I get the following error and the build fails:

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

I even tried using a method mentioning Android.bp instead of Android.mk but same build error.

Also I am confused in naming of jar file as import statement includes org.jsoup... but jar file itself is just jsoup. (Do I have to change import statement like import jsoup ... or change name of jar file to org.jsoup...)

Any other method other than involving Android.mk or Android.bp is also highly acceptable.

Please, I have no idea of including external jar files in AOSP. The code works fine locally in IntelliJ IDE Java otherwise. Any help is deeply appreciated. Thanks in advance.

# Answer 1

4d350fd91e33782268f371d7edaa8a76.png

You can base your solution on some other jar already added in AOSP.

For example see ZXING library's Android.bp in external/zxing/:

java_import {

name: "zxing-core-1.7",

host_supported: true,

installable: false,

jars: ["core.jar"],

}

Then see the usage on another 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

Lastly, based on the path of the file you're adding frameworks/base/services/core/java/com/android/server/am/sample.java, you're adding the library to the wrong makefile.

The one you changed (frameworks/base/Android.mk) is for making framework.jar, whereas you're trying to add a class on services.jar

The correct makefile to modify would be: frameworks/base/services/core/Android.bp

# Answer 2

Based ENTIRELY upon Answer provided by @RickSanchez, I followed these steps as guided by his answer to bring up a successful build:

Made a directory: [android]prebuilts/misc/common/jsoup/

In this directory jsoup folder, I included a blueprint file Android.bp and jsoup-1.13.1.jar downloaded from https://jsoup.org/download

With the help of Blueprint Soong Flag descriptions info here,

I created my Android.bp talked above as follows:

Android.bp

java_import {

name: "jsoup-1.13.1",

host_supported: true,

installable: false,

jars: ["jsoup-1.13.1.jar"],

}

Next task was to give ref of above created Local Blueprint file to Android.bp present in frameworks/base/services/core/Android.bp

To this, I made the following edit:

In Android.bp either add the following if present or modify the following block -

static_libs: [

"jsoup-1.13.1", /*use jsoup lib */

"android.hardware.authsecret-V1.0-java",

....

....

],

The build is now successful and the sample.java is successfully able to use jsoup library

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值