把图片资源打包成JAR文件,这个JAR文件能不能被所有的AP共享?能的话每个AP都得加载一次JAR文件?

xqhrs232 2011-02-14 10:37:49
把图片资源打包成JAR文件,这个JAR文件能不能被所有的AP共享?能的话每个AP都得加载一次JAR文件?
...全文
857 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqhrs232 2011-02-14
  • 打赏
  • 举报
回复
不知道大家遇到有很多图片的AP是怎么处理的?整个AP跟图片整成一个JAR文件,还是代码跟图片分开,代码去外部加载图片。


不知道那个性能更好!!!
xqhrs232 2011-02-14
  • 打赏
  • 举报
回复
Java如何将图片打包到jar中的问题

http://blog.163.com/luopan1986924@126/blog/static/2704729920095251754130/


Eclipse使用导出Jar包后打开加载不了图像?

出现这种问题的原因大多是因为路径的问题,往往是在项目中运行正常,但是一旦打包成Jar后就不能正常显示了,下面总结一下解决此类问题的方法:

一、通过使用外部资源文件的方式解决

把项目打包生成Jar后,再新建一文件夹,把项目中所有使用的图片文件和生成Jar文件放在该目录下,只要代码对图片文件的引用路径正确,如:ImageIcon image=new ImageIcon(SwingResourceManager.getImage("icons/logo.gif"));就可以了。

这种方式下,图片文件与类文件不是一块放在包中的,类文件在包中,而图片文件在项目根目录下。

二、通过使用内部资源文件的方式解决

把所用的图片文件放在项目使用的包中,打包时把图片文件同时打进Jar文件中。这种方式在具体代码中应使用下面其中一种:

ImageIcon image = new ImageIcon(this.class.getResource("icons/logo.gif"));

下面对这种方式详细说明:



当你编写一个图形界面的程序的时候,你肯定要使用各种图片资源。那么,当你发布你的程序的时候,这些图片资源如何发布呢?最简洁的方式就是将这些图片资源连同你的class文件一起打包为一个可执行Jar文件,这样你只需发布一个jar文件就囊括了所有的内容,用户只需双击该Jar文件就能运行程序。如果把图片打包在Jar文件中,编写程序的时候如何访问这些图片呢?这些图片的路径是什么呢?可以用getResource()方法来解决这个问题。下面我们具体分析2种最常见的情况:

1、你将所有资源打包为andy.jar,你的类位于一个包中:package andycpp;你的图片资源全部放在images文件夹中,而images文件夹也位于andycpp包内。这样的话,最终的路径表现为:

andy.jar

|__andycpp

|__ GUITest.class

|__ images

|__ Snap1.jpg

因为图片文件夹和引用他的类位于同一个层次,因此可以通过相对路径来访问:

java.net.URL imgURL = GUITest.class.getResource("images/Snap1.jpg");

ImageIcon img1 = new ImageIcon(imgURL);

这里需要注意的是大小写问题!Jar文件内部对大小写是敏感的,因此,如果图片本身叫做snap1.jpg,你把路径写成images/Snap1.jpg,那么结果将找不到该图片。还要注意的是,每个类(注意,不是对象)都有一个getResource()方法,但是你不能随便用,你只能使用和图片文件夹处于同一层次的类的getResource()方法。比如上图中,GUITest类和images处于同一层次,所以要使用该类的getResource()方法。

2、另一种情况,如果你的类有很多,并且包结构很复杂,那么你就不大可能把图片和类放在同一个层次上,而是应该把图片放到最外层,让所有的类通过绝对路径来访问该图片:

andy.jar

|__andycpp

|__ GUITest.class

|__ images

|__ Snap1.jpg

代码如下:

java.net.URL imgURL = GUITest.class.getResource("/images/Snap1.jpg");

ImageIcon img1 = new ImageIcon(imgURL);

大家看到和上述代码的区别了吗?区别非常细微,仅仅是在“images”的前面加了一个反斜杠"/",这个反斜杠就表示根目录,没有反斜杠就表示相对路径..

原文:http://blog.csdn.net/andycpp/archive/2006/09/16/1231619.aspx

