把自己的程序打成jar包,让别人调用


 我们写程序的时候往往需要把自己的程序打包成jar包,给第三方调用。Eclipse让我们非常方便的可以导出jar包。但是当程序里需要用到res里的资源时,往往就会出现问题。因为统自动生成的R类如果被打到jar包中后,就失去了索引资源的作用。导致封装成jar包的view无法获取对应资源。因为R类的属性值是在应用编译打包时由系统自动分配的。R类打包之后失效,实际是因为R类的内部类里面的属性失效,因为打包之后这些属性的值就固定了,但是实际项目中这些值是在编译时有系统自动分配的,无法在编译前固定。

本文就提供一种方法,解决这个问题。

首先建立一个AndroidJar项目。这个项目将来就是要打成jar包的项目。

结构如下:
<ignore_js_op>

然后再建立一个AndroidJarTest项目。这个项目就是应用jar包的项目。

AndroidJar写好后,就是导出jar包。相信大家都非常熟悉,步骤如下:

1.选中AndroidJar,右键选择export。

2.选择jar file。只需导出源码。如图:
<ignore_js_op>

1.然后点击finish。就可以导出jar包了。

AndroidJarTest项目对jar包的应用方法。

1.在AndroidJarTest项目下建立一个libs文件夹,再把刚才导出的jar包放到里面。再把jar包加到java build path的路径里。
<ignore_js_op>

2.因为刚才只是把AndroidJar的源码打成了jar包。但是资源并没有打包。所以现在要把AndroidJar项目里的资源。拷贝到AndroidJarTest的项目下。具体就是res下的文件。因为太简单,这里就不演示怎么拷了。

2.最后要在AndroidJarTest的AndroidManifest.xml里注册AndroidJar里的activity,service,receiver。很多广告插件都是这么做的。相信大家都非常熟悉。

[Java] 纯文本查看 复制代码

?


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

<activity

android:label="@string/app_name"

android:name=".AndroidJarTestActivity" >

<intent-filter >

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<!-- AndroidJar 里的activity,service和receiver-->

<activity

android:name="com.song.test.FirstActivity"

android:screenOrientation="portrait"

android:theme="@android:style/Theme.NoTitleBar" >

</activity>

<activity

android:name="com.song.test.AndroidJarActivity"

android:screenOrientation="portrait"

android:theme="@android:style/Theme.NoTitleBar" >

</activity>

<service android:name="com.song.test.service.HelloService" >

</service>

<receiver android:name="com.song.test.receiver.ToastReceiver" >

<intent-filter >

<action android:name="MAKE_TOAST_ACTION" />

</intent-filter>

</receiver>

<!-- AndroidJar 里的activity,service和receiver-->

</application>

在AndroidJarTest里就只要一个其他的activity。它负责跳转到AndroidJar里。AndroidJar里就三个按钮分别是启动一个服务,每隔10秒就发出一个广播,然后广播接收到后就弹出一个toast,“大家好,我是苍老师!”和一个停止服务。最下面一个就是跳到一个有苍老师的界面。
<ignore_js_op><ignore_js_op><ignore_js_op>

程序相当简单。其中根据资源创建view,和根据资源找到相应字符的核心类为ResManager。大家可以下载源码,研究研究。

<ignore_js_op> 该贴已经同步到 feathersong的微博

<ignore_js_op>

时间: 2024-10-09 06:01:47

把自己的程序打成jar包,让别人调用的相关文章

Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

转载地址:http://blog.csdn.net/xiaanming/article/details/9257853 最近有一个需要,我们公司做了一个apk客户端,然后其他的公司可以根据自己的需要来替换里面的资源图片,文字等一些资源文件问题,我本来想这个简单,用两个工程直接替换里面的资源文件就行,老大说,这样子不好,如果要改需要改两个客户端,而且还麻烦,叫我将所有的Activity打成Jar包的形式,这样子我们改了里面的内容就直接发布Jar包出去,其他公司直接下载Jar来使用,这样子他们自己公

将Java程序打jar包并运行

1)接着上篇博客继续说手动编译之后,将代码打成jar包,然后直接“java -jar lz.jar"运行不成功的问题.还是先上代码: 这个是Demo类: package org.lz.demo.a ; public class Demo{ public String getContent(){ return "oh,yeah,done!" ; } }; 接下来,这个是调用了Demo类的ImportDemo类,并且这两个类不在一个包中: package org.lz.demo.

使用myeclipse将Java项目打成jar包遇到classnotfound的问题解决办法

今天做一个东西,把Java项目打包成jar文件.折腾了俩小时,到最后还是执行jar文件就报classnotfound异常,我感觉是所写的程序中依赖的jar包没有打进去,但我手动加了,还是不行.网上找了好多办法,还是不行.后来,问了一技术大牛的朋友,才知道问题出在哪了. 选择runnable jar file,而不是jar file(我的myeclipse版本是6.5,没有这个runnable jar file选项) next 选择"package required libraries into

spring cloud 打成jar包在Windows或者Linux上运行的

整理一下关于Spring Boot后台运行的一些配置方式.在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式 1:运行Spring Boot的应用主类2:使用Maven的Spring Boot插件mvn spring-boot:run来运行3:打成jar包后,使用java -jar运行 我们在开发的时候,通常会使用前两种,而在部署的时候往往会使用第三种.但是,我们在使用java -jar来运行的时候,并非后台运行.下面我们分别针对Windows和Linux/Unix两

springboot打成jar包涉及到的linux命令

首先要明确 springboot项目打成jar包 查的是java进程不是tomcat进程 直接可以 ps -ef|grep java 就可以查出来 也可以用jbs -l 查询后台进程 还有启动jar包的命令 nohup java -jar  xxx. jar& 这是让程序在后台运行 如果只用 java -jar  xxx. jar 你关闭了xshell或者ctrl c一下就会把服务停止 所以用 nohup java -jar  xxx. jar& 原文地址:https://www.cnbl

IDEA打成jar包并在windows后台运行

IDEA打成jar包并在windows后台运行 一.IDEA打成jar包 1.File=>Project Structure=>Project 选择windows中安装的java版本,idea默认使用自己的java环境,需要改为windows中安装的版本,不然后期jar包在windows中运行时会java版本不对的错误. 2.File=>Project Structure=>Artifacts 接着选择main方法 选择完之后出现以下界面,点击"OK" 3.返回

打成Jar包后运行报错 Unable to locate Spring NamespaceHandler for XML schema namespace

MAVEN项目,在IDEA中运行正常,但是把它打成jar包后再运行就会出现异常: Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.sp

myeclipse maven 打成jar包 对要执行的main方法暴露出去,通过java -jar 命令后跟打包好的jar文件回车就可以执行暴露的main线程方法

在该maven项目的pom.xml中添加: <plugin>          <artifactId>maven-assembly-plugin</artifactId>          <configuration>              <archive>                  <manifest>                      <mainClass>com.xha.db.service

WEB应用打成jar包全记录

内容属原创,转载请注明出处 题外 由于项目的需求—不管是怎么产生的这个需求—总之,需要支持把一个web应用打成jar包供其他应用使用,这就有了下面的过程. 这个过程里用到了Spring和SpringMVC(用到的版本是3.1.4,后面略过此描述)的若干东东,如果不用这玩意的,请飘过. 要做些什么? 需要打包的这个Web应用包含下面这些内容: 静态资源,含 js.css.image 页面文件:jsp Jsp标签,含 tld文件和若干java代码 基于SpringMVC的其他若干Control和Se