LOCAL_PREBUILT_* Usage

这篇博客介绍了如何使用LOCAL_PREBUILT_宏来处理预编译的Java共享库、静态库、SO文件和可执行文件。详细列举了不同类型的预构建文件的路径,并提到了构建过程中的关键步骤,如JAVA共享库、JAVA静态库、静态和动态SO库的构建,以及在Android.mk文件中涉及的LOCAL_JNI_SHARED_LIBRARIES、LOCAL_RES_LIBRARIES和LOCAL_APK_LIBRARIES等配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Pre-build java shared lib

41include $$(CLEAR_VARS)
42LOCAL_PREBUILT_JAVA_LIBRARIES := share.jar
43include $$(BUILD_MULTI_PREBUILT)

2. Pre-build java static lib

31include $$(CLEAR_VARS)
32LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := staticName.frameworkdep:static.jar
33include $$(BUILD_MULTI_PREBUILT)
34
35include $$(CLEAR_VARS)
36LOCAL_MODULE := $1
37LOCAL_MODULE_TAGS := $2
38LOCAL_STATIC_JAVA_LIBRARIES := staticName.frameworkdep
39include $$(BUILD_JAVA_LIBRARY)

3. Pre-build so file

5include $(CLEAR_VARS)
6LOCAL_MODULE_TAGS := optional
7LOCAL_PREBUILT_LIBS := $(_local_shared_libs)
8include $(BUILD_MULTI_PREBUILT)

4. Pre-build executable file

3include $(CLEAR_VARS)
4LOCAL_PREBUILT_EXECUTABLES := flashimage.py
5LOCAL_PREBUILT_EXECUTABLES += flashtools.py
6LOCAL_PREBUILT_EXECUTABLES += flashreadme.txt
7LOCAL_MODULE_TAGS := optional
8LOCAL_IS_HOST_MODULE := true
9include $(BUILD_MULTI_PREBUILT)
Output:

./host/linux-x86/bin/flashimage.py
./host/linux-x86/obj/EXECUTABLES/flashimage_intermediates
./host/linux-x86/obj/EXECUTABLES/flashimage_intermediates/flashimage.py

./host/linux-x86/bin/flashtools.pyc
./host/linux-x86/bin/flashtools.py
./host/linux-x86/obj/EXECUTABLES/flashtools_intermediates
./host/linux-x86/obj/EXECUTABLES/flashtools_intermediates/flashtools.py

./host/linux-x86/bin/flashreadme.txt
./host/linux-x86/obj/EXECUTABLES/flashreadme_intermediates
./host/linux-x86/obj/EXECUTABLES/flashreadme_intermediates/flashreadme.txt


11include $(CLEAR_VARS)
12LOCAL_MODULE := flashaddon
13LOCAL_MODULE_TAGS := optional
14LOCAL_MODULE_CLASS := EXECUTABLES
15ifneq ($(wildcard $(LOCAL_PATH)/flashaddon.$(TARGET_DEVICE).py),)
16LOCAL_SRC_FILES := flashaddon.$(TARGET_DEVICE).py
17else
18LOCAL_SRC_FILES := flashaddon.default.py
19endif
20LOCAL_MODULE_PATH := $(PRODUCT_OUT)
21LOCAL_MODULE_SUFFIX := $(suffix $(LOCAL_SRC_FILES))
22include $(BUILD_PREBUILT)

Output:

./target/product/flounder32/flashaddon.py
./target/product/flounder32/flashaddon.pyc
./target/product/flounder32/obj/EXECUTABLES/flashaddon_intermediates
./target/product/flounder32/obj/EXECUTABLES/flashaddon_intermediates/flashaddon.py


5. build java shared lib

2include $(CLEAR_VARS)
3
4LOCAL_MODULE_TAGS := optional
5
6LOCAL_SRC_FILES := $(call all-java-files-under, src)
7LOCAL_JAVA_LIBRARIES := bouncycastle conscrypt
8
9LOCAL_PACKAGE_NAME := CertInstaller
10LOCAL_CERTIFICATE := platform
11
12include $(BUILD_PACKAGE)

6. build java static lib

2include $(CLEAR_VARS)
3
4LOCAL_MODULE_TAGS := optional
5
6LOCAL_SRC_FILES := $(call all-subdir-java-files)
7
8LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
9
10LOCAL_JNI_SHARED_LIBRARIES := libjni_terminal
11
12# TODO: enable proguard once development has settled down
13#LOCAL_PROGUARD_FLAG_FILES := proguard.flags
14LOCAL_PROGUARD_ENABLED := disabled
15
16LOCAL_PACKAGE_NAME := Terminal
17
18include $(BUILD_PACKAGE)

7. build so static lib

17include $(CLEAR_VARS)
18
19LOCAL_STATIC_LIBRARIES += libgif
20
21# Link to Android logging (liblog.so) and dynamic linker (libdl.so) libraries
22LOCAL_LDFLAGS := -llog -ldl
23
24LOCAL_C_INCLUDES := \
25	external/giflib
26
27LOCAL_MODULE    := libgiftranscode
28LOCAL_SRC_FILES := GifTranscoder.cpp
29
30LOCAL_CFLAGS += -Wall -Wno-unused-parameter -Wno-switch
31
32LOCAL_SDK_VERSION := 8
33LOCAL_NDK_STL_VARIANT := c++_static # LLVM libc++
34
35include $(BUILD_SHARED_LIBRARY)

8. build so shared lib

