androidres路徑
Ⅰ android中怎麼寫res路徑
android無法獲取res資源文件夾路徑,只能通過系統提供的封裝函數訪問。
資源文件夾有:
/res/drawable ,通過getResources()訪問
/res/values ,通過getResources()訪問
/res/layout,通過getResources()訪問
/res/xml,通過getResources()訪問
/res/raw,通過getResources()訪問
/assets,通過getAssets()訪問
Ⅱ Android反編譯(三)— 手動編譯
PS: 最近沒工作,沒工作就沒需求,沒需求就沒什麼技術總結的靈感,那就沒更新什麼。但是兩個月不更新了,要是三個月不更新就會出大事,所以這次打算做一件有意思又不難的事。
之前有發文章寫過反編譯,今天就來試試反編譯之正編譯,開玩笑的,就是試試手動編譯的過程, 平時我們在項目中編譯出包都是使用Gradle直接執行assemble任務就能解決,我打算試試手動模擬整個過程。當然我也是第一次這樣搞,所以如果有寫得不對的地方,還望指出。
眾所周知,apk實質上就是一個壓縮包。復習一下,我們寫個最簡單的Demo,然後打包,然解壓,注意是解壓,不是反編譯,意義是不同的。
注意我這個Demo很簡單,什麼都不引入
然後我們看看整個出包的過程,隨便從網上拿張圖
然後這里我們用Android SDK給我們提供的工具來完成整個流程,工具在sdk文件夾下的build-tools文件夾下,有什麼aapt.exe、dx.bat,用的就是這些
這步應該是整個流程最簡單的吧,我感覺,所以從最簡單的開始。
我們先看看生成的dex有什麼
對比項目,我是一開始最基本的項目,什麼都沒動,所以只有一個MainActivity.clas,所以這里肯定是要先想辦法得到BuildConfig.class和R.class。
輸入命令:
aapt p -f -m -J <輸出路徑> -S <res路徑> -I <android.jar路徑> -M <Manifest路徑>
下一步,我們需要BuildConfig.class
這個BuildConfig.java是由gradle在我們配置好gradle之後自己幫我們生成的,所以我們直接拿來用,然後再javac就得到class文件了
然後我們再編譯我們的MainActivity.java並將它們放到同一個文件夾下, MainActivity因為引用了Android.jar和R文件,所以編譯時注意點,我為此被動好好的復習了一遍javac,都是淚
最後一步,我們用dx工具就能打出dex文件了
然後執行命令就得到一個Dex文件,看看這個文件裡面和上面直接打出的apk中的Dex文件有什麼不同:
看圖,我們上一步已經生成.dex了,那麼我們需要和compiled Resource 還有 Other Resource 一起生成APK。
我們先來生成compiled Resource,也就是resources.arsc
發現之前使用aapt生成R文件的時候沒寫完整,當時可以加一個-F參數直接生成arsc和Manifest
導出的abc.zip裡面就有resources.arsc和AndroidManifest.xml。
因為之前寫漏了,所以肯定要重新編一次MainActivity.java和Dex
我們把剛才的dex文件和aapt生成的resources.arsc、AndroidManifest.xml和res放到一個文件夾裡面。
PS:res文件夾也是上面aapt的命令生成的
然後我們對比這個文件夾和之前apk解壓的文件夾
最後運行
看來是成功了。
再說說遇到的還有兩個問題,並說下我解決問題的思路
(1)我把它們都放到一個文件夾之後,我壓縮成壓縮包,然後改後綴成.apk,然後發現安裝不了,我就直接反編譯,發現發編譯失敗,提示包有問題,以我多點玩包的經驗,我感覺就是壓縮工具出了問題,然後我去下個「好壓」(這不是廣告啊),然後就能正常反編譯了。
(2)但是還是安裝不了,再根據我多年的玩包經驗,我感覺是簽名問題,然後我隨便給這個包上一個簽名,就能正常安裝得到上圖的結果了。
總體來說,還真挺好玩的,這整個過程,就是翻車了幾次。做完之後感覺非常牛逼,為什麼這樣說,因為我知道這整個過程,我就可以做到,我不經過gradle來打包,我自己寫個python腳本來調用aapt和dx來打包也是能做到的。
當然上面純屬異想天開,因為這是個什麼都沒有的Demo所以覺得簡單,要是一個真實的項目,我感覺肯定要有很多坑,別的先不說,一個項目那麼多依賴關系,我這javac要搞死人。
最後如果有不對的地方,希望有大佬能夠指出,畢竟能運行也不能證明完全沒問題。然後我使用的build-tools是28的,不敢保證其它版本包括以後版本的玩法都一樣。
Ⅲ 在android工程中,res目錄下又有anim、drawable、layout、menu、raw、values和xml文件夾,分別用來保存
res目錄主要是存放資源文件的!
layout 布局 這個就是你經常看到的與用戶交互的界面的 xml 文件,就是各個 view 的排列和嵌套,沒什 么好說的啦 風格和主題、 風格主要是指 view 的顯示風格 ;
anim 一般是設置動畫,畫資源分為兩種,一是實現圖片的 translate、scale、rotate、alpha 四種變化。還可以設置 動畫的播放特性;另一種是幀動畫,逐幀播放設置的資源;
drawable 主要是是存放所使用的圖片的!
menu:菜單 菜單即可以從代碼中實現也可以在資源文件中配置;
把圖像文件放在 res/raw/ 目錄下,這樣可以避免被自動優化。
values 是用程序人員設置的一些常量的XML文件,便於修改和使用,一般有Strings,colors等
assets 文件夾是存放不進行編譯加工的原生文件,即該文件夾裡面的文件不會像 xml, java 文件被預編譯,可以存放一些圖片,html,js, css 等文件。
Ⅳ android的根目錄是哪個路徑
根目錄是獲得root許可權才可以使用功能的目錄,,根目錄沒有路徑的,他是最原始的路徑,,,,打個比方,如果手機內存和內存卡,是電腦上的是c盤和d盤,那麼根目錄就是。我的電腦。。如果想找根目錄的話,你需要下載個特殊的文件管理器,我現在用的是RE管理器(漢化版)
Ⅳ 安卓手機res文件在哪裡
每個軟體開發者對軟體開發使用的名稱不同,不過大同小異,安卓圖標統一的標准都是放到drawable-xxdpi(xx是不同解析度的英文代號)裡面,按照你手機解析度,用壓縮查看器在apk的res裡面drawable-xxdpi文件夾下尋找圖標對應的png圖片就能找到對應的名稱了,所以說文件名不是一定得,但是存放位置是一定的
Ⅵ android下怎麼獲取res資源文件夾的路徑
android無法獲取res資源文件夾路徑,只能通過系統提供的封裝函數訪問。
資源文件夾有:
/res/drawable
,通過getresources()訪問
/res/values
,通過getresources()訪問
/res/layout,通過getresources()訪問
/res/xml,通過getresources()訪問
/res/raw,通過getresources()訪問
/assets,通過getassets()訪問
Ⅶ android工程res目錄下raw文件夾中的文件絕對路徑是什麼
raw是程序包里的文件,安裝到程序以後也沒有絕對路徑,因為這個是在程序內部的
但是你可以通過 InputStream is =getResources().openRawResource(R.id.filename);
來得到這個inputStream