自动生成预置APK的Android.mk

使用方法:
./preinstall_apk.sh AwCamera14/AwCamera14.apk

#!/bin/bash
# ##############################################################################
# @file        preinstall_apk.sh
# @author      Hexh
# @brief       自动生成预置APK的Android.mk
# @date        2016/04/25
# @History
# 1、
# ##############################################################################
APK_PATH="/home-ext/maxw/apk"
ANDROID_MK_PATH=""
PROJECT=""
TIP="################################################################################"

function apk_can_uninstall(){
    #echo apk_can_uninstall
    apk_name=$(basename $1 .apk)
    echo "$TIP" >> ${ANDROID_MK_PATH}
    echo 'include $(CLEAR_VARS)'>> ${ANDROID_MK_PATH}
    echo "LOCAL_MODULE := $apk_name" >> ${ANDROID_MK_PATH}
    echo 'LOCAL_MODULE_CLASS := APPS' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_MODULE_TAGS := optional' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_BUILT_MODULE_STEM := package.apk' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/preinstall' >> ${ANDROID_MK_PATH}
    echo '#LOCAL_DEX_PREOPT := false' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_CERTIFICATE := PRESIGNED' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_SRC_FILES := $(LOCAL_MODULE).apk' >> ${ANDROID_MK_PATH}
    lib_index=0
    arr=(`unzip -l ${1} | grep " lib/arm64-v8a"`)
    if [ ${#arr[@]} -gt 0 ]; then
        echo 'LOCAL_MULTILIB :=64' >> ${ANDROID_MK_PATH}
        search_str=" lib/arm64-v8a"
    else
        #echo 'LOCAL_MULTILIB :=32' >> ${ANDROID_MK_PATH}
        arr=(`unzip -l ${1} | grep " lib/armeabi-v7a"`)

        if [ ${#arr[@]} -gt 0 ]; then
	    echo 'LOCAL_MULTILIB :=32' >> ${ANDROID_MK_PATH}
            search_str=" lib/armeabi-v7a"
        else
	    arr=(`unzip -l ${1} | grep " lib/armeabi"`)
	    if [ ${#arr[@]} -gt 0 ]; then
	    echo 'LOCAL_MULTILIB :=32' >> ${ANDROID_MK_PATH}
            search_str=" lib/armeabi"
	    else
	    search_str=" lib/armeabi"
	    fi
        fi
    fi

    echo "" >> ${ANDROID_MK_PATH}
    echo 'include $(BUILD_PREBUILT)' >> ${ANDROID_MK_PATH}
}

function apk_can_not_uninstall(){
    #echo apk_can_not_uninstall
    apk_name=$(basename $1 .apk)
    echo "$TIP" >> ${ANDROID_MK_PATH}
    echo 'include $(CLEAR_VARS)'>> ${ANDROID_MK_PATH}
    echo "LOCAL_MODULE := $apk_name" >> ${ANDROID_MK_PATH}
    echo 'LOCAL_MODULE_CLASS := APPS' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_MODULE_TAGS := optional' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_BUILT_MODULE_STEM := package.apk' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)' >> ${ANDROID_MK_PATH}
    echo '#LOCAL_PRIVILEGED_MODULE := true' >> ${ANDROID_MK_PATH}
    echo '#LOCAL_DEX_PREOPT := false' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_CERTIFICATE := PRESIGNED' >> ${ANDROID_MK_PATH}
    echo 'LOCAL_SRC_FILES := $(LOCAL_MODULE).apk' >> ${ANDROID_MK_PATH}
    echo "" >> ${ANDROID_MK_PATH}

    lib_index=0
    arr=(`unzip -l ${1} | grep " lib/arm64-v8a"`)
    if [ ${#arr[@]} -gt 0 ]; then
        echo 'LOCAL_MULTILIB :=64' >> ${ANDROID_MK_PATH}
        search_str=" lib/arm64-v8a"
    else
        #echo 'LOCAL_MULTILIB :=32' >> ${ANDROID_MK_PATH}
        arr=(`unzip -l ${1} | grep " lib/armeabi-v7a"`)

        if [ ${#arr[@]} -gt 0 ]; then
            echo 'LOCAL_MULTILIB :=32' >> ${ANDROID_MK_PATH}
            search_str=" lib/armeabi-v7a"
        else
            arr=(`unzip -l ${1} | grep " lib/armeabi"`)
            if [ ${#arr[@]} -gt 0 ]; then
            echo 'LOCAL_MULTILIB :=32' >> ${ANDROID_MK_PATH}
            search_str=" lib/armeabi"
	    else
	    search_str=" lib/armeabi"
            fi
        fi
    fi
    
    LIB_COUNT=`unzip -l ${1} | grep -c "${search_str}"`
    #echo LIB_COUNT: $LIB_COUNT
   
    echo ${search_str}

    unzip -l ${1} | grep "${search_str}" | while read -r line
    do
        if [ $lib_index -eq 0 ]; then
            echo 'LOCAL_PREBUILT_JNI_LIBS := \' >> ${ANDROID_MK_PATH}
        fi
        #echo ${line}
        arr=($line)
        lib_array[lib_index]=${arr[3]}
        if [ $(($lib_index+1)) -eq $LIB_COUNT ]; then 
            echo "    @${lib_array[lib_index]}" >> ${ANDROID_MK_PATH}
        else
            echo "    @${lib_array[lib_index]} \\" >> ${ANDROID_MK_PATH}
        fi
        ((lib_index++))
        echo $lib_index: ${lib_array[$lib_index-1]}
    done
    
    echo "" >> ${ANDROID_MK_PATH}
    echo 'include $(BUILD_PREBUILT)' >> ${ANDROID_MK_PATH}
}

if [ $# -lt 1 ]; then
    echo -e "\033[35mPlease input a parameter about the path of custom's apks.\033[0m"
    exit    
fi

APK_PATH=$1

if [ ! -d "${APK_PATH}" ]; then
    echo -e "\033[35m${APK_PATH} does not exist.\033[0m"
    exit
fi

ANDROID_MK_PATH=${APK_PATH}/Android.mk

if [ -f ${ANDROID_MK_PATH} ]; then
    rm ${ANDROID_MK_PATH}
fi

#write head begin
PROJECT=${APK_PATH%/*}
PROJECT=${PROJECT##*/}
echo $PROJECT
#echo 'ifeq ($(TARGET_PRODUCT)'",full_${PROJECT})" >> ${ANDROID_MK_PATH}
echo "" >> ${ANDROID_MK_PATH}
echo 'LOCAL_PATH := $(call my-dir)' >> ${ANDROID_MK_PATH}
#write head end

ls ${APK_PATH}/*.apk | while read -r apk_name
do
    input_valid=0
    while [ ${input_valid} -eq 0 ]
    do
        echo -e "\033[32m$(basename $apk_name)\033[0m: 
    \033[31mplease input: 
        1(can be uninstalled)
        0(can not be uninstalled)\033[0m"
        #echo $(basename $apk_name) >> apk_test.txt
        read -u 1 uninstall_flag
        expr $uninstall_flag + 10 1>/dev/null 2>&1
        if [ $? -eq 0 ];then
            input_valid=1
    		if [ $uninstall_flag -le 0 ]; then
                apk_can_not_uninstall ${apk_name}
            else
                apk_can_uninstall ${apk_name}
            fi
        else
            echo -e "\033[31mInvalid input, please input a number.\033[0m"
        fi
    done
done

#write tail begin
echo "$TIP" >> ${ANDROID_MK_PATH}
#write tail end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值