[問題] 請問在打包jar檔library的res資源問題
小弟做了一個簡單的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
05/09 14:15, 1F
→
05/09 14:16, , 2F
05/09 14:16, 2F
是這樣的 我有用過其他第三方的jar檔,是直接可以呼叫的jar資料庫,
我們上頭是希望我能做出一個類似功能和使用方法的東西,
只是不知道為什麼我再呼叫這樣的 R.layout 就會叫不出來....
setContentView(R.layout.login_auto);
是不是有需要改寫些什麼??
→
05/09 14:39, , 3F
05/09 14:39, 3F
→
05/09 14:39, , 4F
05/09 14:39, 4F
→
05/09 15:37, , 5F
05/09 15:37, 5F
→
05/09 16:14, , 6F
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
05/09 19:46, 7F
→
05/09 19:52, , 8F
05/09 19:52, 8F
→
05/09 20:06, , 9F
05/09 20:06, 9F
→
05/09 20:06, , 10F
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