JavaSE에서 이미 작동하는 사용자 정의 문자 세트가 있습니다.'META-INF/services'- 파일을 apk에 보관하십시오.
내 CharsetProvider 클래스는 에 있으며 META-INF/services
에 있으며 모든 것이 정상적으로로드되고 예상대로 작동합니다.
하지만 지금은 안드로이드에서도 lib를 사용하고 있지만 Android-App에서는 charset이로드되지 않습니다.
Android-App에서 예상대로 사용할 수 있도록 내 charset을 어떻게 통합 할 수 있습니까? 순간
Charset.forName("MyCS");
나는이 같은 문제를 해결하고 있어요 :
매번 때문에, 작동하지만, 나에게 효과가 보인다
public static String decode(String encoding, byte[] buffer, int offset, int length) {
String result = "";
try {
result = new String(buffer, offset, length, encoding);
} catch (UnsupportedEncodingException ex) {
MyCharsetProvider provider = new MyCharsetProvider();
Charset cs = provider.charsetForName(encoding);
if (cs == null) {
Logger.getLogger(Converters.class.getName()).log(
Level.SEVERE,null,ex);
result = new String(buffer, offset, length);
} else {
result = cs.decode(ByteBuffer.wrap(buffer, offset, length)).toString();
}
}
return result;
}
난 내 자신의 캐릭터 세트, 예외와 같이 디코딩하려고 Throw되어 CharsetProvider-Object가 생성됩니다.
물론 싱글 톤 패턴으로 생성을 줄일 수 있습니다. 그러나 MyCharsetProvider를 직접 사용하지 않는 것이 문제입니다.
편집 : META-INF/services/java.nio.charset.spi.CharsetProvider
이후
내가 비록 아마 난독 그것을 제거 APK에 없습니다. 그런 다음 proguard.cfg에서 다음 옵션을 시도했습니다.
-adaptresourcefilenames **.CharsetProvider
-adaptresourcefilecontents **.CharsetProvider
그러나 문제는 여전히 지속됩니다. 그렇다면이 파일들을 META-INF/services
에서 내 apk에 자동으로 개미 (netbeans)를 사용하여 어떻게 가져올 수 있습니까?
Ant로 전환하지 않고 복사하려면 어떻게해야합니까? – Singagirl
@DmitriyR 어떤 빌드 시스템을 사용합니까? 나는 eclipse-plugin을위한 좋은 해결 방법이있을 것이라고 생각하지 않는다. – AlexS
나는 이클립스를 사용하므로 마침내 서명되지 않은 .apk를 내 보낸 다음 apk 및 서명과 ziplaligning에 경로를 추가하는 스크립트를 작성했습니다. 불편하지만 작동합니다. Eclipse에서 에뮬레이터로 바로 전개 할 수없는 주요 문제점. – Singagirl