jar+res 依赖引入

jar+res是 Eclipse 等早期 IDE 和老版本游戏引擎采用的依赖结构,基于此结构的接入方式可以成为jar+res接入方式。随着 Android Studio的兴起和游戏引擎的更新,已经出现了新的接入方式——aar。

jar+res 对比 aar

基于但不限于以下原因,SDK 以 aar 接入方式取代jar+res

但两种接入方式主要是引入SDK的方式不同,其他方面几乎没有差别

依赖引入

下载 最新的jar+res ,解压后得到以下结构

├── AndroidManifest.xml
├── assets
├── libs
├── proguard-rules.pro
└── res

假设jar+resoperate目录发布,开发者可能有两种方式使用它,一是构建项目依赖(如 eclipse 依赖),二是手动整合到游戏项目

拷贝 SDK

构建依赖,需要整体拷贝operate目录
手动整合,要完整拷贝以下目录到游戏工程对应目录(建议用脚本完成):

不管哪种方式,都要确保operate/AndroidManifest.xml中的所有内容,最终打包到游戏的AndroidManifest.xml

调整OpeFileProvider

特别说明,必须将AndroidManifest.xml中的android:authorities="${applicationId}.operate.FileProvider"中的占位符替换成游戏包名。 例如包名cn.m4399.operate.demo,替换后将变成android:authorities="cn.m4399.operate.demo.operate.FileProvider

<application>
    <!-- 注意游戏 Activity 也应该配置 android:configChanges="orientation|screenSize|keyboardHidden" -->

    <!--
        4399 运营SDK:以下是FileProvider配置,以兼容7.0+文件访问权限变更

        注意其中的: android:authorities="游戏包名.operate.FileProvider"
        以及,android:resource="@xml/m4399_ope_file_paths" 是固定格式写法
     -->
    <provider
        android:name="cn.m4399.operate.OpeFileProvider"
        android:authorities="{applicationId}.operate.FileProvider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/m4399_ope_file_paths" />
    </provider>
</application>

混淆配置

如果游戏需要进行代码混淆,要保留 SDK 类、资源及其依赖,即在 proguard 文件里追加以下配置

#noinspection ShrinkerUnresolvedReference

-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep public class * extends android.support.v4.**

-dontwarn cn.m4399.operate.**
-keep class cn.m4399.operate.** {*;}
-keepclassmembers class cn.m4399.operate.R$* {*;}
-keep class com.m4399.gamecenter.** {*;}

-dontwarn android.net.**
-keep class android.net.SSLCertificateSocketFactory{*;}
-keep class com.ishumei.** { *; }

-keep class cn.com.chinatelecom.account.** {*;}
-dontwarn com.unicom.xiaowo.account.shield.**
-keep class com.unicom.xiaowo.account.shield.**{*;}

引入 SDK 后就可以进入后续的接口调用流程。

aar 与 jar+res接入方式差别总结

aarjar+res 接入方式(特别是手动整合的方式)对比

接入点 含义 aar jar+res
uses-permission 应用权限 - 手动添加
queries 应用包可见性 - 手动添加
android:networkSecurityConfig Android 9+ http请求 - 手动添加
OpeFileProvider 文件访问权限配置 - 必须
org.apache.http.legacy apache 旧网络库 - 手动添加
所有的activity SDK 及其依赖的页面 可覆盖 手动添加
混淆配置 SDK 及其依赖的依赖类 - 手动添加
第三方依赖 volley与support依赖 在线依赖 手动拷贝

其中aar大都是“-”,表示引入aar后不需要额外处理,因为它们内置在aar中