Programming

지옥을 보호-참조 클래스를 찾을 수 없습니다

procodes 2020. 7. 10. 21:25
반응형

지옥을 보호-참조 클래스를 찾을 수 없습니다


그래서, 난 TRYING 일부 소프트웨어를 해제하지만 Proguard와 나에게 두통을주고있다.

proguard를 사용하여 내보내려고 할 때 많은 경고 메시지가 나타납니다.

예를 들면 다음과 같습니다.

[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME]          You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME]          or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[ 

경고는 간단한 프레임 워크와 관련이 있으므로 proguard 구성 파일에서 다음을 추가했습니다.

-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar

pathtoprojecttolibs내 프로젝트에서 참조하는 jar의 경로는 어디에 있습니까 ?

이것은 아무런 차이가 없습니다.

간단한 프레임 워크가 javax를 참조하면 proguard에게 이것을 무시하도록 지시 할 수 있습니까 ??

어떤 아이디어?


org.simpleframework.xml.stream.StreamReader귀하의 코드에서을 참조하십시오 javax.xml.stream.events.XMLEvent. 후자의 클래스는 Java 런타임 ( rt.jar)의 일부이지만 Android 런타임 ( android.jar) 의 일부가 아니므로 ProGuard는 무언가가 손상되었을 수 있다고 경고합니다. 어쨌든 응용 프로그램이 작동한다고 확신하면 지정할 수 있습니다

-dontwarn javax.xml.stream.events.**

프로 가드 지옥?


제 경우에는 근본 원인이 여기 있었습니다. 당신이 건너 뛸 수있는 경고 :

-dontwarn org.simpleframework.xml.stream.**

원래의 답은 여기에있다


이 오류는 사용하는 라이브러리가 실제로 사용되지 않는 다른 라이브러리에 의존하지만 Proguard에서 찾고 있기 때문에 발생합니다. 이 경고를 비활성화 하려면 -dontwarn 행을 Android 프로젝트 proguard-rules.pro 파일에
추가하십시오 .

여기에 이미지 설명을 입력하십시오

오류의 스택 추적에서 proguard-rules.pro에 추가해야 할 종속성을 찾을 수 있습니다.


이를 Proguard 구성에 포함시켜야합니다.

-dontskipnonpubliclibraryclasses

검색 시간을 해결 한 My Magic 키 : progruard-android.txt에 추가

-dontskipnonpubliclibraryclassmembers

흠. 경고를 읽으면 사용하려는 라이브러리가 javax.xml.stream.events에 의존하는 것처럼 보입니다. 네임 스페이스가 실제로 안드로이드에 전혀 포함되어 있다고 생각하지 않습니다. ( 패키지 색인 참조 )

proguard를 사용하지 않고 에뮬레이터에 배포하고 작동하는지 확인하십시오. 그 경고가 정확하다면 내 추측은 아니오입니다.


나는 이것이 엣지 케이스라고 생각하지만 제 경우에는 Jenkins proguard에서 빌드 폴더를 완전히 지워야했지만 더 이상 존재하지 않는 오래된 코드로 작업하려고했습니다.


내 경우에는 아무것도 변경하지 않았으며 경고가 표시되기 시작했습니다. 문제는 깨진 gradle 캐시와 관련이 있습니다. 다른 답변을 확인하십시오 . 문제를 찾는 데 2 ​​시간이 걸렸기 때문에 이것을 공유합니다.]


proguard-rules.progradle scripts 디렉토리 파일에 다음 행을 추가하십시오 .

-dontwarn package.class.name.**

여기서 package.class.namejar 파일의 클래스 이름이 추가 된 패키지 이름입니다.

예를 들면 다음과 같습니다.

-dontwarn com.myexternalclass.utils.**

참고 URL : https://stackoverflow.com/questions/6974231/proguard-hell-cant-find-referenced-class

반응형