2013-06-03 8 views
6

Szukamy sposobu na ochronę naszego kodu i zaciemnianie go nie wystarcza. Czy można skompilować kod Java na Androida do macierzystej biblioteki Androida?kompilacja Java na natywny Android zamiast pisania w C

Inną opcją byłoby napisanie kodu wc i połączenie się z nim przez JNI. Ale kod, który mamy, jest dość rozbudowany i dobrze przetestowany, a przepis na c uruchomi testowanie.

Pozdrawiam, Rob.

PS: Przed uruchomieniem sprzętu x86 użyliśmy Excelsior Jet jako środka ochrony. Chcąc przejść na bardziej opłacalny (tańszy) sprzęt typu Arm/Android, szukamy prostego rozwiązania jako Jet, które niestety tylko kompiluje się do x86.

+0

Przepisaliśmy go w C++. Nie jest to tak skomplikowane, jak długo piszesz testy jednostkowe. –

+0

Ai, masz nas tam :). Mamy testy jednostkowe, ale niewystarczające. Kod został zoptymalizowany podczas projektów pilotażowych i produkcji w ciągu ostatnich 6 lat. Dodanie testów jednostkowych w retrospekcji może być dość trudne, ponieważ obejmuje osoby wyzwalające czujniki w nieprzewidywalnych odstępach czasu. Byłby to dobry powód, aby napisać więcej testów. – bluevoid

+0

Czy naprawdę warto to rozważyć? Jeśli potrzebujesz ochrony, poszukaj ochrony. To kolejny poziom zaciemniania. Zależy od tego, co robisz i jak wyjątkowy jest. Ale myślę, że jeśli wydasz tyle samo czasu na ulepszenie kodu i modelu biznesowego, lepiej będzie zainwestować. Lub rób tylko krytyczne utwory w natywnym, odpocznij w Javie. Wiesz, native jest trudniejsze do debugowania i analizowania. Nawet kod natywny można dekompilować, jest to tylko trudniejsze. Jeśli to jest warte, będzie to zrobione. Jeśli nie, dlaczego miałbyś to zrobić? Jeśli potrzebujesz, zastanów się nad modelem online, w którym twój kod nie opuszcza Twoich rąk. – Pihhan

Odpowiedz

2

Teoretycznie powinieneś móc używać LLVM. Posiada:

W zasadzie, to może zrobić to, czego potrzebujesz. Jednak wyobrażam sobie, że musisz rozprowadzać (w skompilowanej formie) partie biblioteki klasy Java. W sumie brzmi naprawdę ciężko. A ktoś, kto naprawdę chce przeczytać kod, nie będzie miał zbyt dużego problemu z demontażem ARM ...

+0

To brzmi interesująco, jeśli można to zrobić tylko dla części kodu. Zależy od tego, jak dojrzałe są oba etapy. Każdy pomysł, jak nazwać wynikowy kod z nie przekonwertowany java? – bluevoid

+0

Próbowałem tylko czegoś tak szalonego, gdyby kod Java był ściśle algorytmem bez znaczących zewnętrznych zależności. W takim przypadku, tylko jeden dodatkowy plik C z odrobiną prostego JNI powinien pozwolić ci zadzwonić do tego ... być może! –