FlutterTaoBaoKe / flutter_alibc

flutter版本的阿里百川插件
MIT License
125 stars 47 forks source link

debug可用,release包初始化失败 #38

Closed hancens1024 closed 3 years ago

hancens1024 commented 4 years ago

demo的debug包可以正常使用,但是release也是初始化失败

YaBlin commented 4 years ago

降低版本到1.10.3以下

karedem commented 4 years ago

楼上正解 降低flutter sdk版本 重新打包

PigXiuYang commented 4 years ago

请问有其他的解决办法吗?我也遇到相同类似的问题了。但是我有些插件必须要版本到1.10.3以上才能运行。无法降级啊。

hancens1024 commented 4 years ago

请问有其他的解决办法吗?我也遇到相同类似的问题了。但是我有些插件必须要版本到1.10.3以上才能运行。无法降级啊。

似乎只能等作者更新了,我只能降级解决

karedem commented 4 years ago

异常是出现在百川sdk内 且混淆过 定位比较困难, 可能是打包机制有变更导致的, 我尝试过排查, 但能力有限, 没有结果..

hancens1024 commented 4 years ago

好吧好吧,作者辛苦,阿里SDK问题是真的多😂

PigXiuYang commented 4 years ago

这就感觉很难过了。。。😂

mimicode commented 4 years ago

正解,其它插件都没有问题,只有阿里的出现这个问题,被迫回退到1.9稳定版,尝试在1.12稳定版中 解决失败

jb522185660 commented 4 years ago

Hello,我也遇到这个问题,请问有解决方案了吗?除了降低flutter版本外

lolo2019qq commented 4 years ago

同遇到此问题,debug 包正常,release 包提示:

2020-06-09 19:39:05.166 16293-16362/? E/AliBC_Trade[4.0.0.8]: d -> [c.b.b.b.b.d.b.d.a:70] AlibcSecurity init 
    ErrorCode = 199
    c.b.e.a.b.b
        at c.b.e.a.a.h.a(Unknown Source:1071)
        at c.b.e.a.a.h.d(Unknown Source:50)
        at c.b.e.a.a.h.a(Unknown Source:3)
        at c.b.e.a.b.i.d.a(Unknown Source:29)
        at c.b.e.a.b.i.c.b(Unknown Source:5)
        at c.b.e.a.b.i.c.a(Unknown Source:0)
        at c.b.b.b.b.d.b.d.a(Unknown Source:15)
        at c.b.b.b.b.d.b.a.b(Unknown Source:54)
        at c.b.b.b.b.b.a(Unknown Source:31)
        at c.b.b.b.a.c.a(Unknown Source:15)
        at c.b.b.a.a.c.c(Unknown Source:3)
        at c.b.b.a.a.c.a(Unknown Source:0)
        at c.b.b.a.a.c$a.run(Unknown Source:4)
        at android.os.Handler.handleCallback(Handler.java:888)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:213)
        at android.os.HandlerThread.run(HandlerThread.java:67)

I/flutter: 初始化百川结果: 1 安全初始化失败

Flutter (Channel stable, v1.17.3, on Mac OS X 10.15.4 19E287, locale zh-Hans-CN)

lolo2019qq commented 4 years ago

已经解决,解决步骤:

一、需要在 android/app/ 目录下新建 proguard-android.txt 文件配置混淆原则,文件内容如下:

-keepattributes Signature
-ignorewarnings
-keep class javax.ws.rs.** { *; }
-keep class com.alibaba.fastjson.** { *; }
-dontwarn com.alibaba.fastjson.**
-keep class sun.misc.Unsafe { *; }
-dontwarn sun.misc.**
-keep class com.taobao.** {*;}
-keep class com.alibaba.** {*;}
-keep class com.alipay.** {*;}
-dontwarn com.taobao.**
-dontwarn com.alibaba.**
-dontwarn com.alipay.**
-keep class com.ut.** {*;}
-dontwarn com.ut.**
-keep class com.ta.** {*;}
-dontwarn com.ta.**
-keep class org.json.** {*;}
-keep class com.ali.auth.**  {*;}
-dontwarn com.ali.auth.**
-keep class com.taobao.securityjni.** {*;}
-keep class com.taobao.wireless.security.** {*;}
-keep class com.taobao.dp.**{*;}
-keep class com.alibaba.wireless.security.**{*;}
-keep interface mtopsdk.mtop.global.init.IMtopInitTask {*;}
-keep class * implements mtopsdk.mtop.global.init.IMtopInitTask {*;}

