美文网首页
Android模块(SDK)开发实践 - 2020-06-08

Android模块(SDK)开发实践 - 2020-06-08

作者: 勇往直前888 | 来源:发表于2020-06-09 12:03 被阅读0次

    三种Module

    1. application module: 普通的app,产物是.apk,可以直接运行;
    2. android library module:一种sdk,产物是.aar,不能独立运行,可以包含资源文件;
    3. java library module:一种SDK,产物是.jar,不能独立运行,不能包含资源文件;

    android studio中application module,library module,java module的区别

    创建Project

    有一种需求是提供SDK,那么选择android library module比较好,也就是对外提供.aar
    首先就要创建一个工程

    企业微信截图_5811989c-8fbb-4a3d-944b-ca6bf56877d4.png

    选择模板,一般默认的就行:

    企业微信截图_ea26f0bf-7f4b-434d-b0ed-dbd4104f3853.png

    基本信息配置,一般默认的就行:

    企业微信截图_6e655d0e-c89b-43ff-95e7-ab1fc8f64f85.png

    工程目录,大致的情况如下:

    image.png

    app是默认的模块,是一个产物为.apkapplication module。就算是我们的目标是开发一个作为SDK.aar给其他人用,这个默认的app也是有用的。.aar不能独立使用,需要这个app作为使用者,进行功能调试和验证。

    AndroidStudio创建项目

    什么也不用做,默认生成的工程是可以运行的。

    企业微信截图_be346ac9-610d-4c4e-8622-98a9d4f991fa.png

    新建一个模块

    • 名字就叫SDK,这个最后是要对外输出的.aar

    • 默认的app模块就当是调用SDK的测试应用.apk

    • 功能很简单,就是拉起支付宝。

    1. 菜单位置File -> New -> New Module...

    2. 类型选择Android Library

    企业微信截图_c8956652-2278-4eb8-9efe-167512395aa4.png

    下一步之后,除了名字改为SDK,其他保持默认就好,创建后,会多出一个和app平级的文件夹

    企业微信截图_43a1f135-950f-48a0-bcd7-b88b04baebe5.png

    建立依赖

    app模块是使用者,测试者,依赖SDK模块。

    菜单的位置在File -> Project Structure..., 图标的位置:

    企业微信截图_d6daa5c8-b8c1-4822-a71a-99d77cd41cac.png

    在弹出的菜单中选择3 Module Dependency

    企业微信截图_8079f911-24ad-4aca-bb85-4bc43084663e.png

    添加后,就可以从gradle的配置文件看出来:

    企业微信截图_6fcc7bf7-f789-487a-87d7-f3264345dfbe.png

    功能开发

    在SDK模块中新建一个类,写一个公共方法,实现拉起支付宝功能

    企业微信截图_04536d3f-d1c6-4a4a-b547-de658fb97a90.png

    使用intent的方式拉起支付宝,可以参考下面的文章:
    安卓通过Intent一键打开支付宝扫一扫
    Android使用Intent打开支付宝或微信

    测试界面开发

    app模块中放一个按钮,点击之后就调用SDK模块中的拉起支付宝方法,进行测试。

    企业微信截图_2ac00b92-1f95-4661-899e-be9e7b1e165c.png

    界面布局,(加限制),可以参考下面的文章

    Android Studio中ConstraintLayout的使用
    Android ConstraintLayout详解

    按钮响应

    响应函数就直接调用SDK模块中的open方法。

    企业微信截图_1b668fcd-4ed6-48e8-819e-aac89ee20df0.png

    调试

    • 使用模拟器调试,点击“拉起支付宝”按钮之后,应用崩溃,自动退出,因为模拟器上没有安装支付宝应用。

    • 使用真机,并且有支付应用,点击“拉起支付宝”按钮之后,可以正确跳转到支付宝首页。

    崩溃解决方法

    如果支付宝应用没有安装,直接拉起,会崩溃,用上try... catch也没用,所以在拉起之前,首先要判断支付宝应用是否安装。

    public class AliPayManager {
        private static final String PACKAGE_NAME_ALIPAY = "com.eg.android.AlipayGphone";
    
        // 支付宝首页
        private static final String url = "alipayqr://platformapi/startapp?";
        // 支付宝扫一扫页面
        //private static final String url = "alipayqr://platformapi/startapp?saId=10000007";
    
        public static void open(Context context) {
            // 检查支付宝是否安装;
            try {
                PackageInfo info = context.getPackageManager().getPackageInfo(PACKAGE_NAME_ALIPAY, 0);
                if(null == info) {
                    Toast.makeText(context, "没有安装支付宝", Toast.LENGTH_LONG);
                    return;
                }
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
                return;
            }
    
            // 如果手机没有支付宝,下面的代码会导致APP崩溃,try... catch也没用
            // 拉起支付宝
            Uri uri = Uri.parse(url);
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            context.startActivity(intent);
        }
    }
    

    打包

    • 修改为release版本
    企业微信截图_dc2815a5-a2d0-4617-9f12-a219ba6c3734.png
    • 打包,菜单为Build -> Make Moudle 'SDK'

    • 打包后的文件:

    企业微信截图_b590767a-9d73-4e10-983d-30aef0e259ee.png

    使用例子

    得到.aar文件之后,该如何使用呢?

    • 新建一个工程project,模拟用户使用,比如叫ModuleSample
    企业微信截图_91878701-7121-4aca-a6e2-2c9166f6290c.png
    • 切换到Project标签模式,(一般情况下常用Android标签模式),导入aar包。一般,都统一放在libs文件夹下,直接copy过来就可以。
    企业微信截图_6505ddb2-ec77-4ffb-abb4-be82ef853d60.png
    • build.gradle配置文件中添加代表本地仓库的配置项
        repositories {
            flatDir {
                dirs 'libs'
            }
        }
    
    企业微信截图_dea5e71b-2a7e-4c3f-a000-06f721d7556d.png
    • 在配置文件中添加依赖
    implementation (name:'SDK-release', ext:'aar')
    
    企业微信截图_b131dba3-fa3e-4ae9-bfc3-f1501dcad8b6.png

    添加完成后,记得需要同步一下gradle文件才能生效

    • 切换回Android标签(编码用这个标签这个比Project标签方便),在需要的地方使用。这里是按钮的响应方法中:
    企业微信截图_a2a1bc58-59e5-4529-b419-621bcd950268.png

    AndroidStudio依赖aar

    Demo地址

    SdkDemo地址

    参考文章

    Android组件化/模块化开发(一)
    Android组件化/模块化开发(二)

    Android多module开发

    相关文章

      网友评论

          本文标题:Android模块(SDK)开发实践 - 2020-06-08

          本文链接:https://www.haomeiwen.com/subject/urquahtx.html