• 把自己的程序打成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里的activityservicereceiver。很多广告插件都是这么做的。相信大家都非常熟悉。
    [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>
  • 相关阅读:
    Spring Boot与Redis的集成
    Spring Boot 使用YAML配置
    Spring Boot与MyBatis的集成
    springboot 初识
    微服务架构
    Spring MVC 国际化
    Spring MVC 为控制器添加通知与处理异常
    Spring MVC 数据转换和格式化
    Spring MVC 上传文件
    Spring MVC 实例:Excel视图的使用
  • 原文地址:https://www.cnblogs.com/dongweiq/p/4250401.html
Copyright © 2020-2023  润新知