介绍
近期开始做输入法的项目,所以必须要解决一些工程问题,在此记录下
第一篇先介绍编译篇,后续会增加java代码和native的代码分析篇
开始动手
首先,从谷歌的AOSP(Android Open Source Project)仓库git clone到本地
git clone https://android.googlesource.com/platform/packages/inputmethods/LatinIME
代码clone到本地后,代码的目录如下:
![](https://img.haomeiwen.com/i3160908/2e1b4249392992be.png)
可以看到,目录下没有Eclipse的工程文件也没有Android Studio的工程文件,而是随Android源码编译的,有安卓源码的同学直接make -j4就能拿到编译的LatinIME的apk,相关的so可以在out/target/product/generic/system/lib取到,对安卓源码方式编译感兴趣的可以参考这里:
http://source.android.com/source/building.html
后续步骤不再赘述,下面主要描述没有安卓源码的编译方式
接下来,在Android Studio中新建一个工程,把LatinIME/java目录拷贝到src目录下,会有很多编译错误,java目录有如下代码:
![](https://img.haomeiwen.com/i3160908/94a87923a07d5c8f.png)
通过报错可以看出,缺失了com.android.inputmethod.latin.common和com.android.inputmethodcommon这两个包的代码,以及一些零散类的实现
在AS中新建一个Module common,将LatinIME/common目录的文件拷贝到此模块,作为android library编译,编译还是报错,继续补全文件SettingsFragment的基类是InputMethodSettingsFragment,而这个类在源码中找不到,需要谷歌的源码中搜索,以下是缺失的文件地址:
https://android.googlesource.com/platform/frameworks/opt/inputmethodcommon/+/master/java/com/android/inputmethodcommon
最后,项目中用到了注解,javax.annotation等包找不到,需要补上jsr305,下载地址如下:
http://mvnrepository.com/artifact/com.google.code.findbugs/jsr305/3.0.1
到此为止,Java部分的编译就OK了,当然跑起来后loadLibrary会Crash,因为我们没有放入对应的so文件,native部分迁移到Android Studio会在下一篇中补上
网友评论