参考百川文档混淆原则部分:https://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.45acbe488rAGhC&treeId=129&articleId=118400&docType=1

二、需要在 android/app/build.gradle 配置混淆原则:

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
}

觉得有用请点个赞,谢谢!

mimicode commented 4 years ago

已经解决,解决步骤:

一、需要在 android/app/ 目录下新建 proguard-android.txt 文件配置混淆原则,文件内容如下:

-keepattributes Signature
-ignorewarnings
-keep class javax.ws.rs.** { *; }
-keep class com.alibaba.fastjson.** { *; }
-dontwarn com.alibaba.fastjson.**
-keep class sun.misc.Unsafe { *; }
-dontwarn sun.misc.**
-keep class com.taobao.** {*;}
-keep class com.alibaba.** {*;}
-keep class com.alipay.** {*;}
-dontwarn com.taobao.**
-dontwarn com.alibaba.**
-dontwarn com.alipay.**
-keep class com.ut.** {*;}
-dontwarn com.ut.**
-keep class com.ta.** {*;}
-dontwarn com.ta.**
-keep class org.json.** {*;}
-keep class com.ali.auth.**  {*;}
-dontwarn com.ali.auth.**
-keep class com.taobao.securityjni.** {*;}
-keep class com.taobao.wireless.security.** {*;}
-keep class com.taobao.dp.**{*;}
-keep class com.alibaba.wireless.security.**{*;}
-keep interface mtopsdk.mtop.global.init.IMtopInitTask {*;}
-keep class * implements mtopsdk.mtop.global.init.IMtopInitTask {*;}

参考百川文档混淆原则部分:https://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.45acbe488rAGhC&treeId=129&articleId=118400&docType=1

二、需要在 android/app/build.gradle 配置混淆原则:

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
}

觉得有用请点个赞,谢谢!

没用,你这个 加入混淆之后 首先是编译不了的

minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

改成这样可以编译通过,但依然初始化报错 199

你看下是不是少说了 proguard-rules.pro 文件的配置内容?

lolo2019qq commented 4 years ago

proguard-android.txt

混淆规则 proguard-android.txt 文件的内容我贴在上面了,我已经编译通过了,编译不过你贴一下错误。

Tyrone2333 commented 4 years ago

