【问题标题】:Add .so library as part of packages/apps in AOSP Lollipop在 AOSP Lollipop 中添加 .so 库作为包/应用程序的一部分
【发布时间】:2015-09-09 06:21:55
【问题描述】:

我一直在尝试将 .so 库作为我的应用程序的一部分包含在 AOSP 中。它可以通过 Android.mk 来完成。下面是我的应用程序在 pacakges/app 目录中的 Android.mk :

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

 LOCAL_MODULE_TAGS := optional

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

 LOCAL_PACKAGE_NAME := OpentokSample  
 LOCAL_CERTIFICATE:= platform

 LOCAL_JNI_SHARED_LIBRARIES=libopentok

 include $(BUILD_PACKAGE)

 include $(call all-makefiles-under,$(LOCAL_PATH))

以下是包含 libopentok.so 的 Android.mk :

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libopentok
LOCAL_PREBUILT_LIBS := opentok.so
include $(BUILD_SHARED_LIBRARY)

但这没有帮助?

【问题讨论】:

    标签: android-source android.mk


    【解决方案1】:

    如果您使用预构建的 .so 文件,我认为您应该使用 include $(BUILD_PREBUILT),并将它们标记为 LOCAL_MODULE_CLASS := SHARED_LIBRARIES。并且您需要在LOCAL_REQUIRED_MODULES 中列出依赖项。

    这里有一个示例 Android.mk,它添加了一个预编译的 apk 应用程序并将其 .so 库放入系统 lib 文件夹:

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE_TAGS := optional
    
    LOCAL_MODULE := MyApp
    
    LOCAL_CERTIFICATE := platform
    
    LOCAL_REQUIRED_MODULES := libamrcodec libecies
    
    LOCAL_SRC_FILES := MyApp.apk
    
    LOCAL_MODULE_CLASS := APPS
    
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    
    include $(BUILD_PREBUILT)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE := libamrcodec
    LOCAL_SRC_FILES := libs/armeabi/libamrcodec.so
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_SUFFIX := .so
    LOCAL_MODULE_CLASS := SHARED_LIBRARIES
    LOCAL_PRELINK_MODULE := false
    #LOCAL_MODULE_PATH := system/lib
    include $(BUILD_PREBUILT)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE := libecies
    LOCAL_SRC_FILES := libs/armeabi/libecies.so
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_SUFFIX := .so
    LOCAL_MODULE_CLASS := SHARED_LIBRARIES
    LOCAL_PRELINK_MODULE := false
    #LOCAL_MODULE_PATH := system/lib
    include $(BUILD_PREBUILT)
    

    【讨论】:

    • stackoverflow.com/a/17470099/421467 有什么不同? (在 device.mk 中使用 PRODUCT_COPY_FILES 关键字复制库)
    • 我认为不同之处在于 apk 文件是由 AOSP 构建脚本作为具有依赖关系的模块来处理的。您可能可以在没有模块的情况下使用 PRODUCT_COPY_FILES 获得相同的结果...
    • 这会将.so文件复制到apk的lib文件夹中吗?
    • @tejas - 不,它会将 .so 文件复制到系统库文件夹,/system/lib 我想。据我所知,系统 apk 文件不使用本地 lib 文件夹(在 app 文件夹中),与用户 apk 文件相反
    • @Mixaz 我已经导入了一个 .aar 库作为我的系统应用程序项目的依赖项。这在内部依赖于一些 .so 文件。但是这些文件在成功构建后并不是 apk 文件的一部分。任何线索如何解决这个问题?我已经尝试了网上建议的几乎所有可能的解决方案。任何线索将不胜感激,这是我的相同帖子....stackoverflow.com/questions/59452477/…
    【解决方案2】:
    LOCAL_MODULE_TAGS := samples
    

    LOCAL_MODULE_TAGS := tests
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多