как включить proguard с флагом -assumenosideeffects в файле Android.MK - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь скомпилировать свое приложение с помощью AOSP и правильно его собрать.У меня проблема с использованием флага proguard.

-assumenosideeffects.

Я пытаюсь удалить операторы Log в моей окончательной сборке и, следовательно, использую следующее в моем файле 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 Ответ

0 голосов
/ 30 мая 2018

В настоящее время мы не можем напрямую использовать assumenosideeffects

Объяснение: Дерево сборки Android asop не поддерживает assumenosideeffects из-за сервера сборки 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 мы можем отключить сервер сборки jack, используя 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
...