[問題] Android 打包 aar 問題
我原本有個 project A ,原本是要 build 成 APK,後來因為需求 在 build gradle 改成
build library。resource/ 底下的 layout 保留。
然後我 build 成 aar 後,將它 import 到 project B 用Android Studio運作正常。
後來我連 project B 都要變成 libary 給 Unity 平台。我又用同樣的方法手動將
build gradle 改成從 build application 變成 build library,最後也build出一個
aar,然後我將 project A 和 project B 的 aar 各取出 class.jar 然後重新包成一
個新的 class.jar,丟到Unity平台。最後運行時,出現資源檔的問題
E AndroidRuntime: Caused by: java.lang.NoClassDefFoundError: Failed
resolution of: Lcwm/a3gtest/R$layout;
我昨天找了解法,發現在批踢踢也有人在問這問題。也解決了。問題發生原因是
Project B 中有個 Activity ,它的 layout 找不到,但我明明也把所有資源檔
丟到 Unity 平台上去了,我的解法是,在 project B 中不要用 R.layout.xxxx_ooo
找資源檔,而是要用
getResources().getIdentifier("xxxx_ooo", "layout", getPackageName());
才解決這問題。
但我還是不知道為何會發生這問題,我隱約感覺到是 project A build 成 aar後
連同資源檔一起了,而導致 project B 發生問題。我做了個測試,將 project A
build 成 aar後,再取出 class.jar,讓 project B 直接 add to library,不要
import 整個 aar module。結果在 Unity 上跑也是一樣。 是不是在 project A
build 成 aar 後,裡面的 .jar 會和原本的資源檔做某種綁定?
還是我該 new 一個 Android Library 的專案,裡面它的資源檔就只有 values
這樣 build 成 aar 時給 Project B ?
剛剛做了些測試:
1 開新的專案,new Module -> Android Library ,一樣會出現這問題。
2 一樣開新的專案,new Module -> Java Library,這樣我的 class會無法用
因為我的 class 需要 import android.app.Activity
難道自己做的 aar 給別人,別人就一定需要用 getResource.getIdentifier 來獲取
資源檔嗎?????
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.115.108.110
※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1513480015.A.BC1.html
※ 編輯: blueblueChen (58.115.108.110), 12/17/2017 12:00:11
→
12/17 15:07,
7年前
, 1F
12/17 15:07, 1F
→
12/17 15:08,
7年前
, 2F
12/17 15:08, 2F
→
12/17 15:09,
7年前
, 3F
12/17 15:09, 3F
→
12/17 15:11,
7年前
, 4F
12/17 15:11, 4F
→
12/17 16:29,
7年前
, 5F
12/17 16:29, 5F
→
12/17 16:30,
7年前
, 6F
12/17 16:30, 6F
→
12/17 16:30,
7年前
, 7F
12/17 16:30, 7F
→
12/17 16:31,
7年前
, 8F
12/17 16:31, 8F
→
12/18 18:09,
7年前
, 9F
12/18 18:09, 9F
→
12/18 18:09,
7年前
, 10F
12/18 18:09, 10F
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章