2016-04-21 32 views
0

我的應用程序導入android.support.v7.appcompat。我的應用程序和這個android jar都有資源文件colors.xml和strings.xml。如果我使用Android Studio 1.5構建它,我的應用運行良好。但是當我嘗試使用Android.mk與我的其他系統一起構建它時,該應用每次都會崩潰。它歸結爲以下行,它返回0字段的長度,而不是在資源文件中定義的許多顏色。android AAPT失去一些資源

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

我用java反編譯器來比較由android studio和Android.mk構建的兩個apk文件。好的在android.support.v7.appcompat和我自己的資源R.class中都有R.color類。壞的有一個空的顏色類。並且我在中間文件夾中看到R.java仍然具有所有顏色,但它在apk中丟失。 //好的 public static final class color { public static final int abc_background_cache_hint_selector_material_dark = 2131624259; ..... } // 不好: 公共靜態最後一類顏色{}

起初我想我錯過了在Android.mk標誌或選項,我從其他應用程序複製。但是我發現由Android.mk構建的其他android應用程序也沒有顏色資源。他們沒問題,因爲他們不使用這種顏色資源。那麼Android Studio和Android.mk有什麼區別?我該如何解決它?

我的系統是android 5.1.1。 我的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庫。因此,避免崩潰。