2012年8月15日 星期三

Android 編譯時附加第3方Jar檔

最近遇到一些第3方Jar檔編譯的問題,

首先是如何用Android source tree去build,這比較簡單,直接找packages/apps 裏面就有相關範例了

例如Calulator的Android.mk

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

LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_SDK_VERSION := current

LOCAL_PACKAGE_NAME := Calculator

include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:arity-2.1.2.jar

include $(BUILD_MULTI_PREBUILT)

首先上面的LOCAL_STATIC_JAVA_LIBRARIES是定義有哪些Lib,下面

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES才是定義要編譯的jar檔,其中libarity 是自己定的lib

名稱,但最好不要亂定,不同apps遇到重複定義的名稱時會有問題。

而最下面的include $(BUILD_MULTI_PREBUILT)也是必須要加的。

以上做完就可以編譯啦。

第二個遇到的問題則是我要用achartengine時,編譯他的demo,然後在機器上跑徑會強制關

閉,看了下Logcat竟然跑出下面的錯誤訊息

java.lang.NoClassDefFoundError: org.achartengine.chart.PointStyle[]

檢查了一下發現他有加入到referenced Libraries,也有加到lib中,看似正確,但卻沒有在

Android Dependencies裏面出現。再仔細確認了一下,jar檔應該是要加到libs,而非lib,改完名

achartengine-1.0.0.jar檔就會出現在Android Dependencies裏面,之後重新編譯就能正常使用

了。

沒有留言:

張貼留言