jar+res 依赖引入


jar+res是 Eclipse 等早期 IDE 和老版游戏引擎采用的依赖结构,基于此结构的接入方式称为jar+res方式。
随着 Android Studio 的普及和游戏引擎的更新,已出现更便捷安全的接入方式——aar。

aar 取代 jar+res

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

但两种接入方式主要是引入SDK的方式不同,之后的接口调用方式是一致的

依赖引入

下载 最新的jar+res ,假设jar+resoperate目录发布,解压后的结构类似于

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

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

拷贝 SDK

构建依赖,需要整体拷贝operate目录
需要注意的是,assets下的文件若放在 eclipse 依赖模块中,不会打到 apk 中;可以拷贝到主模块的对应目录

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

不管哪种方式,都要确保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" 
        不应该使用 android:launchMode="singleTask" 启动模式,可以考虑 singleTop
    -->

    <!--
        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>

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中