http://blog.csdn.net/andycpp/archive/2006/09/16/1231619.aspx

xqhrs232 2011-02-14
  • 打赏
  • 举报
回复
android中正确导入第三方jar包

http://www.cmd100.com/bbs/thread-4887-1-1.html




刚开始是这样引用的(eclipse):

  右键工程,Build path,java build path,

  选择libraries,在右边的按钮中点击“Add External JARs”,

  然后选择合适的jar包(大部分人应该会这样做).

  结果控制台立刻报错:conversion to dalvik format failed with error 1。

  而且项目上还会出现红叉,虽然项目里并没有错误。

  clean一下,项目正常,但是bin里的apk文件和dex文件都没了,运行项目出现错误:Can not find **.apk后来找到原因是因为导入jar包的方式不对,

  正确的方法如下:

  1,右键工程, Build path, java build path,

  2,选择libraries在右边的按钮中点击“Add Library”

  3,选择“User library”,点击“下一步”

  4,点击“User librarys”按钮在出现的界面中点击“New..”按钮

  在弹出的界面中随便起一个名字,点击“确定”

  5,点击“Add jars”按钮选择第三方jar包,

  点击“确定”完成操作。这样的话该jar包会被一起打包到apk中,问题也就解决了!


xqhrs232 2011-02-14
  • 打赏
  • 举报
回复
Android引入第三方jar包的方法

http://www.cnblogs.com/feisky/archive/2010/01/06/1640727.html

在Android平台中可以使用第三方外部JAR库文件,在Eclipse开发环境中,仅仅3步就可以使用第三方.jar文件:
1.在Package Explorer(包浏览器)面板中,右键单击鼠标在弹出的菜单中选择Properties(属性)
2.选择Java Build Path(Java构建路径),然后选择Libraries标签页.
3.按下Add External JARs 这个按钮,选择Jar文件即可。
如果你想包含第三方JARs到你的package包中,创建一个新的目录在你的工程中,选择Add Library... 代替即可,本站提示不用将外部JARs文件放到工程文件夹中就可以正常使用。

在网上查了一下,有人说上面的做法有可能会出错,建议采用下面的步骤:

右键工程,
Build path,
java build path,选择libraries
在右边的按钮中点击“Add Library”
选择“User library”,点击“下一步”
点击“User librarys”按钮
在出现的界面中点击“New..”按钮
在弹出的界面中随便起一个名字,点击“确定”
点击“Add jars”按钮选择第三方jar包,点击“确定”完成操作。
这样的话该jar包会被一起打包到apk中,问题也就解决了!

那么如果将自己的代码封装成一个jar库供其他程序复用呢? 下文给出了导出的具体步骤:(转自:android123.com.cn)

首先创建一个Android工程,确定可以编译通过,移除androidmanifest.xml文件,和相关的程序资源图片,比如res/drawable/icon.png。在Eclipse中我们找到Package Explorer,选择export,如图:



接下来在导出对话框中选择Java,JAR file,如下图所示:



在JAR File Specification这里选择我们需要到处的资源等等,在JAR file:路径选择我们导出后文件的存放位置,在下面的Compress the contents of the JAR file勾选可以压缩生成文件的体积。最后单击Next或Finish即可完成导出,这样可以在以后的工程中导入这个库,起到了代码复用的效果类似Windows 32开发的Dll文件一样。



xqhrs232 2011-02-14
  • 打赏
  • 举报
回复
Android导出一个JAR库----应用工程导出成JAR文件----有图有真像


http://www.norkoo.com/show/Mobile_Technology/android/bfjjkhjijkbihckifebhkfjiekegig.aspx

很早以前,我们说过如何导入一个JAR库,的方法可以参考 Android使用第三方外部JAR库文件 一文。那么如果将自己的代码封装成一个jar库供其他程序复用呢? 首先创建一个Android工程,确定可以编译通过,移除androidmanifest.xml文件,和相关的程序资源图片,比如res/drawable/icon.png。在Eclipse中我们找到Package Explorer,选择export,如图:



