Android LatinIME build - программирование
Подтвердить что ты не робот

Android LatinIME build

Я хочу внести некоторые изменения в LatinIME. Я получил код из репозитория git -

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

Но я не знаю, как построить файл apk из кода. Если кто-то создал код LatinIME из кода, можете ли вы поделиться инструкциями.

В частности, я хочу знать, как создавать инструменты словаря (я думаю, мне понадобится ndk), как создать собственный код (опять же, я думаю, это потребует ndk) и, наконец, как создать код Java, используя lib файл из собственного кода.

Я попытался создать проект приложения Android в eclipse (используя существующий код), предоставив корневой каталог как 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
4b9b3361

Ответ 1

Я думаю, что я, возможно, решил это...

Вы столкнулись с аналогичной проблемой в другом проекте, где ресурсы были излишне сжаты из-за расширения их файлов. Я переименовал словари (.dict) в .jet - расширение, исключенное из сжатия. Voila, словари теперь работают. Не уверен, насколько хороша резолюция, которая видна как словари, теперь несжатые, но это шаг в правильном направлении, по крайней мере?

Ответ 2

До сих пор я неоднократно настраивал LatinIME для разных проектов. Я никогда не сталкивался с этой проблемой. Но я никогда не использовал eclipse для создания apks. Я загрузил весь код AOSP на свою машину и скомпилировал измененный источник с помощью AOSP. И mm создает файл apk в папке out и может быть установлен с помощью adb install -r latinime.apk

Вот как загрузить AOSP: http://source.android.com/source/downloading.html И вот как его скомпилировать изначально: http://source.android.com/source/initializing.html и http://xda-university.com/as-a-developer/getting-started-building-android-from-source

И LatinIME можно найти в <android roo>/packages/inputmethods/LatinIME, измените код ther и cd на один и тот же путь и запустите mm (вам нужно выполнить source build/envisetup.sh и lunch full-eng в том же терминале перед тем, как сделать mm)

Ответ 3

Сначала немного фона. Как также предлагает другой ответ, проблема связана с сжатыми файлами .dict. Например, вы можете увидеть, как официальные сборки Android решают эту проблему в проектных тестах для LatinIME

# Do not compress dictionary files to mmap dict data runtime
LOCAL_AAPT_FLAGS += -0 .dict

Быстрый поиск в Интернете показывает, что на сегодняшний день такая директива или инструктаж для aapt от Eclipse не является тривиальным. Вероятно, вы в конечном итоге создали бы build.xml, если вы хотите обработать случай don't-compress-dicts правильно.

Одним из приятных предложений является ответ/вопрос о том, как проинструктировать aapt не сжимать определенные файлы.

Если вы хотите создать это из официальной ссылки git, которую вы предоставляете, в итоге вы создадите весь репозиторий Android, что вы можете, выполнив building - инструкции по эксплуатации.

Ответ 4

Если вы используете gradle, добавьте это

android {
 aaptOptions {
        noCompress 'dict'
    }