[問題] 請問在打包jar檔library的res資源問題

看板AndroidDev作者 (咬咬嚼嚼猴子口味)時間8年前 (2016/05/09 14:14), 8年前編輯推噓0(0010)
留言10則, 3人參與, 最新討論串1/1
小弟做了一個簡單的JAR的library 在Eclipes裡利用project引用的方式可以順利啟動activity 但是在給Android Studio引用的時候確會出現找不到R.layout裡的資源 出現類似這樣的錯誤 java.lang.NoClassDefFoundError: com.xxxxxxxx.xxxxx.R$layout 這個xxxxxxxx的部份是我的library的包名,而不是我的應用包名 我已經有把我res裡的資源也包進去了, 是我在打包的時候設定錯誤了嗎? 或是有什麼方法能讓我的應用能去呼叫這個library的activity嗎??? -- 樂於當宅男 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.219.138.142 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1462774480.A.379.html

05/09 14:15, , 1F
jar沒有包資源檔,要用aar
05/09 14:15, 1F

05/09 14:16, , 2F
不然就像Eclipse的用法一樣加個module啊
05/09 14:16, 2F
是這樣的 我有用過其他第三方的jar檔,是直接可以呼叫的jar資料庫, 我們上頭是希望我能做出一個類似功能和使用方法的東西, 只是不知道為什麼我再呼叫這樣的 R.layout 就會叫不出來.... setContentView(R.layout.login_auto); 是不是有需要改寫些什麼??

05/09 14:39, , 3F
jar的資料庫是? jar只能放class和java resource
05/09 14:39, 3F

05/09 14:39, , 4F
不能放android resource
05/09 14:39, 4F

05/09 15:37, , 5F
Android resource可以打包成.aar就可用View/Activiy
05/09 15:37, 5F

05/09 16:14, , 6F
android res 要用 .aar
05/09 16:14, 6F
請問是一定要使用.aar嗎? 我目前是使用第三方的支付SDK(中國的支付寶alipaySdk.jar和微信支付libammsdk.jar) 裡面使用的也只是jar檔就可以調用activity 請問這是怎麼實作的呢?? ※ 編輯: euph (122.219.138.142), 05/09/2016 17:23:20

05/09 19:46, , 7F
不要包android res,View都用程式碼產生,string都寫死就
05/09 19:46, 7F

05/09 19:52, , 8F
可以,也可以只包Webview用server端去做UI
05/09 19:52, 8F

05/09 20:06, , 9F
調用activity跟用res是兩回事,當然只用jar的話也不會有
05/09 20:06, 9F

05/09 20:06, , 10F
manifest所以還要叫用的人自己在manifest加宣告
05/09 20:06, 10F
原來如此!!! 我用那些jar的時候是需要另外在manifest裡加上activity的宣告 所以我的view直接寫死在程式碼裡也是一個方法, 那我還有用過一家的第三方jar是需要把res底下的layout, string等等 複製到自己專案裡,再讓jar去引用的,這個作法又是怎麼實作的呢? 像是在jar裡面的setContentView(R.layout.login_auto); 是有需要改寫成什麼樣子呢? 或是要加入classpath之類的嗎? ※ 編輯: euph (122.219.138.142), 05/10/2016 09:23:02 自己回答這個蠢問題 將所有的res都搬去外面大的專案目錄之後 使用 getResources().getIdentifier 來取得ID就可以引用了 也就是原本的在library裡面的 setContentView(R.layout.login_auto); 改寫成這樣: setContentView(getResources().getIdentifier("login_auto", "layout", getPackageName())); OK~ 結案!!! ※ 編輯: euph (122.219.138.142), 05/17/2016 10:39:05
文章代碼(AID): #1NC2hGDv (AndroidDev)