看板 AndroidDev 關於我們 聯絡資訊
小弟做了一個簡單的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
ssccg: jar沒有包資源檔,要用aar 05/09 14:15
ssccg: 不然就像Eclipse的用法一樣加個module啊 05/09 14:16
是這樣的 我有用過其他第三方的jar檔,是直接可以呼叫的jar資料庫, 我們上頭是希望我能做出一個類似功能和使用方法的東西, 只是不知道為什麼我再呼叫這樣的 R.layout 就會叫不出來.... setContentView(R.layout.login_auto); 是不是有需要改寫些什麼??
ssccg: jar的資料庫是? jar只能放class和java resource 05/09 14:39
ssccg: 不能放android resource 05/09 14:39
freedom74569: Android resource可以打包成.aar就可用View/Activiy 05/09 15:37
mshockwave: android res 要用 .aar 05/09 16:14
請問是一定要使用.aar嗎? 我目前是使用第三方的支付SDK(中國的支付寶alipaySdk.jar和微信支付libammsdk.jar) 裡面使用的也只是jar檔就可以調用activity 請問這是怎麼實作的呢?? ※ 編輯: euph (122.219.138.142), 05/09/2016 17:23:20
ssccg: 不要包android res,View都用程式碼產生,string都寫死就 05/09 19:46
ssccg: 可以,也可以只包Webview用server端去做UI 05/09 19:52
ssccg: 調用activity跟用res是兩回事,當然只用jar的話也不會有 05/09 20:06
ssccg: manifest所以還要叫用的人自己在manifest加宣告 05/09 20:06
原來如此!!! 我用那些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