可以导入android app的gradle以在AOSP项目中构建

问题描述

我有一个使用gradle脚本的android-studio构建的android应用,现在我想将应用移至AOSP构建系统。因此,如何导入gradle脚本并转换为AOSP构建(可能是Android.bp或Android.mk)。 在gradle项目中有很多依赖项,android-studio可以自动下载此依赖项,我可以在AOSP中做到吗?

解决方法

根据我的经验,您可能需要手动编写Andorid.mk。顺便说一下,AOSP构建系统不会自动为您下载依赖项。如果依赖关系在AOSP中可用,则无需下载它们,只需链接到它们。否则,您需要将它们下载到本地目录,然后使用Android.mk将它们添加到AOSP并进行链接。

这是Android.mk的示例。其中,“ libs”目录包含AOSP中不可用的库。

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(call all-java-files-under,src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res

LOCAL_PACKAGE_NAME := testapp

LOCAL_PRIVATE_PLATFORM_APIS := true

LOCAL_REQUIRED_MODULES := com.example.testapp

LOCAL_CERTIFICATE := platform

LOCAL_MODULE_TAGS := optional

LOCAL_PRIVILEGED_MODULE := true

LOCAL_USE_AAPT2 := true

LOCAL_PROGUARD_ENABLED := disabled


LOCAL_STATIC_ANDROID_LIBRARIES += \
    androidx.lifecycle_lifecycle-extensions \
    androidx.appcompat_appcompat \
    androidx-constraintlayout_constraintlayout \
    androidx.recyclerview_recyclerview \
    androidx.cardview_cardview \
    android-support-v4 \

LOCAL_STATIC_JAVA_LIBRARIES := \
    cdi-api \
    zxing-core \
    http \
    httpclient \
    httpcore \

include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
    cdi-api:libs/cdi-api.jar \
    zxing-core:libs/core-3.3.2.jar \
    http:libs/http-2.2.1.jar \
    httpclient:libs/httpclient-4.2.2.jar \
    httpcore:libs/httpcore-4.2.3.jar \

include $(BUILD_MULTI_PREBUILT)