我有一些java代碼,我想與一些同學共享,但我不想與他們分享源代碼。如何分發Android應用程序(以便人們無法看到源代碼)
向某人提供可執行的Java可執行文件的標準方法是什麼?他們可以使用但不能看到源代碼。
不知道這是否相關,但我將給他們的代碼將在Android上運行。
我有一些java代碼,我想與一些同學共享,但我不想與他們分享源代碼。如何分發Android應用程序(以便人們無法看到源代碼)
向某人提供可執行的Java可執行文件的標準方法是什麼?他們可以使用但不能看到源代碼。
不知道這是否相關,但我將給他們的代碼將在Android上運行。
這取決於你的意思是「他們可以使用」。
如果你只是希望他們能夠在他們的手機(或模擬器)上運行你的應用程序,你可以給他們an .apk
file,這是Android應用程序的標準格式。生成.apk
的最簡單方法是使用適用於Eclipse的Android開發工具(ADT)插件。否則,你將不得不使用aapt
command。
如果你想允許他們將你的類添加到他們的應用程序中,你將不得不給他們一個.jar
文件,其中包含你編譯的.class
文件。但是,使用反編譯器可以將.class
文件重新轉換爲.java
文件,因此如果您不希望它們看到代碼,則可能會被卡住。
有一些工具 - 被稱爲混淆器 - 這使得反編譯過程變得更加困難,但是我個人不會在這裏打擾他們,因爲他們也會使調試更加困難。
任何人都不可能將您的.apk
恢復爲源代碼。 Android使用不同的虛擬機來標準Java,因此0123¾文件帶有Dalvik字節碼,而不是帶有JVM字節碼的.class
文件,並且當前沒有將.dex
文件轉回到.java
源文件的工具。
僅將類文件打包到.jar文件中,並且不給它們提供源文件。
編輯: Android有它自己的打包應用程序的方式,我建議使用它。
+1爲了進一步保護(和複雜性),使用代碼混淆器 – OscarRyz 2010-07-20 19:57:00
Android不使用Java運行時。我只使用Java作爲源語言,它使用自定義字節碼格式運行自定義運行時。您可以decompile the .dex byte code,但不能到Java源代碼,至少不是在這篇文章的時間。
請注意,您的同學可能會很聰明,知道如何運行Java反編譯器。 – 2010-07-20 19:58:05
@Greg不會對它們做任何好處,Android不會編譯爲JVM字節碼,它會編譯成特殊的字節碼,只能將其反編譯爲像指令那樣的指令。他們將無法從.dex文件中獲得「Java源代碼」。 – 2010-07-20 20:06:01