接下来在导出对话框中选择Java,JAR file,如下图所示:



在JAR File Specification这里选择我们需要到处的资源等等,在JAR file:路径选择我们导出后文件的存放位置,在下面的Compress the contents of the JAR file勾选可以压缩生成文件的体积。最后单击Next或Finish即可完成导出,这样可以在以后的工程中导入这个库,起到了代码复用的效果类似Windows 32开发的Dll文件一样。


qthsrs232 2011-02-14
  • 打赏
  • 举报
回复
Android下编译自己的库文件jar并在应用中调用

http://hi.baidu.com/gaogaf/blog/item/1757d309274b098cd1581bd7.html


主要为了解决如下问题:
项目中使用了Android未公开的API,在Eclipse下会有红叉显示。
不同的项目抽出相同部分的代码共用。

必需的前提条件:
需要有Android源代码,编译的库文件主要是封装未公开API或者共用代码。


工程1:Java库文件工程

该工程最终会生成以jar结尾的Java库文件,并会被安装到设备的以下目录:
/system/framework/
另外还会安装相关库文件的说明文件,使系统能够找到库文件:
/system/etc/permissions/

1、建立工程
在Eclipse下新建一个空的Java工程。
在工程的
Java Build Path -> Libraries
下,导入Android的SDK中的 android.jar 库。
为工程创建相应的包和java文件。
下面假设包路径为 com.mytest.lib,最终生成的库为 mylib.jar。

2、为工程添加注册文件
在库文件工程的根目录下创建以下文件:
<permission xml file name>.xml
该文件是用来向系统注册库用的,名称可以自己定,在下面假设该文件为 mylibxml.xml。
在文件中加入以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<permissions>
<library
name="com.mytest.lib"
file="/system/framework/mylib.jar"
/>
</permissions>
其中的 library 用于将其下的 name 和 file 两个属性关联起来,name 的值后边会用到。
这里的 name 指定为工程的包名。
这里的 file 指定为库文件的存放路径,应该是:
/system/framework/<jar file name>.jar

3、为工程添加makefile文件:
在库文件工程的根目录下创建以下文件:
Android.mk
该文件是用来编译工程的,名称固定。
在文件中加入以下内容:
LOCAL_PATH:= $(call my-dir)
#MAKE_JAR
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_MODULE := mylib
include $(BUILD_JAVA_LIBRARY)
#MAKE_XML
include $(CLEAR_VARS)
LOCAL_MODULE := mylibxml.xml
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
其中,MAKE_JAR 部分的 LOCAL_MODULE 部分指定为想要生成的库文件的名字,
需要与 .xml 文件中的 library 下的 file 部分一致。
其中,MAKE_XML 部分的 LOCAL_MODULE 部分指定为用于注册库的 .xml 文件。

4、生成应用程序可用的库文件
此时的工程,如果使用了未公开的API的话,在eclipse下应该是有红叉的。
这些错误不用管,只需要保证程序在Android的源码下能够编译通过即可。
将工程的java文件以及 .xml 和 .mk 按照目录结构拷贝到以下目录:
<Android source folder>/packages/apps/<project name>/
运行以下命令:
$ cd <Android source folder>
$ . ./build/envsetup.sh
$ mmm packages/apps/<project name>
将会生成一个 .jar 文件和一个 .xml 文件。
以上两个文件是应用程序在运行时需要用到的。
调试应用前,需要将两个文件拷贝到设备的相应目录上去:
.jar 文件:/system/framework/
.xml 文件:/system/etc/permissions/
拷贝到设备使用以下命令:
$ sudo adb push <.jar or .xml file path> <path in device>
拷贝完以后需要重启设备。

5、生成在Eclipse可以引用的库文件
在源码下编译的 .jar 文件在Eclipse中是不能使用的,需要单独生成。
在Eclipse下选中工程根目录,选择文件菜单中的导出Export,然后选择jar类型。
导出为jar文件时,只需要选中相应的java文件即可。
这样生成的jar文件仅仅供应用程序在Eclipse下使用,除非是以下情况:
库文件没有使用非公开的API,并且,
应用本身在Eclipse下编译就能够使用,不需要到源码下编译。
暂且为该文件命名为mylibtemp.jar


