2014-05-16 3 views
0

간단한 Android 앱을 배포하려고하는데 INSTALL_FAILED_DEXOPT 오류가 발생합니다. 내가 로그 캣을 검사 할 때, 나는 다음과 같은 얻을 :"클래스의 파일 플래그가 잘못되었습니다"는 의미는 무엇입니까?

W/dalvikvm(5558): Invalid file flags in class <class from my app>;: 0012 

그래서 "수업 시간에 잘못된 파일 플래그를"무엇을 의미하고, 값 0012 아무와 아무 상관이 있나요? 나는 몇몇 구글 검색을 시도했지만 아무 것도 나오지 않았다. 내가 찾은 전부는이 줄이있는 오류보고이지만 잘못된 점이나 해결 방법에 대한 설명이 없습니다.

+0

logcat은 무엇이라고 말합니까? – 323go

답변

1

오류이 (달빅/VM/OO/Class.cpp)에서 온다 :

/* 
* Make sure the aren't any "bonus" flags set, since we use them for 
* runtime state. 
*/ 
/* bits we can reasonably expect to see set in a DEX access flags field */ 
const uint32_t EXPECTED_FILE_FLAGS = (ACC_CLASS_MASK | CLASS_ISPREVERIFIED | 
             CLASS_ISOPTIMIZED); 
if ((pClassDef->accessFlags & ~EXPECTED_FILE_FLAGS) != 0) { 
    ALOGW("Invalid file flags in class %s: %04x", 
     descriptor, pClassDef->accessFlags); 
    return NULL; 
} 

오류 메시지가 클래스가 플래그를 0x0012 설정이 있음을 나타냅니다; 이들은 ACC_FINALACC_PRIVATE입니다. ACC_CLASS_MASK, 달빅/libdex/DexFile.h에 정의 ACC_PRIVATE 포함되지 않습니다

ACC_CLASS_MASK = 
    (ACC_PUBLIC | ACC_FINAL | ACC_INTERFACE | ACC_ABSTRACT 
      | ACC_SYNTHETIC | ACC_ANNOTATION | ACC_ENUM), 

ACC_INNER_CLASS_MASK 보호, 전용 및 정적이 포함되어 있지만이는 "외부"클래스에 적합하지 않다.

+0

고마워, 그게 문제가되었다. 문제의 클래스는 그것이되어서는 안될 때 내부 클래스였습니다. –

관련 문제