【发布时间】:2017-06-01 22:49:24
【问题描述】:
我们不能将资源 ID (R.java) 直接放在 jar 文件中。如果我们这样做,就无法保证它们是独一无二的。但是如何在没有 R.java 的情况下编译 jar 呢?在我的代码中,我经常调用 R.style.xxx 来获取 xxx 的 id,但如果我没有 r.java,那么它将无法编译:(
我像这样构造我的罐子
%JDK_PATH%\javac -cp^
%ANDROID_PLATFORM%\android.jar;^
-d source\output^
source\java\com\mylib\util\r.java^
source\java\com\mylib\view\myCustomView.java
r.java 只是一个像这样的虚拟文件:
package com.mylib;
public final class R {
public static final class dimen {
public static final int al_floating_toolbar_horizontal_margin=0;
public static final int al_floating_toolbar_vertical_margin=0;
public static final int al_floating_toolbar_preferred_width=0;
public static final int al_floating_toolbar_minimum_overflow_height=0;
public static final int al_floating_toolbar_maximum_overflow_height=0;
public static final int al_content_rect_bottom_clip_allowance=0;
public static final int al_floating_toolbar_height=0;
public static final int al_floating_toolbar_menu_button_minimum_width=0;
}
}
然后我删除所有 R.class 然后我创建 jar :
%JDK_PATH1_7%\jar cf lib\jar\mylib.jar -C source\output com\mylib\
【问题讨论】:
-
编译它并将jar中的旧R.class替换为新的。但老实说,只是用一个xml文件来存储这样的数据。
-
我做到了,我什至从 jar 中删除了 r 类,但 R.style.xxx 是指向已删除 r.java 中的值的样式:(
-
是的,您必须在其中保留一些 R.java,否则显然无法正常工作。正如我所说,使用 xml 文件可能更容易。
-
但是我使用了一个 xml 文件 :( 当我们创建最终的 apk 时,r.class 必须从这个 xml 文件生成。但是在我的库代码的中间,我需要一些参考,比如 R .style.xxx 目前 R.class 尚未创建:(
标签: java android jar android-resources rjava