工程2:Android应用工程

1、建立工程
新建一个Android工程。
在工程的
Java Build Path -> Libraries
下,导入 mylibtemp.jar 库。
使用 mylibtemp.jar 中的类编写代码。
下面假设最后生成的应用程序文件为 myapp.apk。

2、编辑AndroidManifest.xml文件
编辑工程根目录下的 AndroidManifest.xml 文件。
在 application 下添加以下内容:
<uses-library
android:name="com.mytest.lib">
</uses-library>
其中的 :name 表示所引用的库文件的包名。
其与库工程的 .xml 文件中的 name 应该是一致的。
这样在应用运行时就能够找到相应的 .jar 文件了。
如果引用了多个库,需要添加多个 uses-library 标签。

3、为工程添加makefile文件:
在库文件工程的根目录下创建以下文件:
Android.mk
该文件是用来编译工程的,名称固定。
在文件中加入以下内容:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_JAVA_LIBRARIES := mylib
LOCAL_PACKAGE_NAME := myapp
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
其中的 LOCAL_JAVA_LIBRARIES 表示程序会用到的库文件。
其名成与库工程下的 .mk 文件中 MAKE_JAR 部分下的 LOCAL_MODULE 应该是一致的。
其中的 LOCAL_PACKAGE_NAME 表示应用最后生成的名称。

4、编译应用程序
将工程的 src、res、assets 文件夹以及文件:
Android.mk 和 AndroidManifest.xml
按照目录结构拷贝到以下目录:
<Android source folder>/packages/apps/<project name>/
引用的 .jar 库文件并不需要。
运行以下命令:
$ cd <Android source folder>
$ . ./build/envsetup.sh
$ mmm packages/apps/<project name>
将会生成一个 .apk 文件。
运行以下命令将应用安装到设备:
$ sudo adb install [-r] <apk file path>


原文地址 http://yueguc.javaeye.com/blog/820591
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/6_system/linux/Linuxjs/20110124/553054.html

qthsrs232 2011-02-14
  • 打赏
  • 举报
回复
但在ECLIPSE下工程的EXPORT不支持导出JAR文件啊!JAVA倒是支持


1。ANDROID只支持EXPORT ANDROID APPLICATION
2。JAVA支持-----1》JAR FILE;2》JAVADOC; 3》RUNNABLE JAR FILE


难道ANDROID工程不能EXPORT为JAR FILE吗?希望知道的人给解惑啊!
qthsrs232 2011-02-14
  • 打赏
  • 举报
回复
用Eclipse怎么打包成JAR文件啊???

http://topic.csdn.net/t/20060728/06/4910466.html


dos下 jar
D:\jdk1.5.0_07\bin> jar /help
非法选项:/
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
选项:
-c 创建新的存档
-t 列出存档内容的列表
-x 展开存档中的命名的(或所有的〕文件
-u 更新已存在的存档
-v 生成详细输出到标准输出上
-f 指定存档文件名
-m 包含来自标明文件的标明信息
-0 只存储方式;未用ZIP压缩格式
-M 不产生所有项的清单(manifest〕文件
-i 为指定的jar文件产生索引信息
-C 改变到指定的目录,并且包含下列文件:
如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和存档文件名都需要被指定,按 'm ' 和 'f '标志指定的相同顺序。

示例1:将两个class文件存档到一个名为 'classes.jar ' 的存档文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一个存在的清单(manifest)文件 'mymanifest ' 将 foo/ 目录下的所有
文件存档到一个名为 'classes.jar ' 的存档文件中:
jar cvfm classes.jar mymanifest -C foo/ .


D:\jdk1.5.0_07\bin>

xqhrs232 2011-02-14
  • 打赏
  • 举报
回复
如何把jar跟Android一起打包成apk

http://www.isomobile.com/read.php?tid-246.html


jar放lib文件夹下面,然后添加到项目。鼠标右键->property->java build path-> libraries->add lib

编译之后产生的apk里面就包括了

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