Welcome to our new developer portal! Use the "Ask" button to chat with our AI Agent.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

NFC Wallet SDK obfuscation

Overview

NFC Wallet SDK is obfuscated with DexGuard.

In this section we are presenting the recommended minimum R8/ProGuard rules for properly obfuscating TSH SDK packages and classes. Theses rules do not affect the application packages.

Please refer to Enable the R8 app optimizer.

R8/ProGuard rules

The below consumer rules are bundled with the distributed .aar libraries and are applied automatically when code obfuscation is enabled in your app.

#NFC Wallet SDK
-dontwarn util.**
-dontwarn com.gemalto.mfs.mwsdk.**
-dontnote com.gemalto.mfs.mwsdk.utils.async.AbstractAsyncHandler
-keep class util.h.xz.** { *; }
-keepclasseswithmembernames class * {
native <methods>;
}
# Global JNA Rules
-keep,allowobfuscation interface com.sun.jna.Library
-keep,allowobfuscation interface com.sun.jna.Callback
-keep,allowobfuscation interface com.sun.jna.Function
-keep,allowobfuscation interface * implements com.sun.jna.Library
-keep,allowobfuscation interface * implements com.sun.jna.Callback
-keepclassmembers interface * implements com.sun.jna.Library {
<methods>;
}
-keepclassmembers interface * implements com.sun.jna.Callback {
<methods>;
}
-keep class com.sun.jna.CallbackReference {
void dispose();
com.sun.jna.Callback getCallback(java.lang.Class,com.sun.jna.Pointer,boolean);
com.sun.jna.Pointer getFunctionPointer(com.sun.jna.Callback,boolean);
com.sun.jna.Pointer getNativeString(java.lang.Object,boolean);
java.lang.ThreadGroup initializeThread(com.sun.jna.Callback,com.sun.jna.CallbackReference$AttachOptions);
}
-keep,includedescriptorclasses class com.sun.jna.Native {
com.sun.jna.Callback$UncaughtExceptionHandler callbackExceptionHandler;
void dispose();
java.lang.Object fromNative(com.sun.jna.FromNativeConverter,java.lang.Object,java.lang.reflect.Method);
com.sun.jna.NativeMapped fromNative(java.lang.Class,java.lang.Object);
com.sun.jna.NativeMapped fromNative(java.lang.reflect.Method,java.lang.Object);
java.lang.Class nativeType(java.lang.Class);
java.lang.Object toNative(com.sun.jna.ToNativeConverter,java.lang.Object);
int getNativeSize(java.lang.Class);
}
-keep class com.sun.jna.FromNativeConverter {
public java.lang.Class nativeType();
public java.lang.Object fromNative(java.lang.Object, com.sun.jna.FromNativeContext);
}
-keep class com.sun.jna.Native$ffi_callback {
void invoke(long,long,long);
}
-keep class com.sun.jna.Structure {
long typeInfo;
com.sun.jna.Pointer memory;
<init>(int);
void autoRead();
void autoWrite();
com.sun.jna.Pointer getTypeInfo();
com.sun.jna.Structure newInstance(java.lang.Class,long);
}
-keep class com.sun.jna.Structure$FFIType$FFITypes {
<fields>;
}
-keep class com.sun.jna.Structure$ByValue {
}
-keep class com.sun.jna.CallbackReference$AttachOptions {
<fields>;
}
-keep class com.sun.jna.Callback$UncaughtExceptionHandler {
void uncaughtException(com.sun.jna.Callback,java.lang.Throwable);
}
-keep class com.sun.jna.ToNativeConverter {
java.lang.Class nativeType();
}
-keep class com.sun.jna.NativeMapped {
java.lang.Object toNative();
}
-keep class com.sun.jna.IntegerType {
long value;
}
-keep class com.sun.jna.PointerType {
com.sun.jna.Pointer pointer;
}
-keep class com.sun.jna.LastErrorException {
<init>(int);
<init>(java.lang.String);
}
-keep class com.sun.jna.Pointer {
long peer;
<init>(long);
}
-keep class com.sun.jna.WString {
<init>(java.lang.String);
}
-keep class com.sun.jna.JNIEnv { *; }
Note

Last updated

Was this helpful?