Android SDK开发技术分享

最近在工作中负责统一支付平台的SDK开发部分,就此总结下SDK开发的技术点、注意事项、与普通app开发的差别,作为自我总结,也作为公司内部互相学习的分享,希望有Android开发需求或者对Android有兴趣的同学(互相学习称为同学),多多关注,多多回复。

一、SDK开发的概念

Android SDK开发,指为第三方app开发提供功能性封装,提供文档(doc),实例(demo),封装包(jar/aar)等,目前互联网公司提供了许多功能性SDK接入,比如腾讯的QQ登录微信登录、广点通联盟、QQ地图接入,阿里的支付宝支付,百度的百度墙广告等等。


图1 发布包

二、jar包和aar包

SDK开发目标是为了提供开发包给第三方app的开发者,常见情况下,提供jar包或者aar包。jar包可以包括代码、资源文件(包括图片、xml文件、动态链接库等,需要二次打包),jar由于不能直接引用xml页面布局,难以实现界面布局,必须用java实现所有界面,实现起来麻烦,一个简单的界面要写很多的代码,维护起来也比较麻烦,但是通过aapt编译xml页面布局,使其成为另外一种Android的布局系统更容易解析的一种格式(Compiled xml),在代码中通过反射使用XmlPullParser,inflate出xml中的布局,也可以得到页面。aar包可以包括许多资源(代码、资源文件、配置文件等等,既包含class又包含了res资源下的所有内容),使用常用的app开发方式进行开发,自动会把所有的资源文件、配置文件(甚至是app整体配置文件AndroidManifest.xml)全部引入aar包中,不需要开发人员进行其他工作,相对jar,aar的使用方便许多,但是由于许多开发者依然使用的IDE是Eclipse,在aar接入方面不便,jar接入使用依然较多,在google推荐的IDE Android Studio中,aar的打包和接入就十分方便。


图2 jar包的引入


图3 aar包的引入

三、sdk开发的原则

sdk编写的原则,可以总结为几点:

1.内容封闭,只开放少数接口,最大程度减少sdk接入方需要了解的细节。

2.包尽可能小,尽可能压缩图片和动态链接库

3.统一接口调用方式,比如:ComPayPlatform.init(context,key); ComPayPlatform.pay(context,key,listener);

四、aar包开发

AS(Android Studio)中Module以库的形式使用,编译后自动生成aar文件,文件包括了Module库的所有有用内容(AndroidMenifest.xml,res文件夹中的所有资源文件,libs中引用的jar和.so的动态链接库,java代码等)。Module可以依次依赖,Module1引用Module2,Module2引用Module3,但是Module1无法直接使用Module3中的内容,Module也可以进行平行依赖,Module1即引用了Module2,也引用了Module3,在sdk开发中也需要注意,尽快不要使用Module依赖,多Module无法打包为一个aar,也要避免依次依赖造成的可能bug。

sdk开发中res文件夹中,资源和id的前缀问题。sdk开发中,res文件夹中的所有资源(图片名,xml视图名,values文件夹下的定义属性名等)建议都加上前缀(比如我加上公司的前缀 bs_***.png),是因为作为aar包被其他app引用后,资源名使用时可能与原程序冲突,原程序名为back.png的图片与sdk中back.png的图片冲突造成bug.


图4 前缀

sdk结果的出口,一般使用一个接口,在接口的回调函数返回结果。

/**

*@author张新锦

*/

public interfaceOnPayResultListener {

public voidOnSuccess(String platFormNo);

public voidOnFail();

}

ComPayPlatform.pay(MainActivity.this,"001",fixPlatFormNo,"1000001","00101","222222",

"测试111", 0.01,getCurrentTimeFormatyyyyMMdd(),getCurrentTimeFormathhmmss(),"remark1","",

newOnPayResultListener() {

@Override

public voidOnSuccess(String platFormNo) {

textView.append("支付成功 , 返回数据: platformNo :"+platFormNo+"\n");

}

@Override

public voidOnFail() {

textView.append("支付失败\n");

}

});

五、发布前的工作

5.1     sdk的代码混淆

sdk代码混淆与app不同的地方,除了普通app的混淆机制外,sdk特别注意开放接口和内部引用包的不混淆。

5.2     sdk包内容的发布

编写sdk代码、并且测试通过后,sdk开发的工作才进行一半,另外一半的工作在写出demo程序和接入文档。sdk的最终目的是为了其他开发者接入,不止在编码是注意接入的代码要简洁、明了,更要在接入文档中详细写出方法、参数的意义,最好直接在文档中给出事例。文档最好也写清楚开发环境要求,jdk要求和引用aar文件的详解。demo程序也十分重要,demo程序简洁,注释详细,使用sdk接口的代码进行详细注释,让接入sdk的开发人员明白每段代码的含义。



  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Android API SDK 技能大赛是一个针对开发人员的比赛,旨在测试他们对 Android API SDK 的熟练程度和应用能力。 在这个比赛中,参赛选手需要展示他们如何利用 Android API SDK开发高质量的 Android 应用程序。他们将面临一系列的任务和挑战,要求应用到特定的 API SDK,例如推送通知、地理定位、网络连接、数据存储等。参赛选手可以根据自己的技能和创意,自由选择合适的 API SDK 来完成任务。 比赛评分将根据参赛选手的应用程序的功能、用户界面设计、性能和稳定性等方面进行评估。更重要的是,参赛选手需要展示他们对 Android API SDK 的深入理解,以及能够通过合适的 API SDK 实现优化和创新功能的能力。 通过参与 Android API SDK 技能大赛,开发人员可以提升自己的技术水平,学习并实践最新的开发技术和最佳实践。此外,比赛还提供了一个交流和合作的平台,开发人员可以互相学习和分享经验,拓宽自己的视野。 Android API SDK 技能大赛不仅仅是一个比赛,更是一个促进开发者们继续深入研究和使用 Android API SDK 的机会。通过参与这样的比赛,开发人员可以提高自己的技能水平,为他们的职业发展提供更多机会。 ### 回答2: Android API SDK 技能大赛是一项旨在展示和竞争开发者在Android平台上的技能和创造力的比赛。参赛者将使用Android API SDK(软件开发工具包)来开发创新的应用程序和解决方案。 Android API SDK是一套由谷歌开发的软件工具,用于帮助开发者在Android平台上构建应用程序。它提供了丰富的API(应用程序编程接口),使开发者能够访问设备功能、处理用户输入、存储和检索数据等。 在这个技能比赛中,参赛者将利用Android API SDK的功能和特性来创建有创意、实用、高效和易用的应用程序。他们可以选择不同的主题和领域,如社交媒体、电子商务、教育、健康等,并使用Android API SDK的各种功能来实现他们的创意。 参赛者需要熟悉Android开发环境和Android API SDK的使用。他们应该了解如何使用API调用来实现各种功能,如地理定位、摄像机操作、数据存储等。他们还可以使用Android API SDK提供的图形界面工具来设计和创建应用程序的用户界面。 比赛评委将根据参赛者的创造力、技术实现、用户体验和应用程序的实用性来评估和评判参赛作品。参赛者需要通过提交他们的应用程序,并在评审过程中展示和演示他们的成果。 通过参与这样的比赛,开发者可以展示他们的技术能力和创造力,与其他开发者交流和学习,并有机会获取各种奖品和认可。同时,这样的比赛也有助于推动Android应用程序的创新和发展,推动整个Android开发社区的成熟和进步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值