noclassdeffound在android jar链式依赖项中出错

q5lcpyga  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(141)

我有两个android应用程序,它们都依赖于o.jar,o.jar进一步依赖于v.jar
我使用android.mk方法(没有studio或eclipse)来编译这些jar和应用程序,我有源代码来构建和闪存所有这些。
我已经使用android.mk中的本地java库和androidmanifest.xml中的library字段向链接器指明了依赖关系
在运行时,对于v.jar中定义的类,我在o.jar中得到noclassdeffound错误
我确实在应用程序的pathloadercontext(pcl)中看到了jar文件的路径。
但是,如果我将o.jar的源代码作为每个应用程序的一部分,那么它就会运行得很顺利。
我应该用aar而不是o.jar吗?如何检查pcl中o.jar的依赖关系?
我的应用程序是android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := myapp
LOCAL_CERTIFICATE := platform

LOCAL_JAVA_LIBRARIES := o q

LOCAL_JNI_SHARED_LIBRARIES := myappJni

# LOCAL_PROGUARD_ENABLED := disabled

# LOCAL_VENDOR_MODULE := true

LOCAL_PRIVATE_PLATFORM_APIS := true
include $(BUILD_PACKAGE)
include $(call all-makefiles-under,$(LOCAL_PATH))

我的应用程序的androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.honeywell.myapp"
    android:sharedUserId="android.uid.system"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <uses-sdk
        android:minSdkVersion="25"
        android:targetSdkVersion="25" />

    <application
        android:allowBackup="false"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library
            android:name="com.xvendor.v"
            android:required="true" />
        <uses-library
            android:name="com.xoem.o"
            android:required="true"/>
        <uses-library
            android:name="q"/>
        <activity
            android:name=".myappActivity">
        </activity>

        <service android:name=".myappService"/>
    </application>

</manifest>

o、 jar的android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

ifeq ($(TARGET_BUILD_JAVA_SUPPORT_LEVEL),platform)
include $(CLEAR_VARS)

# LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := o

LOCAL_JAVA_LIBRARIES := v q

LOCAL_SRC_FILES += \
      $(call all-java-files-under, src/com/xoem/o)

LOCAL_PRIVATE_PLATFORM_APIS := true
include $(BUILD_JAVA_LIBRARY)

v、 jar的android.bp

java_library {
    name: "v",
    installable: true,

    libs: [
        "q",
        "q-hidl-wrapper",
    ],

    srcs: ["src/com/xvendor/v/**/*.java"] + 
          ["src/com/xvendor/v/IOCallback.aidl"] + 
          ["src/com/xvendor/vm/IVM.aidl"],
    platform_apis: true,
    product_specific: true,
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题