Android LatinIME构建

时间:2013-10-15 05:23:35

标签: android android-ndk

我想对LatinIME做一些更改。我从git repository获得了代码 -

git clone https://android.googlesource.com/platform/packages/inputmethods/LatinIME

但我不知道如何从代码构建apk文件。如果有人从代码中构建了LatinIME,请你分享说明。

具体来说我想知道如何构建字典工具(我想我需要ndk),如何构建本机代码(再次我猜它需要ndk)以及最后如何使用lib构建java代码来自本机代码的文件。

我尝试在eclipse中创建Android应用程序项目(使用现有的代码选项),将root目录作为LatinIME / java我能够编译,但由于它没有libjni_latinime.so,它崩溃了。然后我从模拟器获取.so文件并将其放在libs / armeabi-v7a文件夹中。现在我得到了这个例外:

10-15 12:54:55.289: E/AndroidRuntime(32253): FATAL EXCEPTION: InitializeBinaryDictionary 
10-15 12:54:55.289: E/AndroidRuntime(32253): android.content.res.Resources$NotFoundException: File res/raw/main_en.dict from drawable resource ID #0x7f070003

4 个答案:

答案 0 :(得分:6)

我想我可能已经解决了这个......

在另一个项目中遇到类似的问题,因为文件扩展导致资源被不必要地压缩,我将字典(.dict)重命名为.jet - 从压缩中排除的扩展名。 Voila,词典现在正在运作。不确定作为字典的分辨率有多好现在没有压缩但是它至少朝着正确的方向迈出了一步?

答案 1 :(得分:6)

到目前为止,我已经为不同的项目多次定制了LatinIME。我从未遇到过这个问题。 但我从未使用eclipse来创建apks。我将整个AOSP代码下载到我的机器上,并使用AOSP编译修改后的源代码。 mm在out文件夹中创建apk文件,可以使用adb install -r latinime.apk

进行安装

以下是如何下载AOSP:http://source.android.com/source/downloading.html 以下是如何编译它:http://source.android.com/source/initializing.htmlhttp://xda-university.com/as-a-developer/getting-started-building-android-from-source

可以在<android roo>/packages/inputmethods/LatinIME中找到LatinIME,将代码修改为cd并转到同一路径并运行mm(您需要执行source build/envisetup.shlunch full-eng在做mm)之前的同一终端

答案 2 :(得分:5)

首先是一些背景。正如其他答案所建议的那样,问题似乎与被压缩的.dict文件有关。例如,您可以在project's tests for LatinIME

中查看官方Android版本如何解决此问题
# Do not compress dictionary files to mmap dict data runtime
LOCAL_AAPT_FLAGS += -0 .dict

快速搜索网络显示,到目前为止,这种指令或指示从Eclipse获取并非易事。如果您想正确处理build.xml案例,最终可能会创建don't-compress-dicts

关于如何指示aapt不压缩某些文件,这是一个很好的建议answer/question

如果你想从你提供的官方git链接建立这个,你最终会建立整个Android回购,你可以按照building-running instructions

答案 3 :(得分:3)

如果使用gradle,请添加此

android {
 aaptOptions {
        noCompress 'dict'
    }