【问题标题】:How to include appcompat_v7 in Android.mk file如何在 Android.mk 文件中包含 appcompat_v7
【发布时间】:2015-08-13 13:21:31
【问题描述】:

我希望我的应用使用 Android 源代码构建。如何在 Android.mk 文件中包含 appcompat_v7 以及在源代码中放置 appcompat_v7 文件夹的位置。我正在使用以下代码,

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS) 
LOCAL_STATIC_JAVA_LIBRARIES := \appcompat_v7
# Include all java files.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := MyPackage
include $(BUILD_PACKAGE)

我遇到错误

make:没有规则来制作目标 'out/target/common/obj/JAVA_LIBRARIES/\appcompat_v7_intermediates/javalib.jar',这是 'out/target/common/obj/APPS/MyPackage_intermediates/classes-full-debug 所需要的。罐'。停下来。

任何人请帮助。提前致谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    我能够使用以下 Android.mk 构建一个包含 appcompat 的包

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_PACKAGE_NAME := MySuperAwesomeApp
    
    LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
    LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
    LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayout
    LOCAL_STATIC_JAVA_LIBRARIES += android-support-v13
    
    LOCAL_SRC_FILES := $(call all-java-files-under, src)
    
    LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
    LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/res
    LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/gridlayout/res
    
    LOCAL_CERTIFICATE := platform
    LOCAL_PRIVILEGED_MODULE := true
    LOCAL_AAPT_FLAGS := --auto-add-overlay
    LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat:android.support.v7.gridlayout
    
    include $(BUILD_PACKAGE)
    

    来源:https://android.googlesource.com/platform/packages/apps/UnifiedEmail/+/android-5.0.1_r1/Android.mk

    【讨论】:

      【解决方案2】:

      此代码对我有用,希望对您有所帮助!将appcompat_v7项目的libs中的jar文件复制到你项目的libs目录下。

      LOCAL_PATH:= $(call my-dir)
      include $(CLEAR_VARS)
      
      LOCAL_STATIC_JAVA_LIBRARIES := \
              android-support-v4 \
              android-support-v7-appcompat
              <more jar could be added here>
      
      LOCAL_SRC_FILES := $(call all-subdir-java-files)
      
      LOCAL_PACKAGE_NAME := <The name of your App project>
      
      LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
      LOCAL_RESOURCE_DIR += <The absolute path to your appcompat_v7 project>/res
      
      LOCAL_CERTIFICATE := platform
      LOCAL_PRIVILEGED_MODULE := true
      LOCAL_AAPT_FLAGS := --auto-add-overlay
      LOCAL_AAPT_FLAGS += --extra-packages   android.support.v4:android.support.v7.appcompat <replace the _ with . for your all jar files>
      
      include $(BUILD_PACKAGE)
      

      【讨论】:

      • 其实创建appcompat_v7项目是为了让项目兼容老版本的SDK。因此,为避免自动生成此项目,您可以在创建自己的 Android 项目时将 SDK 版本的最低要求设置为高于 4.0。
      【解决方案3】:

      我在命令行中构建了我的包以及 Android 源代码,并且很难包含 v7 appcompat。对我来说,将 android-support-v7-appcompat.jar 复制到 libs 并更改 Android.mk,就像上面发布的其他人一样,并不能解决我的问题。我终于发现我需要先构建那个 v7 appcompat。

      1. 转到 PATH/TO/frameworks/support/v7/appcompat 并首先构建它。
      2. 无需将 appcompat.jar 复制到库中。让你的 Android.mk 像上面的两个帖子一样,它应该可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-17
        • 2015-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多