代码之家  ›  专栏  ›  技术社区  ›  Midhun PM

如何在android.mk文件中启用带有-assumenosideffects标志的Proguard

  •  0
  • Midhun PM  · 技术社区  · 7 年前

    我正试图用AOSP编译我的应用程序,并正确地构建它。我对使用Proguard标志有问题。

    -assumenosideeffects.
    

    我正在尝试除去最终构建中的日志语句,因此 使用我的proguard文件中的以下内容,

    -assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
    }
    

    我的android.mk文件条目如下

    LOCAL_PROGUARD_ENABLED := obfuscation optimization
    LOCAL_PROGUARD_FLAG_FILES := proguard.flags
    

    我尝试了各种组合。我确保优化是 启用。 如果我用它来构建Android Studio,它会很好地工作。

    在使用AOSP编译时,是否有任何方法可以使此工作正常?

    我的android.mk文件

    LOCAL_PATH:= $(call my-dir)
    ifneq ($(TARGET_BUILD_PDK), true)
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := $(call all-java-files-under, src)
    LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \
    frameworks/support/v7/appcompat/res \
    frameworks/support/design/res
    LOCAL_PACKAGE_NAME := Progurdsample
    LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
    LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
    LOCAL_CERTIFICATE := platform
    LOCAL_MODULE_TAGS := optional
    TARGET_ABI := x86_64
    LOCAL_PRIVILEGED_MODULE := true
    LOCAL_USE_AAPT2 := true
    LOCAL_DEX_PREOPT := false
    LOCAL_PROGUARD_ENABLED := custom
    LOCAL_JACK_ENABLED := incremental
    LOCAL_PROGUARD_FLAG_FILES := proguard.flags
    LOCAL_AAPT_FLAGS := --auto-add-overlay
    LOCAL_AAPT_FLAGS += --extra-packages    android.support.v7.appcompat:android.support.v7.gridlayout
    include $(BUILD_PACKAGE)
    endif
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Midhun PM    7 年前

    目前我们不能直接使用 assumenosideeffects

    说明: Android ASOP构建树不支持 假想效应 由于jack构建服务器,jack使用proguard配置文件来启用收缩和模糊。但有些选择会被杰克忽视。 忽略的选项包括:

    -dontoptimize // Jack does not optimize 
    -dontpreverify // Jack does not preverify 
    -skipnonpubliclibraryclasses 
    -dontskipnonpubliclibraryclasses 
    -dontskipnonpubliclibraryclassmembers 
    -keepdirectories 
    -target 
    -forceprocessing 
    -printusage 
    -whyareyoukeeping 
    -optimizations 
    -optimizationpasses 
    -assumenosideeffects 
    -allowaccessmodification 
    -mergeinterfacesaggressively 
    -overloadaggressively 
    -microedition 
    -verbose 
    -dontnote 
    -dontwarn 
    -ignorewarnings 
    -printconfiguration 
    -dump 
    

    参考文献: https://source.android.com/setup/build/jack

    但我们也可以做同样的工作,

    在makefile中,我们可以使用 ANDROID_COMPILE_WITH_JACK =false

    完整的android.mk文件看起来,

    LOCAL_PATH:= $(call my-dir)
    ifneq ($(TARGET_BUILD_PDK), true)
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES := $(call all-java-files-under, src)
    LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \
    frameworks/support/v7/appcompat/res \
    frameworks/support/design/res
    LOCAL_PACKAGE_NAME := Progurdsample
    LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
    LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
    LOCAL_CERTIFICATE := platform
    LOCAL_MODULE_TAGS := optional
    TARGET_ABI := x86_64
    LOCAL_PRIVILEGED_MODULE := true
    LOCAL_USE_AAPT2 := true
    LOCAL_DEX_PREOPT := false
    LOCAL_PROGUARD_ENABLED := custom
    ANDROID_COMPILE_WITH_JACK := false
    LOCAL_PROGUARD_FLAG_FILES := proguard.flags
    LOCAL_AAPT_FLAGS := --auto-add-overlay
    LOCAL_AAPT_FLAGS += --extra-packages    android.support.v7.appcompat:android.support.v7.gridlayout
    include $(BUILD_PACKAGE)
    endif