android apk编译时间获取

android apk编译时间获取

本方法只适用于使用android 源码编译环境。

有时候我们需要在android应用上获取apk的编译时间,但java编译并不像C、C++那样有相应的宏可以在代码中读取到编译时间。我们可以利用android源码编译-linux环境来获取编译时间,然后把获取的时间写到android apk的raw文件中,这样apk启动后就可以通过读取raw文件中的时间来获取编译时间。
Android源码编译apk需要写Android.mk文件,Android.mk文件中可以执行shell命令,利用shell命令获取编译时的时间并且写入到apk资源文件夹res/raw/下的文件即可。

Android.mk:

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

#这里就是把date命令格式化输出到资源文件res/raw/date下的###
$(shell date "+%Y-%m-%d %H:%M:%S" > $(LOCAL_PATH)/res/raw/date)
LOCAL_MODULE_TAGS := optional
##end#####

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

LOCAL_PACKAGE_NAME := MiptFactoryTest
LOCAL_CERTIFICATE := platform

LOCAL_OVERRIDES_PACKAGES := Home

include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

include $(BUILD_MULTI_PREBUILT)

java中通过下面函数读取raw文件获取编译时间:

public String getBuildTime(){
        String content = null;
        Resources resources=mContext.getResources();
        InputStream is=null;
        try{
            is=resources.openRawResource(R.raw.date);
            byte buffer[]=new byte[is.available()];
            is.read(buffer);
            content=new String(buffer);
            Log.i(TAG, "read:"+content);
        }
        catch(IOException e)
        {
            Log.e(TAG, "write file",e);
        }
        finally
        {
            if(is!=null)
            {
                try{
                    is.close();
                }catch(IOException e)
                {
                    Log.e(TAG, "close file",e);
                }
            }
        }
       return content;
    }

你可能感兴趣的:(android,app)