【发布时间】:2013-08-22 04:20:14
【问题描述】:
我想通过从另一个 Android 应用程序启动一个活动来将一些功能添加到浏览器应用程序中。当我制作主项目时,它给了我package does not exist。请注意,我看到 AndroidLib 已成功构建到 out/target/product/generic/data/app/AndroidLib.apk 中
这里有两个 android.mk 文件: AndroidLib(一个普通的Android App)
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_STATIC_JAVA_LIBRARIES := \
google-ps \
android-support-v4 \
LOCAL_SRC_FILES := \
$(call all-java-files-under, src) \
LOCAL_MODULE := AndroidLib
LOCAL_PACKAGE_NAME := AndroidLib
LOCAL_MODULE_TAGS := tests
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := google-ps:libs/google-play-services.jar
include $(BUILD_PACKAGE)
# additionally, build tests in sub-folders in a separate .apk
include $(call all-makefiles-under,$(LOCAL_PATH))
浏览器应用
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
guava \
android-support-v13 \
android-support-v4 \
LOCAL_SRC_FILES := \
$(call all-java-files-under, src) \
src/com/android/browser/EventLogTags.logtags
LOCAL_PACKAGE_NAME := Browser
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_EMMA_COVERAGE_FILTER := *,-com.android.common.*
# We need the sound recorder for the Media Capture API.
LOCAL_REQUIRED_MODULES := SoundRecorder, AndroidLib
include $(BUILD_PACKAGE)
# additionally, build tests in sub-folders in a separate .apk
include $(call all-makefiles-under,$(LOCAL_PATH))
然后我做:
make -j Browser
它给了我:
packages/apps/Browser/src/com/android/browser/BrowserActivity.java:36: package com.om.AndroidLib does not exist
import com.om.AndroidLib.MainActivity;
【问题讨论】:
-
您是否已将库项目的所有活动声明到主项目的清单中并带有包名。并检查库项目清单中标明的包名。
-
@MeenalSharma:我认为它应该与您使用 Eclipse 并将 A 定义为库然后将库添加到主项目中时相同。是否需要将 A Lib 的声明复制到 Main Project 中?
-
是的,您必须复制,因为您运行的是主项目而不是库,并且当库项目的活动被调用时,它会从主项目中访问。
-
LOCAL_REQUIRED_MODULES必须用空格分隔,而不是逗号(见android.mk)
标签: android android-ndk android-source android-build android-framework