2016-04-21 4 views
0

Мое приложение импортирует android.support.v7.appcompat. И мое приложение, и этот андроид jar имеют файл ресурсов colors.xml и strings.xml. Мое приложение хорошо работает, если я использую Android Studio 1.5 для его создания. Но когда я пытался использовать Android.mk для его сборки вместе с остальной частью моей системы, приложение просто сбрасывается каждый раз. Это сводится к следующей строке, которая возвращает 0 длины полей вместо многих цветов, определенных в файлах ресурсов.android AAPT теряет некоторые ресурсы

Field[] fields = R.color.class.getFields(); 

Я использовал декомпилятор java для сравнения двух файлов apk, созданных андроид-студией и Android.mk. У хорошего есть класс R.color как в android.support.v7.appcompat, так и в моем собственном ресурсе R.class. У плохого есть пустой класс цвета. и я видел, что R.java в промежуточной файловой папке все еще имеет все цвета, но она потеряна в apk. // good public static final class color { public static final int abc_background_cache_hint_selector_material_dark = 2131624259; ..... } // плохо: публичный статический конечный цвет класс {}

Сначала я предполагаю, что я пропустил флаг или вариант в Android.mk, что я скопированный из другого приложения. Но я обнаружил, что другие приложения для Android, которые созданы Android.mk, также не имеют цветового ресурса. Они в порядке, потому что они не используют этот цветовой ресурс. так в чем разница между Android Studio и Android.mk? Как я могу это исправить?

Моя система android 5.1.1. My Android.mk выглядит так. прокомментированные строки показывают, что я пробовал эти параметры и не работал.

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

#Include res dir from libraries 
#appcompat_dir := prebuilts/sdk/current/support/v7/appcompat 
#appcompat_dir := frameworks/support/v7/appcompat 
#appcompat_dir := ../../../../../../../../../android-sdk-linux/extras/android/support/v7/appcompat/res 
appcompat_dir := 
res_dirs := res libs/v7/appcompat/res 

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat 
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4 

$(warning LOCAL_STATIC_JAVA_LIBRARIES is '$(LOCAL_STATIC_JAVA_LIBRARIES)') 

$(warning TARGET_BUILD_APPS is '$(TARGET_BUILD_APPS)') 
LOCAL_SRC_FILES := $(call all-java-files-under, java) 

LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs)) 
#LOCAL_RESOURCE_DIR += $(appcompat_dir)/res 

$(warning LOCAL_RESOURCE_DIR is '$(LOCAL_RESOURCE_DIR)') 

LOCAL_AAPT_FLAGS := --auto-add-overlay 
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat 

LOCAL_MODULE_TAGS := optional 

LOCAL_PACKAGE_NAME := MyApp 

LOCAL_CERTIFICATE := platform 

LOCAL_PROGUARD_FLAG_FILES := proguard.flags 

include $(BUILD_PACKAGE) 

#include $(CLEAR_VARS) 

#LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := externalappcompatv7:libs/v7/appcompat/libs/android-support-v7-appcompat.jar 
#include $(BUILD_MULTI_PREBUILT) 

#include $(call all-makefiles-under,$(LOCAL_PATH)) 
+0

В конечном итоге я модифицировал стороннюю библиотеку java, чтобы избежать повторения всех цветов в ресурсе. Поэтому избегайте краха. –

ответ

0

В конечном итоге я модифицировал стороннюю библиотеку java, которую я использовал, чтобы избежать повторения всех цветов в ресурсе. Поэтому избегайте краха.

Смежные вопросы