赞
踩
文件夹列表
CMkDemo/Android.mk
CMkDemo/cpp/SerialPort.c
CMkDemo/cpp/SerialPort.h
Android.mk 内容如下
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional # All of the source files that we will compile. LOCAL_SRC_FILES:= \ cpp/SerialPort.c # All of the shared libraries we link against. LOCAL_SHARED_LIBRARIES := \ libutils liblog LOCAL_HEADER_LIBRARIES += jni_headers # No static libraries. LOCAL_STATIC_LIBRARIES := # Also need the JNI headers. #LOCAL_C_INCLUDES += \ # $(JNI_H_INCLUDE) # This is the target being built. LOCAL_MODULE:= lib_cmkdemo LOCAL_SYSTEM_EXT_MODULE := true LOCAL_MULTILIB := 64 # No special compiler flags. LOCAL_CFLAGS += include $(BUILD_SHARED_LIBRARY)
最终生成 ./out/target/product/<device_name>/system/system_ext/lib64/lib_cmkdemo.so
如果去掉 LOCAL_MULTILIB := 64 ,会生成
./out/target/product/<device_name>/system/system_ext/lib/lib_cmkdemo.so
./out/target/product/<device_name>/system/system_ext/lib64/lib_cmkdemo.so
文件夹列表
CBpDemo/Android.bp
CBpDemo/cpp/SerialPort.c
CBpDemo/cpp/SerialPort.h
Android.bp 内容如下
cc_library_shared { name: "lib_cbpdemo", system_ext_specific: true, compile_multilib: "64", srcs: [ "cpp/*.c", "cpp/*.cpp", ], include_dirs: [ ], header_libs: [ "jni_headers", ], shared_libs: [ "liblog", ] }
error: missing separator.
;场景: 需要把C文件集成到 Test.apk 的源码里,编译生成的 Test.apk 里有对应的 lib_xx.so ,
Test.apk 的 Android.mk ,
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_PACKAGE_NAME := Test LOCAL_MODULE_TAGS := optional LOCAL_CERTIFICATE := platform LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_DEX_PREOPT := false LOCAL_SYSTEM_EXT_MODULE := true LOCAL_PROGUARD_FLAG_FILES := proguard.flags LOCAL_PRIVATE_PLATFORM_APIS := true LOCAL_PRIVILEGED_MODULE := true LOCAL_JAVA_LIBRARIES := \ xxx-framework \ LOCAL_STATIC_JAVA_LIBRARIES += \ SettingsLib include $(BUILD_PACKAGE)
把 C 文件放到 src/com/test/cpp/ 下,添加 patch 如下,
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_PACKAGE_NAME := Test LOCAL_MODULE_TAGS := optional LOCAL_CERTIFICATE := platform LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_DEX_PREOPT := false LOCAL_SYSTEM_EXT_MODULE := true LOCAL_PROGUARD_FLAG_FILES := proguard.flags LOCAL_PRIVATE_PLATFORM_APIS := true LOCAL_PRIVILEGED_MODULE := true LOCAL_JAVA_LIBRARIES := \ xxx-framework \ LOCAL_STATIC_JAVA_LIBRARIES += \ SettingsLib ############### patch begin ################ LOCAL_JNI_SHARED_LIBRARIES:= lib_cmkdemo ############### patch end ################ include $(BUILD_PACKAGE) ############### patch begin ################ #LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional # This is the target being built. LOCAL_MODULE:= lib_cmkdemo LOCAL_SYSTEM_EXT_MODULE := true # All of the source files that we will compile. LOCAL_SRC_FILES:= \ src/com/test/cpp/SerialPort.c # Also need the JNI headers. LOCAL_C_INCLUDES += \ $(JNI_H_INCLUDE) # All of the shared libraries we link against. LOCAL_SHARED_LIBRARIES := \ libutils liblog # No static libraries. LOCAL_STATIC_LIBRARIES := #LOCAL_MULTILIB := 64 # No special compiler flags. LOCAL_CFLAGS += include $(BUILD_SHARED_LIBRARY) ############### patch end ################
Test.apk 的 Android.bp ,
android_app { name: "Test", certificate: "platform", srcs: ["src/**/*.java"], dex_preopt: { enabled: false, }, system_ext_specific: true, optimize: { proguard_flags_files: ["proguard.flags"], }, platform_apis: true, privileged: true, libs: [ "xxx-framework", ], static_libs: ["SettingsLib"], }
把 C 文件放到 src/com/test/cpp/ 下,添加 patch 如下,
android_app { name: "Test", certificate: "platform", srcs: ["src/**/*.java"], dex_preopt: { enabled: false, }, system_ext_specific: true, optimize: { proguard_flags_files: ["proguard.flags"], }, platform_apis: true, privileged: true, libs: [ "xxx-framework", ], static_libs: ["SettingsLib"], //############## patch begin ################ jni_libs: ["lib_cbpdemo"], //############## patch end ################ } //############## patch begin ################ //LOCAL_PATH:= $(call my-dir) cc_library_shared { // This is the target being built. name: "lib_cbpdemo", system_ext_specific: true, // All of the source files that we will compile. srcs: ["src/com/test/cpp/SerialPort.c"], // Also need the JNI headers. include_dirs: JNI_H_INCLUDE, // All of the shared libraries we link against. shared_libs: [ "libutils", "liblog", ], // No static libraries. static_libs: [], //LOCAL_MULTILIB := 64 // No special compiler flags. cflags: [], } //############## patch end ################
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。