17# JpegUtil
18include $(CLEAR_VARS)
19
20LOCAL_CFLAGS := -std=c++11
21LOCAL_NDK_STL_VARIANT := c++_static
22LOCAL_LDFLAGS   := -llog -ldl -ljnigraphics
23LOCAL_SDK_VERSION := 9
24LOCAL_MODULE    := libjni_jpegutil
25LOCAL_SRC_FILES := jpegutil.cpp jpegutilnative.cpp
26
27LOCAL_C_INCLUDES += external/jpeg
28
29LOCAL_SHARED_LIBRARIES := libjpeg
30
31LOCAL_CFLAGS    += -ffast-math -O3 -funroll-loops
32LOCAL_ARM_MODE := arm
33
34include $(BUILD_SHARED_LIBRARY)

9. LOCAL_JNI_SHARED_LIBRARIES

In packages/apps/Terminal/jni/Android.mk

1LOCAL_PATH:= $(call my-dir)
2
3include $(CLEAR_VARS)
4
5LOCAL_SRC_FILES := \
6    jni_init.cpp \
7    com_android_terminal_Terminal.cpp \
8
9LOCAL_C_INCLUDES += \
10    external/libvterm/include \
11    libcore/include \
12    frameworks/base/include
13
14LOCAL_SHARED_LIBRARIES := \
15    libandroidfw \
16    libandroid_runtime \
17    liblog \
18    libnativehelper \
19    libutils
20
21LOCAL_STATIC_LIBRARIES := \
22    libvterm
23
24LOCAL_CFLAGS := \
25    -Wno-unused-parameter \
26
27LOCAL_MODULE := libjni_terminal
28LOCAL_MODULE_TAGS := optional
29
30include $(BUILD_SHARED_LIBRARY)

In packages/apps/Terminal/Android.mk

2include $(CLEAR_VARS)
3
4LOCAL_MODULE_TAGS := optional
5
6LOCAL_SRC_FILES := $(call all-subdir-java-files)
7
8LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
9
10LOCAL_JNI_SHARED_LIBRARIES := libjni_terminal
11
12# TODO: enable proguard once development has settled down
13#LOCAL_PROGUARD_FLAG_FILES := proguard.flags
14LOCAL_PROGUARD_ENABLED := disabled
15
16LOCAL_PACKAGE_NAME := Terminal
17
18include $(BUILD_PACKAGE)
19
20include $(call all-makefiles-under,$(LOCAL_PATH))

10.LOCAL_RES_LIBRARIES

In frameworks/base/tests/SharedLibrary/lib/Android.mk

1LOCAL_PATH:= $(call my-dir)
2include $(CLEAR_VARS)
3
4LOCAL_SRC_FILES := $(call all-subdir-java-files)
5
6LOCAL_AAPT_FLAGS := --shared-lib
7LOCAL_PACKAGE_NAME := SharedLibrary
8
9LOCAL_EXPORT_PACKAGE_RESOURCES := true
10LOCAL_PRIVILEGED_MODULE := true
11LOCAL_MODULE_TAGS := optional
12
13LOCAL_PROGUARD_FLAG_FILES := proguard.proguard
14
15include $(BUILD_PACKAGE)

In frameworks/base/tests/SharedLibrary/client/Android.mk

1LOCAL_PATH:= $(call my-dir)
2include $(CLEAR_VARS)
3
4LOCAL_SRC_FILES := $(call all-subdir-java-files)
5
6LOCAL_RES_LIBRARIES := SharedLibrary
7
8LOCAL_PACKAGE_NAME := SharedLibraryClient
9
10LOCAL_MODULE_TAGS := tests
11
12include $(BUILD_PACKAGE)

11. LOCAL_APK_LIBRARIES

In frameworks/base/tests/FeatureSplit/feature1/Android.mk

18include $(CLEAR_VARS)
19
20LOCAL_SRC_FILES := $(call all-subdir-java-files)
21LOCAL_PACKAGE_NAME := FeatureSplit1
22LOCAL_MODULE_TAGS := tests
23
24featureOf := FeatureSplitBase
25
26LOCAL_APK_LIBRARIES := $(featureOf)
27featureOfApk := $(call intermediates-dir-for,APPS,$(featureOf))/package.apk
28localRStamp := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME),,COMMON)/src/R.stamp
29$(localRStamp): $(featureOfApk)
30
31LOCAL_AAPT_FLAGS := --feature-of $(featureOfApk) --custom-package com.android.test.split.feature.one
32
33include $(BUILD_PACKAGE)

12. PREBUILT_SHARED_LIBRARY & PREBUILT_STATIC_LIBRARY

3include $(CLEAR_VARS)
4LOCAL_MODULE := libfoo
5LOCAL_SRC_FILES := $(PREBUILTS_DIR)/libs/*$(TARGET_ARCH_ABI)/libfoo.so
6include $(PREBUILT_SHARED_LIBRARY)
7
8include $(CLEAR_VARS)
9LOCAL_MODULE := libbar
10LOCAL_SRC_FILES := $(PREBUILTS_DIR)/obj/local/*$(TARGET_ARCH_ABI)/libbar.a
11include $(PREBUILT_STATIC_LIBRARY)
12
13include $(CLEAR_VARS)
14LOCAL_MODULE := test_prebuilts_copy
15LOCAL_SRC_FILES := main.c
16LOCAL_SHARED_LIBRARIES := libfoo
17LOCAL_STATIC_LIBRARIES := libbar
18include $(BUILD_EXECUTABLE)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值