Android集成凤飞sdk(2.6.3) - ff-vipad/FF-Android GitHub Wiki

-下载SDK


1、进入凤飞官网登录凤飞开发者账号。

2、下载最新SDK。

-集成SDK


1、sdk文件目录

/Demo
/Doc
/libs

2、复制/libs下内容到工程/libs下,其中包括穿山甲(字节跳动)、百青藤(百度)、优量汇(腾讯广点通)、MobVista、SigMob、凤飞sdk,如果已经集成其中的某些广告平台,需要去掉重复sdk,请保留一个尽量新的版本。配置build.gradle如下。

dependencies {
    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.6'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
}

3、配置AndroidManifest.xml如下

<!--权限-->
<uses-permission android:name="android.permission.INTERNET" /> <!--允许访问网络-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!--允许访问网络的状态-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!--允许程序访问Wi-Fi网络状态信息 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /><!--允许访问手机的各种状态-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!--获取粗略的位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!--访问精确位置-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--允许程序访问外部存储设备-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /><!--需要动态申请以上权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />


<!--百度-->
<provider
    android:name="com.baidu.mobads.openad.FileProvider"
    android:authorities="${packageName}.bd.provider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/bd_file_paths" />
</provider>
<activity
	android:name="com.baidu.mobads.AppActivity"
	android:configChanges="keyboard|keyboardHidden|orientation"
	android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--广点通-->
<provider
	android:name="android.support.v4.content.FileProvider"
	android:authorities="${applicationId}.fileprovider"
	android:exported="false"
	android:grantUriPermissions="true">
<meta-data
    android:name="android.support.FILE_PROVIDER_PATHS"
    android:resource="@xml/gdt_file_path" />
</provider>

<!--穿山甲-->
<provider
    android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
    android:authorities="${applicationId}.TTMultiProvider"
    android:exported="false" />
<provider
android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
android:authorities="${applicationId}.TTFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
    android:name="android.support.FILE_PROVIDER_PATHS"
    android:resource="@xml/bu_file_paths" />
</provider>

<!--sigmob-->
<provider
android:name="com.sigmob.sdk.SigmobFileProvider"
android:authorities="${applicationId}.sigprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
    android:name="android.support.FILE_PROVIDER_PATHS"
    android:resource="@xml/sigmob_provider_paths"/>
</provider>

<activity android:name="com.sigmob.sdk.base.common.AdActivity"
android:theme="@android:style/Theme.DeviceDefault"
android:configChanges="keyboardHidden|orientation|screenSize" />

<!-- MobVista -->
<activity
android:name="com.mintegral.msdk.reward.player.MTGRewardVideoActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity
android:name="com.mintegral.msdk.activity.MTGCommonActivity"
android:configChanges="keyboard|orientation"
android:screenOrientation="portrait"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
    <!--国内流量版本必需,海外版本可以不添加-->
<receiver android:name="com.mintegral.msdk.click.AppReceiver" >
<intent-filter>
    <action android:name="android.intent.action.PACKAGE_ADDED" />
    <data android:scheme="package" />
</intent-filter>
</receiver>
    <!--国内流量必需,海外版本可以不添加-->
<service android:name="com.mintegral.msdk.shell.MTGService" >
<intent-filter>
    <action android:name="com.mintegral.msdk.download.action" />
</intent-filter>
</service>
<provider
android:name="com.mintegral.msdk.base.utils.MTGFileProvider"
android:authorities="${applicationId}.mtgFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
    android:name="android.support.FILE_PROVIDER_PATHS"
    android:resource="@xml/mtg_provider_paths"/>
</provider>

<!--凤飞配置-->
<provider
android:name="com.fengfei.ffadsdk.Common.Downloader.FFFileProvider"
android:authorities="${applicationId}.FFFileProvider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
    android:name="android.support.FILE_PROVIDER_PATHS"
    android:resource="@xml/ff_file_paths" />
</provider>

4、在Demo/app/src/main/res找到xml下文件复制到工程,如下

xml/bd_file_paths.xml
xml/bu_file_paths.xml
xml/ff_file_paths.xml
xml/gdt_file_path.xml
xml/mtg_provider_paths.xml
xml/sigmob_provider_paths.xml

5、在AndroidManifest里声明的Application子类中进行初始化

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FFAdInitConfig.init(this, BuildConfig.appId,"test channel");
        FFAdInitConfig.setIsTest(true); // 默认false: 如若测试测试环境,可传true
    }
}

6、混淆配置

#凤飞
-keep public class * extends android.support.v4.**
-keep interface android.support.v4.** { *; }
-keep class android.support.v4.** { *; }
-keep class com.fengfei.ffadsdk.AdViews.** { *; }
-keep class com.fengfei.ffadsdk.Common.Constants.** { *; }
-keep class com.fengfei.ffadsdk.Common.Util.** { *; }
-keep class com.fengfei.ffadsdk.Common.Downloader.** { *; }
-keep class com.fengfei.ffadsdk.FFAdInitConfig { *; }
-keepclassmembers class com.fengfei.ffadsdk.FFAdInitConfig {
    public <fields>;
    public <methods>;
}

#mobvista
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.mintegral.** {*; }
-keep interface com.mintegral.** {*; }
-dontwarn com.mintegral.**
-keep class **.R$* { public static final int mintegral*; }
-keep class com.alphab.** {*; }
-keep interface com.alphab.** {*; }

# WindAdsigmob
-keep class sun.misc.Unsafe { *; }
-dontwarn com.sigmob.**
-keep class com.sigmob.**.**{*;}
# miitmdid
-keep class com.bun.miitmdid.core.** {*;}
-dontwarn com.bun.miitmdid.core.**
#穿山甲
-keep class com.bytedance.sdk.openadsdk.** { *; }
-keep public interface com.bytedance.sdk.openadsdk.downloadnew.** {*;}
-keep class com.pgl.sys.ces.* {*;}
#百度
-keepclassmembers class * extends android.app.Activity {
 public void *(android.view.View);
}
-keepclassmembers enum * {
 public static **[] values();
 public static ** valueOf(java.lang.String);
}
-keep class com.baidu.mobads.** { *; }
-keep class com.baidu.mobad.** { *; }

#广点通(当前版本广点通aar已经集成了混淆配置)
⚠️ **GitHub.com Fallback** ⚠️