1. 程式人生 > >android 原始碼中預置帶.so檔案的APK

android 原始碼中預置帶.so檔案的APK

有原始碼有.so預置apk:

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

LOCAL_MODULE_TAGS := optional

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

LOCAL_PACKAGE_NAME := APK_NAME

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
LOCAL_PREBUILT_JNI_LIBS:=\
libs/armeabi/libsafekey.so

LOCAL_CERTIFICATE := platform
LOCAL_MULTILIB :=32
include $(BUILD_PACKAGE)
LOCAL_STATIC_JAVA_LIBRARIES 載入庫檔案
LOCAL_STATIC_JAVA_LIBRARIES 新增.so檔案,如果apk中不帶.so檔案,可不加
LOCAL_MULTILIB 只預置32位的.so,(64bit/32bit)

預置無原始碼無.so檔案的apk

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

# Module name should match apk name to be installed
LOCAL_MODULE := APK_NAME
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)


LOCAL_PREBUILT_JNI_LIBS:= \
@lib/armeabi/libBDRC4_V1_1.so  \
@lib/armeabi/libfileobserver_jni.so \
@lib/armeabi/libfreetype-jni.so  \
@lib/armeabi/libKSOStatEncryption.so \
@lib/armeabi/libkwopdf.so  \
@lib/armeabi/libOoxmlDecrypt.so \
@lib/armeabi/libweibosdkcore.so

#LOCAL_MULTILIB :=32
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
LOCAL_PREBUILT_JNI_LIBS:apk中帶.so

預置無原始碼無so檔案的apk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := APK_NAME
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
include $(BUILD_PREBUILT)

容易出問題的是第一種,有原始碼有.so檔案的,可能會碰到各種so檔案的錯誤,特別注意一下。

有原始碼預置apk時,不要忘了在AndroidManifest.xml中新增 android:sharedUserId="android.uid.system"