OpenVPN с ProGuard NoSuchMethodError

Я использую ICS-OpenVPN для разработки приложения VPN на Android. Все работает нормально без Proguard, но я хочу добавить некоторую защиту к своему коду, поэтому я включил ее. Но я продолжаю получать следующую ошибку:

Неустранимое исключение: java.lang.NoSuchMethodError: нет статического метода "Lnet/ OpenVPN /ovpn3/ovpncliJNI;.SwigDirector_ClientAPI_OpenVPNClient_tun_builder_new(Lnet/ OpenVPN /ovpn3/ClientAPI_OpenVPNClient;)Z" на net.openvpn.ovpn3.ovpncliJNI.swig_module_init(ovpncliJNI.java) в net.openvpn.ovpn3.ovpncliJNI.(ovpncliJNI.java:515) в net.openvpn.ovpn3.ovpncliJNI.new_ClientAPI_OpenVPNClient(ovpncliJNI.java. devpncliJNI.java) в.NET.ovpnapi.java.vpncliJNI.java).blinkt.openvpn.core.OpenVPNThreadV3.(OpenVPNThreadV3.java:39) по адресу de.blinkt.openvpn.services.OpenVPNService.o(OpenVPNService.java:387) по адресу de.blinkt.openvpn.serviceLocker.OpenVPn.services.OpenVPNVPN_CADNCK1 (cdBBBLinkT_Openvpn.services.OPR.java) в de.blinkt.openvpn.services.- $$ Lambda $ OpenVPNService $cPRZkdo0sASEkgC_nc9xL1TeYBI.run(-.java:2) в java.lang.Thread.run(Thread.java:764)

Вот мой файл Proguard:

-keepclasseswithmembernames,includedescriptorclasses class * {
    native <methods>;
}
-keep class net.openvpn.ovpn3.* {*;}
-keep class net.openvpn.ovpn3.ovpncli.* {*;}
-keep class net.openvpn.ovpn3.ovpncliJNI.* {*;}
-keep class de.blinkt.openvpn.api.* {*;}
-keep class de.blinkt.openvpn.core.* {*;}
-keep class de.blinkt.openvpn.custom.* {*;}
-keep class de.blinkt.openvpn.services.* {*;}
-keep class de.blinkt.openvpn.* {*;}

А вот часть из build.gradle отвечает за создание кода, вызывающего проблему:

File registerGenTask(String variantName, String variantDirName) {
   File baseDir = new File(buildDir, "generated/source/ovpn3swig/${variantDirName}")
   File genDir = new File(baseDir, "net/openvpn/ovpn3")

   tasks.register("generateOpenVPN3Swig${variantName}") {

      doFirst {
         mkdir(genDir)
      }

      doLast {
         exec {
            commandLine "swig", "-outdir", genDir, "-outcurrentdir", "-c++", "-java", "-package",
                  "net.openvpn.ovpn3", "-Isrc/main/cpp/openvpn3/client", "-Isrc/main/cpp/openvpn3/",
                  "-o", "${genDir}/ovpncli_wrap.cxx", "-oh", "${genDir}/ovpncli_wrap.h",
                  "src/main/cpp/openvpn3/javacli/ovpncli.i"
         }
      }
   }
   return baseDir
}

EDIT бы я ни делал, Proguard продолжает извлекать этот важный пакет:net.openvpn.ovpn3.ovpncliJNI. Я ясно вижу это вusage.txt где хранятся все удаленные классы.

0 ответов

Другие вопросы по тегам