2017-09-14 23 views
0

안녕하세요. 약한 영어로 용서해주세요. apktool이 전역 변수를 정렬하지 못하게하는 방법은 무엇입니까?

public class A { 


public static final SomeClass1 variable_C = new SomeClass1(); 
public static final SomeClass1 variable_A = new SomeClass1(); 
public static final SomeClass1 variable_D = new SomeClass1(); 
public static final SomeClass1 variable_B = new SomeClass1(); 


} 

난 내 프로젝트를 컴파일하고 다음을 디 컴파일 apktool 내 프로젝트 APK를 제공

는, apktool 아래 클래스 A처럼 컴파일 해제 : 나는 아래의 내용에 내 안드로이드 응용 프로그램에서 클래스 A라는 클래스가

public class A { 


public static final SomeClass1 variable_A = new SomeClass1(); 
public static final SomeClass1 variable_B = new SomeClass1(); 
public static final SomeClass1 variable_C = new SomeClass1(); 
public static final SomeClass1 variable_D = new SomeClass1(); 

}

apktool 때 내 프로젝트 APK 순서를 알파벳순 주문 전역 변수를 변경, 디 컴파일. apktool이 전역 변수를 사전 순으로 정렬하지 않고 apk를 디 컴파일 할 때 주 전역 변수를 순서대로 유지할 수 있습니까?

답장을 보내 주셔서 감사합니다.

답변

1

이것은 apktool의 잘못이 아닙니다. Java 클래스 파일 형식과 달리 Android dex 형식을 사용하려면 필드가 정렬 된 순서로 나타나야합니다. 즉, 코드를 컴파일하자 마자 소스 레벨 순서가 손실됩니다. https://source.android.com/devices/tech/dalvik/dex-format#class-data-item

정의 정적 필드에서

는 부호화 요소들의 시퀀스로 표현. 필드는 field_idx로 증가 순서으로 정렬되어야합니다.

필드 식별자 목록 파일에 정의되어 있는지 여부에 관계없이이 파일에서 참조하는 모든 필드의 식별자입니다. 이 목록은으로 분류되어야합니다. 정의 형식 (type_id 인덱스 별)은 주 순서이며, 필드 이름 (string_id 인덱스 별)은 중간 순서이며 type (type_id 인덱스 별)은 부 순서입니다. 목록에는 중복 된 항목이 없어야합니다.