Added a proguard file generation to the Java wrapper (todo: test it)

This commit is contained in:
Sylvain Berfini 2017-11-22 15:20:08 +01:00
parent f661520d27
commit ec2ffd8a14
2 changed files with 33 additions and 0 deletions

View file

@ -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'

View file

@ -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 {*;}