android 链接第三方jar包?
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_JAVA_LIBRARIES :=
LOCAL_STATIC_JAVA_LIBRARIES := \
mstar_classes \
LOCAL_SRC_FILES := $(call all-subdir-java-files, src) \
src/com/mstar/tv/service/interfaces/ITvServiceServer.aidl \
src/com/mstar/tv/service/interfaces/ITvServiceServerPicture.aidl \
src/com/coship/stpservice/IStpService.aidl \
LOCAL_PACKAGE_NAME := dvbSettings
#Disable building the APK; we are checking in the pre-built version which
#contains the credential plug-in instead. Note the libwbxml_jni has to be
#enabled because so won't be extracted from the system APK
#include $(BUILD_PACKAGE)
LOCAL_CERTIFICATE := platform
LOCAL_AAPT_FLAGS := -0 .dat
#include $(call all-makefiles-under,$(LOCAL_PATH))
include $(BUILD_PACKAGE)
MY_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
mstar_classes:libs/mstar_classes.jar \
include $(BUILD_MULTI_PREBUILT)
如上方法在android.mk中链接一个第三方jar包,该jar包有10M,实现了一些接口,在编译APK时,提示找不到该接口中定义的方法,为什么会找不到方法呢?
提示一部分错误如下:
packages/apps/dvbsetting/src/com/coship/dvbsetting/netsetting/BluetoothSet.java:198: 找不到符号--------------------编程问答-------------------- 以上提示找不到的方法都是jar包中定义实现的! --------------------编程问答-------------------- 我用ant编译的时候,是直接指定外部jar包的位置 --------------------编程问答--------------------
符号: 方法 isBluetoothExist()
位置: 类 android.bluetooth.BluetoothAdapter
if (bluetoothAdapter.isBluetoothExist()) {
^
packages/apps/dvbsetting/src/com/coship/dvbsetting/netsetting/highset/HighSet_WirlessNetwork.java:230: 找不到符号
符号: 方法 isWifiDeviceExist()
位置: 类 android.net.wifi.WifiManager
if(mWifiManager.isWifiDeviceExist()){
^
packages/apps/dvbsetting/src/com/coship/dvbsetting/netsetting/StateSet.java:276: 找不到符号
符号: 方法 getMacAddress()
位置: 类 android.net.ethernet.EthernetDevInfo
tv_Mac = info.getMacAddress();
^
packages/apps/dvbsetting/src/com/coship/dvbsetting/netsetting/WifiApSetting.java:651: 找不到符号
符号: 方法 isWifiDeviceExist()
位置: 类 android.net.wifi.WifiManager
if (!mWifiManager.isWifiDeviceExist()) {
^
packages/apps/dvbsetting/src/com/coship/dvbsetting/netsetting/WifiApSetting.java:658: 找不到符号
符号: 方法 isWifiDeviceSupportSoftap()
位置: 类 android.net.wifi.WifiManager
if (!mWifiManager.isWifiDeviceSupportSoftap()) {
^
packages/apps/dvbsetting/src/com/coship/dvbsetting/systemsetting/childview/NetUpdate.java:92: 找不到符号
符号: 变量 PPPOE_SERVICE
位置: 类 android.content.Context
mPppoeManager = (PppoeManager) mContext.getSystemService(Context.PPPOE_SERVICE);
^
packages/apps/dvbsetting/src/com/coship/dvbsetting/systemsetting/childview/NetUpdate.java:116: 找不到符号
符号: 方法 isNetworkConnected()
位置: 类 android.net.ethernet.EthernetManager
if(mNetworkInfo.isConnected() || mEthernetManager.isNetworkConnected() || mPppoeManager.getPppoeStatus().equals(PppoeManager.PPPOE_STATE_CONNECT)){
^
packages/apps/dvbsetting/src/com/coship/dvbsetting/systemsetting/update/SystemLocalUpdateActivity.java:314: 找不到符号
符号: 方法 getVolumeLabel(java.lang.String)
位置: 类 android.os.storage.StorageManager
if (mStorageManager.getVolumeLabel(mVolemes[i].getPath()) == null
^
packages/apps/dvbsetting/src/com/coship/dvbsetting/systemsetting/update/SystemLocalUpdateActivity.java:315: 找不到符号
符号: 方法 getVolumeLabel(java.lang.String)
位置: 类 android.os.storage.StorageManager
|| "".equals(mStorageManager.getVolumeLabel(mVolemes[i].getPath()))) {
如何指定?如上makefile也是指定具体路径的,在当前目录libs下! --------------------编程问答--------------------
同问,怎么引用?其默认都是工程根目录libs,怎么将其更改到自定义目录 --------------------编程问答-------------------- 为什么要放到mk里面,直接放在工程目录里面的libs里面啊 --------------------编程问答-------------------- 你这个jar包是否源码环境中的类产生冲突了?先编译加载了android标准的类库,第三方的同名类可能就没加载了,我现在也遇到了同样的问题。。。。。寻找解决方案中!!!
http://bbs.csdn.net/topics/390503623
补充:移动开发 , Android