debug 可用,release 包初始化失败,1100 获取配置数据为空

  1. 在 android/build.gradle 添加
    allprojects {
    repositories {
        maven {
            url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
        }
        google()
        jcenter()
    }
  2. android/app/下 添加 proguard-rules.pro 文件,内容参考官方文档混淆原则部分: https://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.45acbe488rAGhC&treeId=129&articleId=118400&docType=1

    -keepattributes Signature
    -ignorewarnings
    -keep class javax.ws.rs.** { *; }
    -keep class com.alibaba.fastjson.** { *; }
    -dontwarn com.alibaba.fastjson.**
    -keep class sun.misc.Unsafe { *; }
    -dontwarn sun.misc.**
    -keep class com.taobao.** {*;}
    -keep class com.alibaba.** {*;}
    -keep class com.alipay.** {*;}
    
    -dontwarn com.taobao.**
    -dontwarn com.alibaba.**
    -dontwarn com.alipay.**
    
    -keep class com.ut.** {*;}
    -dontwarn com.ut.**
    
    -keep class com.ta.** {*;}
    -dontwarn com.ta.**
    -keep class org.json.** {*;}
    -keep class com.ali.auth.**  {*;}
    -dontwarn com.ali.auth.**
    
    -keep class com.taobao.securityjni.** {*;}
    -keep class com.taobao.wireless.security.** {*;}
    -keep class com.taobao.dp.**{*;}
    -keep class com.alibaba.wireless.security.**{*;}
    
    -keep interface mtopsdk.mtop.global.init.IMtopInitTask {*;}
    -keep class * implements mtopsdk.mtop.global.init.IMtopInitTask {*;}
  3. android/app/build.gradle 的 buildTypes 中添加
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
  4. android/app/build.gradle 的 dependencies 中添加 百川组件
    dependencies { 
         ..... 
         //支付宝(可选) 
         implementation 'com.alipay.android.app.cashier:standardcashier-single:15.6.5@aar'
         compileOnly 'com.alipay.mobile.android.securitysdk:apsecuritysdk-all:3.3.0'
         //登陆 
         implementation 'com.ali.auth.sdk:alibabauth_core:2.0.0.6@aar'
         implementation 'com.ali.auth.sdk:alibabauth_ui:2.0.0.6@aar'
         implementation 'com.ali.auth.sdk:alibabauth_ext:2.0.0.6@aar'
         //安全组件 
         implementation 'com.taobao.android:securityguardaar3:5.4.171@aar'
         implementation 'com.taobao.android:securitybodyaar3:5.4.99@aar'
         implementation 'com.taobao.android:avmpaar3:5.4.36@aar'
         implementation 'com.taobao.android:sgmiddletieraar3:5.4.9@aar'
         //Mtop 
         implementation 'com.taobao.android:mtopsdk_allinone_open:3.1.2.5@jar'
         //applink 
         implementation 'com.alibaba.sdk.android:alibc_link_partner:4.1.15@aar'
         //ut 
         implementation 'com.taobao.android:utdid4all:1.5.2'
         implementation 'com.alibaba.mtl:app-monitor-sdk:2.6.4.5_for_bc'
         // 电商基础组件 
         implementation 'com.alibaba.sdk.android:AlibcTradeCommon:4.0.0.8@aar'
         implementation 'com.alibaba.sdk.android:AlibcTradeBiz:4.0.0.8@aar'
         implementation 'com.alibaba.sdk.android:nb_trade:4.0.0.8@aar'
         implementation 'com.alibaba:fastjson:1.2.41'
         ..... 
        }
jcleng commented 4 years ago

@mimicode 可以这样处理,我这边这样处理之后就可以了

flutter build apk --release --no-shrink
mimicode commented 4 years ago

@mimicode 可以这样处理,我这边这样处理之后就可以了

flutter build apk --release --no-shrink

我升到flutter 1.20.2 发现也没问题

jcleng commented 4 years ago

@mimicode 可以这样处理,我这边这样处理之后就可以了

flutter build apk --release --no-shrink

我升到flutter 1.20.2 发现也没问题

升级了1.22.0-12.1.pre190仍然不支持,不混淆就成

karedem commented 3 years ago

防混淆是不错的办法 感谢楼上同学提供的思路 exmple已配置防混淆 release包可以正常初始化 如仍有问题请重新打开此iss

PigXiuYang commented 2 years ago

我也遇到了这个问题。所以去仔细研究了下。发现高版本的Flutter主动的开启了Android R8压缩,将安全图片yw_1222_baichuan.jpg给压缩为0KB的虚拟文件了。 1633920407321 也不知什么原因我使用flutter build apk --release --no-shrink依旧会对资源文件进行压缩。

在我实在没有什么办法,已经打算使用反编译器将安全图片替换时,发现Android官方提供了在R8压缩时保留自定义资源文件方法。

我尝试在项目中新建res/raw/keep.xml,并写入如下代码:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@drawable/yw_1222_baichuan。" />

然后我直接使用flutter build apk,成功将未压缩的安全图片打包进了Apk中。并且能正常使用淘宝SDK的方法。

由于本人并不是专业的Android开发人员,如有不对的地方请指出!我会及时修正!!!

xingstarx commented 1 year ago

参考楼上,如果还不行可以关闭资源优化,在 gradle.properties 添加 android.enableResourceOptimizations=false。再试试