yyyyyyyyyyyyyyyyyyyy

博客园 首页 新随笔 联系 订阅 管理
 
标签: sdkandroid定制sdk
 分类:
 

目录(?)[+]

 

编译自己的SDK

特种设备会有一些额外的功能,这样就需要给应用层提供特定的API,从而需要定制自己的SDK。 
编译自己的sdk还是很简单的,因为google帮我们做好基础工作,步骤如下:

$ source build/envsetup.sh 
$launch 'what you want'
$ make update-api
$ make PRODUCT-sdk-sdk -j8
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

如果一切顺利的编译完成,那么恭喜你。如果遇到错误也不要紧,因为这是正常的。下面列出我遇到的主要错误:tools/base没有。 
error1:

sdk/eclipse/scripts/create_all_symlinks.sh: line 285: cd: tools/base: No such file or directory
...
sdk/eclipse/scripts/create_all_symlinks.sh: line 285: cd: tools/base: No such file or directory
...
sdk/eclipse/scripts/create_all_symlinks.sh: line 47: cd: tools/base: No such file or directory
make: *** [out/host/linux-x86/obj/EXECUTABLES/monitor_intermediates/monitor] Error 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

modify create_all_symlinks.sh 
将文件中所有需要tools/base的地方都注释掉。

error2:

sdk/build/tools.atree:124: couldn't locate source file: tools/base/templates/projects
sdk/build/tools.atree:125: couldn't locate source file: tools/base/templates/activities
sdk/build/tools.atree:126: couldn't locate source file: tools/base/templates/gradle
sdk/build/tools.atree:127: couldn't locate source file: tools/base/templates/other
make: *** [out/host/linux-x86/sdk/android-sdk_eng.linc_linux-x86.zip] Error 44
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

modify tools.atree

$ vim sdk/build/tools.atree
  • 1
  • 1
# Templates
#tools/base/templates/projects                  tools/templates/projects
#tools/base/templates/activities                tools/templates/activities
#tools/base/templates/gradle                    tools/templates/gradle
#tools/base/templates/other                     tools/templates/other
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

再次修改后就离成功不远了,下面是成功的log。

Package SDK: out/host/linux-x86/sdk/android-sdk_eng.linc_linux-x86.zip
SDK: warning: including GNU target out/target/product/generic/system/lib/libgccdemangle.so
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

使用SDK

Android-sdk_eng.linc_linux-x86.zip解压到你喜欢的目录,在Android Studio的设置如下: 
File—>Project Structure—>SDK Location,填写你刚刚解压的目录即可。 
试着用自定义的API做测试吧,good luck!

参考: 
http://blog.csdn.net/edsam49/article/details/44996353#reply

 
 
 

SDK 一般以一个或多个 jar 文件加上资源文件的形式对外开放,当然也可以把资源文件打包到 jar 中,这样别人接入你的 SDK 所需要的配置就非常简单了,只需要引入一个 jar 文件就可以了。 (我自己用的是第二种方式,资源文件包括图片、XML文件、动态链接库等)。

多数 SDK 都是需要 UI 的,有两种方式在一个 jar 里面实现 UI。第一种是用 Java 实现所有界面布局,很多 SDK 这样做,但这并不是最好的方法,这样实现起来麻烦,一个简单的界面要写很多的代码,维护肯定也不简单。第二种方法是像平常写 app 一样用 XML 写布局,然后用 aapt 编译这些 XML(不同于代码编译,实际上是把 XML 转换成另外一种 Android 的布局系统更容易解析的一种格式 :They call it compiled XML),在代码中通过反射使用 XmlPullParser,inflate 出 XML 中的布局,这样比 Java 实现要简单得多,代码也更容易维护。

目前应该也可以把 SDK 打包成 aar,那样应该就可以完全跟开发 app 一样了,不需要像上面那么复杂,但我没试过,不太清楚。目前市场上的 SDK 大多都还是 jar 的形式。

剩下的是一些个人实践中的一些总结,不一定对,仅供参考:

1. 暴露的接口尽可能少,最大程度减少 SDK 接入方需要了解的细节。
2. 统一所有接口调用方式,我实现过的一个 SDK 其中的一个接口签名:SDK.exec(Context, Action, Callback),Action 可以有每个不同业务的不同参数。

 

 

 

 

 

 

 

posted on 2017-04-18 03:21  xxxxxxxx1x2xxxxxxx  阅读(168)  评论(0编辑  收藏  举报