我有两个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,
}
暂无答案!
目前还没有任何答案,快来回答吧!