2014-02-26 1 views
1

Progaurd 통합 후 Rhino API 관련 문제가 있습니다.Progaurd 통합 후 Rhino API 관련 문제

프로 우드가 없으면 아래 코드가 정상적으로 작동합니다.

org.mozilla.javascript.Context context = org.mozilla.javascript.Context.enter(); 
context.setOptimizationLevel(-1); 
ScriptableObject scope = context.initStandardObjects(); 
try { 
    InputStream inputStream = mContext.getAssets().open(JAVASCRIPT_FILE); 
    InputStreamReader reader = new InputStreamReader(inputStream); 

    context.evaluateReader(scope, reader, JAVASCRIPT_FILE, 1, null); 
} catch (IOException exception) { 
    throw new CustomException(null, exception); 
} 
Function functionAdd = (Function) scope.get(JAVASCRIPT_FUNCTION_NAME); 

Object returnObject = functionAdd.call(context, scope, scope, new Object[] { 
    parameter1, parameter2, parameter3 
}); 

그러나 Progaurd을 통합 한 후, 나는 오류가 아래에 받고 있어요 :

02-26 14:58:13.200: E/AndroidRuntime(11607): Caused by: java.lang.IllegalStateException: Failed to create VMBridge instance 
02-26 14:58:13.200: E/AndroidRuntime(11607): at org.a.b.ds.<clinit>(Unknown Source) 
02-26 14:58:13.200: E/AndroidRuntime(11607): ... 11 more 

당신이 명시 적으로하지에 얘기하지 않는

+0

는 난독을 요청해야 https://github.com/mozilla/rhino/blob/master/src/org/mozilla/javascript/VMBridge.java를 살펴 그 클래스들 중 하나를'classNames' 배열로 유지하기 위해서 – Selvin

답변

9

Proguard와는 코뿔소 라이브러리 클래스를 당황하게됩니다 감사합니다. Selvin이 언급했듯이, 특히 VMBridge.java 클래스가 영향을받습니다.

rhino 라이브러리 클래스를 모호하게 만드는 것을 유지하면 문제가 해결됩니다. 그 내용은 다음 난독 예외를 사용

-keep class org.mozilla.javascript.** { *; }