apache commons ftp 不适用于 release build apk

apache commons ftp doesn't work on release build apk

我可以在使用调试版本时将文件上传到 FTP 服务器,但在发布版本中失败:

我能够毫无错误地生成发布版本 apk。应用程序中的上传到 ftp 功能将无法使用。

build.gradle

implementation 'commons-net:commons-net:3.6'

....

minifyEnabled false
shrinkResources false
// proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
debuggable true
signingConfig signingConfigs.release

proguard-rules.pro

-keepclasseswithmembernames class * {
    native <methods>;
}
-keep class com.integratedbiometrics.** { *;}
-keep class org.libusb.** { *;}
-keep class com.futronictech.** { *;}
-keep class com.smufsbio.btsdk.** { *;}
-keep class org.apache.http.** { *; }
-keep class org.apache.commons.codec.** { *; }
-keep class org.apache.commons.logging.** { *; }
-keep class android.net.compatibility.** { *; }
-keep class android.net.http.** { *; }
-dontwarn org.apache.http.**
-dontwarn android.webkit.**

我错过了什么?

我已经开始工作了。我发现它根本不是收缩和混淆,因为在发布和调试版本中将 minifyEnabledshrinkResources 设置为 true 仍然给我一个发布版本的问题,而调试版本效果不错。

buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
    debug {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.debug
    }
}

当时唯一的区别是签名配置,当我设置 signingConfig signingConfigs.release 在调试版本中,问题出现在调试版本中。

显然,我用来签署 apk 的安全证书有问题。创建新证书为我解决了这个问题。这是第一个版本,所以这样做没有问题。