當前位置:首頁 » 安卓系統 » android修改jar

android修改jar

發布時間: 2023-02-27 02:55:23

① 如何製作Jar包並在android中調用jar包

jar包有兩種,一種是純粹的庫功能,沒有main入口函數,故無法直接執行;一種是包含main的可執行包!
如有hello/hello.java文件:
$ cd hello/$ javac hello.java$ java Hello (Hello為類名,如果Hello類具有main函數的話,可以這么執行)
第一種jar包命令:

jar cvf hello.jar hello
或者

$ jar cvf hello.jar hello/*.class
通過如下命令查看兩個jar的內容:

$ jar tf hello.jarMETA-INF/META-INF/MANIFEST.MFhello/hello/hello.class
顯示結果是一樣的。

對於第二種可執行jar包,方法其實可以跟第一種一樣,然後再修改MANIFEST.MF文件。
在MANIFEST.MF文件中只需要添加一行:

Main-Class: 可執行主類全名(即包含main函數的類名稱)
即可。

但也可以預先創建MANIFEST.MF文件,內容跟上面一樣,讓該文件與hello目錄保持在同一級,然後:

$ jar cvfm hello.jar MANIFEST.MF hello
然後就可以通過:

$ java -jar hello.jar
運行了。

===================

在實際項目中,可能需要很多個類文件,建議每個類文件均放到一個獨立的文件之中,文件名與該類名應一致,類的聲明為「public class xxx」(當然也可以將很多個類放到同一個文件中,但只有一個類能聲明成public(即與文件名一致的那個類),這將導致其它未聲明為public的類 無法為其它程序調用)。

比如有兩個位於同一目錄的類文件(它們之間有調用關系),將會被打包成sp_sdk.jar作為庫文件使用,文件目錄關系如下:

$ ls -l sp/android/printer-rw-r--r-- 1 zwang zwang 944 2011-06-25 17:52 FontProperty.class-rw-r--r-- 1 zwang zwang 1319 2011-06-25 17:51 FontProperty.java-rw-r--r-- 1 zwang zwang 5498 2011-06-25 17:53 PrintGraphics.class-rw-r--r-- 1 zwang zwang 5751 2011-06-25 17:51 PrintGraphics.java
各個java文件的開頭需要聲明如下(否則其它文件無法import這兩個類):

package sp.android.printer;
然後編譯命令是:

$ javac sp/android/printer/FontProperty.java $ javac sp/android/printer/PrintGraphics.java
注意編譯的位置,因為各自已經聲明了「package sp.android.printer;」,所以直接進入到sp/android/printer/目錄下是編譯不過的。

然後生成jar文件:

$ tar cvf sp_sdk.jar sp
然後就可以創建測試程序調用該庫了(測試程序裡面就可以「import sp.android.printer.*」了)。

假如測試程序test.java與sp_sdk.jar同一目錄,編譯及運行命令:

$ javac test.java$ java Test
如果不在同一目錄,編譯及運行命令:

$ javac -classpath .:/path/to/sp_sdk.jar test.java$ java -cp .:/path/to/sp_sdk.jar Test
最後總結一下,android平台為我們開發提供了極大的便利這里給大家展示的只是冰山一角,我們可以盡情的發揮想像,創造我們自己的功能

② android 怎麼修改jar包裡面的文件

一、下載jd-gui.exe反編譯工具。

二、用jd-gui.exe打開你的第三方jar包,這邊以新浪微博sdk(weibo_sdk.jar)為例說明,打開weibo_sdk.jar

三、修改WeiboDialog文件中的內容,如上圖一樣選中WeiboDialog,然後點擊file--》save source--》保存到桌面產生WeiboDialog.java文件

四、用記事本或source Insight 打開進行修改,修改完後保存。

五、新建一個工程,並且新建一個與WeiboDialog文件所在package一致的package,然後把WeiboDialog.java文件拷貝到新建的package中

六、若 WeiboDialog.java 拷貝進去有錯誤,則先修復錯誤,然後clean一下工程(工具欄 project --》clean)

七、找到工程所在目錄中的bin\classes\....,會生成你修改後的文件的.class文件,復制到你的第三方jar所在目錄。

八、用WinRAR打開你的第三方jar,替換jar中相同的該文件,ok完成!

③ Android Studio 3.5導入AOSP編譯的classes.jar

一、適用場景

    我們在寫應用時可能會需要調用系統隱藏的API,這些API是我們無法直接訪問的,報如下錯誤:

 此時,我們需要將系統AOSP的out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar導入到Android Studio中,使app能夠訪問這些介面。

二、實現步驟

Step1 . 在app目錄下建立libs文件夾,並將classes.jar包放入該路徑

Step2 .在app目錄上右鍵【Open Mole Settings】,點擊左側【Dependencies】,選擇app,點擊【+】選擇【2 Jar Dependency】,添加

選擇我們的libs/classes.jar,點擊【OK】

Step3 .在Mole的build.gradle中,dependencies自動增加依賴配置,注釋掉下面一行

implementation fileTree(dir: 'libs', include: ['*.jar'])  

並將implementation files('libs/classes.jar')改為

compileOnly files('libs/classes.jar')

最終如下圖所示

Step4 .修改Project的build.gradle,在allProjects中增加如下語句

    gradle.projectsEvaluated {

        tasks.withType(JavaCompile) {

            options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\classes.jar')

        }

    }

Step5 .修改jar包優先順序,在Moels的app.iml文件中找到我們的classes.jar包所在行,

<orderEntry type="library" name="Gradle: __local_aars__:/Users/mrwong/AndroidStudioProjects/uart_daemon/app/libs/classes.jar:unspecified@jar" level="project" />

將其移動到

<orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />

這一行之上,最終如下圖所示:

至此,app可以優先訪問我們自己的jar包 。

熱點內容
用什麼寫c語言 發布:2025-05-15 21:35:56 瀏覽:417
linux讀取u盤 發布:2025-05-15 21:32:13 瀏覽:507
c語言dos 發布:2025-05-15 21:18:17 瀏覽:663
sci編譯英文 發布:2025-05-15 21:16:57 瀏覽:382
大貓如何設置密碼 發布:2025-05-15 21:15:32 瀏覽:764
什麼叫蘋果版的和安卓版的手機 發布:2025-05-15 21:05:18 瀏覽:253
編程找點 發布:2025-05-15 20:43:10 瀏覽:587
php上傳臨時文件夾 發布:2025-05-15 20:43:00 瀏覽:657
impala資料庫 發布:2025-05-15 20:42:12 瀏覽:649
android安裝插件 發布:2025-05-15 20:41:31 瀏覽:241