富贵竹三期客户端文档1.0

2018-06-25  本文已影响0人  Laughing_G

富贵竹三期文档介绍:

此文档为富贵竹三期(四期)第一个版本的文档,版本号为2.0,补充了出插件的注意事项,请每次出插件时,要仔细阅览此文档!

总体流程图概况:

富贵竹流程图.png

项目下载的SVN地址

Sanderiana:https://172.18.0.18/repos/android/banner/branches/Sanderiana
ISBanner:https://172.18.0.18/repos/android/banner/branches/ISBanner

富贵竹三期插件对外提供的接口:

public interface IStartBanner {

    void init(Context context, String path, String packName);

    void show(Context context, String data);

    void onDestroyWindow();

    void onStop();

    void setDebug(boolean debug);
}

客户端接口说明:

接口 调用时机及作用 参数说明
init [资源初始化方法,在Activity生命周期开始前调用 1.上下文(ApplicationContext);2.res资源路径;3.res资源文件的包名(给GetResource类初始化)
show 展示布局的方法,通过Window显示 1.上下文对象;2.从服务端请求的json数据
onDestroyWindow 销毁Window时的调用 无参数
onStop 解注册广播 无参数
setDebug 设置调试模式,决定是否显示Log boolean类型的参数

服务端Json数据格式说明:

{
  "cnf": {
    "dgfly": {
      "adtype": "bb",
      "name": "",
      "show_type": "bb_inMode_jgz",
      "icon_img": "http:\/\/tang123.oss-cn-shanghai.aliyuncs.com\/cayt\/aaec0be0.jpg",
      "ad_img": [
        "http:\/\/tang123.oss-cn-shanghai.aliyuncs.com\/bb\/aaec0be0\/image-0.jpg"
      ],
      "desc": "",
      "w": 2076,
      "h": 1466,
      "s_dur": 5000,
      "down_url": "http:\/\/baidu.com",
      "dplnk": "",
      "rtp": false,
      "rtp1": false,
      "ia": 0,
      "s_rpt": ["http:\/\/139.196.171.67:5678\/dgfly_rpt.php?act=s&adid=591029c6&cp=AA067&did=869552024567992&aid=4b09c31a51b68e0f"],
      "c_rpt": [
        "http:\/\/139.196.171.67:5678\/dgfly_rpt.php?reqid=1526452646.144426.51d29&act=c&dl_si=0&adci=0&is_wifi=1&ad=AdvTable&u_ad_type=1&adid=aaec0be0&cp=AA067&did=864664036476149&aid=1d2352423ddb4a20"
      ],
      "d_rpt": [],
      "dc_rpt": [],
      "i_rpt": [],
      "a_rpt": [
        "http:\/\/139.196.171.67:5678\/dgfly_rpt.php?reqid=1526452646.144426.51d29&act=a&dl_si=0&adci=0&is_wifi=1&ad=AdvTable&adid=aaec0be0&cp=AA067&did=864664036476149&aid=1d2352423ddb4a20"
      ],
      "o_rpt": [
        "http:\/\/139.196.171.67:5678\/dgfly_rpt.php?act=o&dl_si=0&adci=0&is_wifi=1&ad=AdvTable&adid=aaec0be0&cp=AA067&did=864664036476149&aid=1d2352423ddb4a20"
      ],
      "ad_pack": "banner",
      "ad_ver": "",
      "vsb": true,
      "dlsign": true,
      "logo": true,
      "is_act": "1",
      "ci": "1",
      "in_broser": false,
      "cl": 1,
      "bb_area": true,
      "aicnf": []
    }
  }
}

核心的字段是show_type,根据这个showType来确定需要显示的布局类型,代码如下:

 void buildView(String type) {
        switch (type) {
            case VIDEO_AD:
                mBannerView = new RichRollVideoView();
                break;
            case RichConstant.VIDEO_VIEW_AD:
                mBannerView = new RichVideoView();
                break;
            case RichConstant.BB_BANNER:
            case RichConstant.BB_BANNER_APP:
            case RichConstant.BB_BANNER_WEB:
                mBannerView = new RichFitView(ROLL);
                break;

最终的调用代码是:FloatWindowManager.getInstance().show(this, object);//this就是上一步所生成的View(比如:RichChaferView),object是根据服务端json转换的类

富贵竹三期插件生成注意事项:

1.插件打进去的第三方包,前提是需要知道母包中是否存在,如果存在则不需要;

2.插件中不能包含有android.support.v4包的任何类,如果有,需要删除或者从源代码中扣出来;

3.res资源文件中不能有Android5.0以上的新控件,比如RecyclerVIew,另外这些新控件需要自定义,同时在代码中动态添加;

4.插件中的类不应该有需要在清单文件中注册的类,比如FileProvider,如果有这样的类,就不能生成插件;

5.混淆的类需要搞清除哪些需要混淆,哪些不需要混淆;

6.富贵竹三期的插件应该包含二期的功能,也就是SDK支持下载类的广告,所以生成三期插件时候,应该把downloader.jar这个包也打进去;

7.富贵竹整个插件是采取版本覆盖的方式,所以出最新的插件时候,一定要自己测试下以前插件所包含的内容,另外要确保插件需要的jar包都打进去了,因此测试用例一定要跑;

8.给晓军的资源文件res必须再他提供的基础上增加或替换,图片资源要压缩以便减少插件体积;

富贵竹三期打包的核心代码:

BuildJar {
    //输出目录
    outputFileDir = "./jar"
    //输出原始jar包名
    outputFileName = "lp-depend.jar"
    //输出混淆jar包名
    outputProguardFileName = "lp-depend-proguard.jar"
    //混淆配置
    proguardConfigFile = "proguard-rules.pro"

    //是否需要默认的混淆配置proguard-android.txt
    needDefaultProguard = true
    applyMappingFile = "originMapping/mapping.txt"
    //不需要输出jar的jar包列表,如['baidu.jar','baidu1.jar'...]
    excludeJar = []
    //需要输出jar的包名列表,当此参数为空时,则默认全项目输出,支持多包,如 includePackage=['com/adison/testjarplugin/include','com/adison/testjarplugin/include1'...]
    includePackage = ['com/sanderiana/banner', 'com/aigestudio', 'cn/aigestudio', 'com/tencent', 'com/stkj/launchminilib','de/hdodenhof','com/nostra13']
    //不需要输出jar的类名列表,如['baidu.calss','baidu1.class'...]
//    excludeClass=['android/support/v4/util/ArrayMap.class']
    //不需要输出jar的包名列表,如 excludePackage=['com/adison/testjarplugin/exclude','com/adison/testjarplugin/exclude1'...]
//    excludePackage=['android','com/stkj/test','cn/aigestudio','com/aigestudio']
}

dependencies {
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.0'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.0'
        implementation project(':UI')
    //    implementation files('libs/lp-depend-proguard.jar')
//    implementation files('libs/banner1.jar')
}

富贵竹三期插件混淆的核心代码:

-keep class com.sanderiana.banner.handlers.bean.** { *;}
-keep class com.sanderiana.banner.handlers.bean.**.$*{ *;}
-keep class com.sanderiana.banner.startmanager.StartBanner{ public *; }
-keep class com.sanderiana.banner.startmanager.IStartBanner{ *; }
#-keep class com.sanderiana.banner.startmanager.*{ *; }
-keep class com.sanderiana.banner.brazen.Brazen{ *; }
-keep class com.sanderiana.banner.brazen.*{ *; }

-keep class com.sanderiana.banner.view.** { *; }
-keep class com.sanderiana.banner.api.** { *; }
-keep class com.sanderiana.banner.myswiperl.** { *; }
-keep class com.sanderiana.banner.progressbar.MyProgressBar { *; }
-keep class com.sanderiana.banner.localbcmanager.MyLocalBroadcastManager { *; }
-keep class com.sanderiana.banner.view.adapters.ChaferImageView{ *; }
-keep class com.sanderiana.banner.view.adapters.ChaferLargeImageView{ *; }
-keep class com.sanderiana.banner.view.movieadapter.** { *; }
#微信sdk
-keep class com.tencent.mm.opensdk.** {*;}

-keep class com.tencent.wxop.** {*;}

-keep class com.tencent.mm.sdk.** {*;}

#-keep class com.mediatek.*{ *; }
-keep class com.sanderiana.banner.handlers.api.*{*;}
-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}
-keep public class com.sanderiana.banner.R$*{
public static final int *;
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

-repackageclasses 'com.sanderiana.banner'

-keepattributes *Annotation*

#-dontwarn sun.misc.**
#-dontwarn okio.**

-keepattributes Signature
上一篇 下一篇

猜你喜欢

热点阅读