2016-01-12 14 views
5

Próbuję skompilować JNI folder w kodzie źródłowym telegram w github.com/DrKLO/Telegram/ z NdKJak skompilować folderu telegram JNI

Ale kiedy jestem zapisu NDK-zbudować w cmd w folderze NDK jak:

F:\ndk\android-ndk-r10>ndk-build -C F:\Workspace\Android\Telegram-master-1-12-2016\Telegram-master\TMessagesProj\jni

mam jakiś błąd i nie libs folderze utworzonym

kiedy dodać ścieżkę NDK do android studio i dodać JNI folderu ręcznie android studio powiedzieć nie można znaleźć niektóre pliki nagłówkowe

następstwie tego question pobrania Cygwin i używać go, ale znowu ten błąd jak NDK-zbudować

$ndkbuild 

[armeabi] SharedLibrary : libtmessages.15.so

process_begin: CreateProcess(........,

F:/ndk/android-ndk-r10/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi /thumb/libgnustl_static.a -lgcc -no-canonical-prefixes -Wl,--no-undefined -Wl,-z ,noexecstack -Wl,-z,relro -Wl,-z,now -LF:/ndk/android-ndk-r10/platforms/android- 9/arch-arm/usr/lib -ljnigraphics -llog -lz -ldl -lc -lm -o F:/Workspace/Android/ Telegram-master-1-12-2016/Telegram-master/TMessagesProj//obj/local/armeabi/libtm essages.15.so, ...) failed

make (e=87): The parameter is incorrect.

make.exe: *** [F:/Workspace/Android/Telegram-master-1-12-2016/Telegram-master/TMessagesProj//obj/local/armeabi/libtmessages.15.so] Error 87

Jak rozwiązać ten problem?

+2

Za * jakiś * błąd, którego potrzebujesz * trochę * poprawka. – Drop

+0

Często przejście na Cygwin dla kompilacji NDK stwarza więcej problemów niż rozwiązuje. Jakie błędy wystąpiły przy pierwszej próbie (** ndk-build.cmd **)? Użyj 'ndk-build V = 1', aby wyświetlić wszystkie rzeczywiste polecenia podczas ich rozwijania. –

+0

@AlexCohn błąd krytyczny: sys/ucontext.h: Nie ma takiego pliku lub katalogu – maoprogrammer

Odpowiedz

1

Po prostu usuń plik obiektowy. Ten błąd pojawił się najprawdopodobniej po tym, jak poprzednia kompilacja została przerwana, a plik obiektowy nie został wygenerowany w całości. enter image description here

12

Ważna aktualizacja problem: w wersji 3.18, po pobraniu projektu źródłowego telegram, jeśli pójdziesz do folderu JNI znajdziesz i pusty folder o nazwie libtgvoip, aby napełnić je potrzebne pliki: 1- iść do źródła telegramu z githum, folderu goto jni i kliknij folder libtgvoip @ eb813e1 (@ oznacza, że ​​jest to folder referencyjny). 2 - pobierz tę bibliotekę też! 3- skopiować jego zawartość w pustym folderze omówionym wcześniej!

Teraz pozwala na rozpoczęcie: Jest to bardzo łatwe.

1- Dodaj zmienną PATH do katalogu NDK do środowiska.

2- otwarty Android.mk i dodać następujące linie: LOCAL_SHORT_COMMANDS: = prawda

enter image description here

3- otwarty Application.mk i dodać następujące linie: APP_SHORT_COMMANDS: = prawda

enter image description here

4- Otwórz wiersz polecenia jako administrator i przejdź do folderu jni w ten sposób: (ważne: w ostatniej wersji depeszy należy przejść do katalogu nadrzędnego JNI zamiast folderu JNI)

enter image description here

5- tylko wykonywać polecenia NDK-build

enter image description here

Wtedy będzie NDK rozpocząć budowę .so pliki:

enter image description here

czekać unt il to ukończyć zadanie, może niektóre ostrzeżenia wyświetlane, ale nie ważne. wreszcie będziesz miał całą udostępnioną bibliotekę (.więc pliki) w katalogu obj: (ważne: w ostatniej wersji telegramu .so stworzy pliki w folderze lib i wszystko jest gotowe do budowy)

enter image description here

następnie goto każdego z tych folderów i usuń wszystko z wyjątkiem libtmessages.22.so. utworzyć folder libs i skopiuj że trzy katalog do niego:

enter image description here

Budowa i baw się dobrze! (pamiętaj o wypełnieniu zmiennych w klasie org.telegram.messenger.BuildVars za pomocą identyfikatora aplikacji i app_hash.) read more here)

+0

Naprawdę nie potrzebujesz 'LOCAL_SHORT_COMMANDS: = true' w pliku Android.mk, ponieważ' APP_SHORT_COMMANDS: = true' już obejmuje wszystkie moduły. Zobacz [tutaj] (https://developer.android.com/ndk/guides/application_mk.html) – ElegyD

+0

Po prostu zrobiłem to wszystko, ale otrzymałem ten błąd i nie wiem, co zrobić: Błąd: org.xml. sax.SAXParseException; lineNumber: 0; columnNumber: 0; cvc-pattern-valid: Value 'extras; intel - Copy; Hardware_Accelerated_Execution_Manager' nie jest poprawny w stosunku do wzorca "[a-zA-Z0-9 _ \ - ;.] +" dla typu "segmentListType". plz pomóż mi – hamid