我已经在' res'中编写了一个带有许多自定义图标的应用。夹。我最近将大部分代码抽象到Android库中,包括使用资源图标的按钮。而且它变成了梨形。
具体来说,当库类引用资源时,它引用com.example.library.R类(而不是真正的包名!)。这适用于编译,但是当我在设备上运行应用程序时,com.example.library.R类不在apk中,因此我得到了ClassNotFoundException。我收集图书馆项目不要将他们的R类放入他们的jar文件中,这样就解释了它没有从apk中删除。
我的问题是,如果我在库项目中编写一个按钮,我怎样才能在其资源中引用一个图标?这可能吗?如果是这样,怎么样?如果没有,是否有解决方法? (我不能成为第一个遇到这个问题的人!)
答案 0 :(得分:0)
我编写了一个解决方法,全部用java编写。我见过类似问题的其他解决方案涉及jiggling eclipse / adt的is-library设置,或者依赖于IDE中的flakiness。这是我的方法......
(1)在图书馆和应用程序的res文件夹中都有图标。
(2)将R.java文件从库的gen文件夹复制到src文件夹中的包中,并将其重命名为RR.java。
(3)在应用程序的主要活动中,编写静态初始化代码,将每个值从应用程序的R类复制到库的RR类。
(4)在整个库中,使用RR类而不是R类。
这很难看,但似乎有效。