From ec2ffd8a143fe8c6b98e9d74063c1260484743ab Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 22 Nov 2017 15:20:08 +0100 Subject: [PATCH] Added a proguard file generation to the Java wrapper (todo: test it) --- wrappers/java/genwrapper.py | 16 ++++++++++++++++ wrappers/java/proguard.mustache | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 wrappers/java/proguard.mustache diff --git a/wrappers/java/genwrapper.py b/wrappers/java/genwrapper.py index 1299fa367..45399eba2 100644 --- a/wrappers/java/genwrapper.py +++ b/wrappers/java/genwrapper.py @@ -760,6 +760,19 @@ class Jni(object): for method in methods: self.methods.append(method) +class Proguard(object): + def __init__(self, package): + self.package = package + self.classes = [] + + def add_class(self, javaClass): + obj = { + 'package': self.package, + 'className': javaClass.className, + 'classImplName': javaClass.classImplName, + } + self.classes.append(obj) + ########################################################################## class GenWrapper(object): @@ -790,6 +803,7 @@ class GenWrapper(object): self.translator = JavaTranslator(package, exceptions) self.renderer = pystache.Renderer() self.jni = Jni(package) + self.proguard = Proguard(package) self.enums = {} self.interfaces = {} @@ -823,8 +837,10 @@ class GenWrapper(object): for name, value in self.classes.items(): self.render(value, self.javadir + '/' + value.filename) self.jni.add_object(value) + self.proguard.add_class(value) self.render(self.jni, self.srcdir + '/linphone_jni.cc') + self.render(self.proguard, self.srcdir + '/proguard.txt') def render(self, item, path): tmppath = path + '.tmp' diff --git a/wrappers/java/proguard.mustache b/wrappers/java/proguard.mustache new file mode 100644 index 000000000..6bb199a26 --- /dev/null +++ b/wrappers/java/proguard.mustache @@ -0,0 +1,17 @@ +# Don't warn stuff that we are not "proguarding", warnings would make the build fail. +-dontwarn org.linphone.** + +# The following intefaces are referenced from JNI +{{#classes}} +-keep interface {{package}}.{{className}} {*;} +-keep class {{package}}.{{classImplName}} {*;} +{{/classes}} + +# Mediastreamer classes +-keep class org.linphone.mediastream.Factory {*;} +-keep class org.linphone.mediastream.MediastreamerAndroidContext {*;} +-keep class org.linphone.mediastream.video.capture.AndroidVideoApi9JniWrapper {*;} +-keep class org.linphone.mediastream.video.capture.AndroidVideoApi8JniWrapper {*;} +-keep class org.linphone.mediastream.video.capture.AndroidVideoApi5JniWrapper {*;} +-keep class org.linphone.mediastream.video.AndroidVideoWindowImpl {*;} +-keep class org.linphone.mediastream.Version {*;}