Android 将Activity殴打jar包 对于由第三方使用 解决XML 图片 文本资源并不难过进入jar包装问题!

做项目需要打包成jar文件供第三方使用项目要求(将图片
文字资源写到到jar包中,第三方调用时,仅须要在AndroidManifest.xml配置下对应的Activity通过StartActivity方式拉起Activity):在网上找了好久。并依靠查看Android源代码终于攻克了问题

一:须要明确知识:

1.APK中的Res文件夹无法通过Eclipse的Export方式导入到jar包中
而Assert能够

2.Android程序在编译成APK时须要通过aapt将Res文件夹下的资源生成相应的Id
而Assert文件夹下的资源不会在R文件里生成Id

对XML资源学习:

1.AssetManager中提供XmlResourceParseropenXmlResourceParser(String
fileName)这种方法
能够讲编译后的XML文件生成一个资源遍历对象
通过该对象能够获取一个整个布局的View树

2.通过 setContentView(view)能够设置在Oncrea方法中设置Activity的布局

对图片资源学习:

1.将非.9图片放入到Assert文件夹下
通过获取文件资源去生成Drawable对象 Button等其它空间的点击效果能够通过StateListDrawable来实现

2.对.9图片进行处理
让须要先编译
去除掉上下左右的黑色的拉伸区域
显示区域的标记
用法与非.9图一致

对字符学习

1将字符写在Java文件里
,写到一个静态的Map中,通过kay_value能够再全局都获取到

二:详细操作过程:

1.先使用普通的方式
在XML文件里设置你的布局
并在执行Activity查看界面效果

2.删除你在XML文件里设置的图片,字体资源的属性。由于Res文件夹无法导入到Jar包中,无法在R文件里生成相应资源的Id,所以通过android:src="@drawable/uac_logo"此类方式设置的图片资源均不会被找到。在第三方获取编译后的XMLlayou文件时会抛出资源没有被照到的异常

2.取出bin文件夹下已经编译好的APK文件,解压缩
取出编译好的XML文件
图片资源
放入到Assert文件夹下

3.在Activity的onCreat方法中使用XmlResourceParseropenXmlResourceParser(String
fileName)方式获取Layout文件
通过setContentView(view)设置为整个Activity的布局
 使用当中的控件(ButtonTextView等)时
仍能够通过R.id.XX的方式获取
此时通过解析XML文件,系统以及获取到你这个XMl中各个控件Id(此时的Id是否会与第三方资源Id冲突
这个问题我认为不会发生,毕竟findViewById()给出的定义是寻找该XML下的控件的Id
有哪位对这个毕竟清楚
请教下?)

4.获取到控件之后,能够通过setTextsetBackground setImageDrawable等方法设置
文字
背景
展望资源。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

时间: 2024-08-02 23:35:00

Android 将Activity殴打jar包 对于由第三方使用 解决XML 图片 文本资源并不难过进入jar包装问题!的相关文章

Android 将Activity打成jar包 供第三方使用 彻底解决XML 图片 文字资源不可悲打入到jar包的问题!

做项目需要将程序打包成jar文件供第三方使用项目要求(将图片 文字资源写到到jar包中,第三方调用时,仅需要在AndroidManifest.xml配置下相应的Activity通过StartActivity方式拉起Activity):在网上找了好久,并依靠查看Android源码最终解决了问题 一:需要明白知识: 1.APK中的Res目录无法通过Eclipse的Export方式导入到jar包中 而Assert可以 2.Android程序在编译成APK时需要通过aapt将Res目录下的资源生成对应的

Ant打包可运行的Jar包(加入第三方jar包)

本章介绍使用ant打包可运行的Jar包. 打包jar包最大的问题在于如何加入第三方jar包使得jar文件可以直接运行.以下用一个实例程序进行说明. 程序结构: 关键代码: package com.alfred.main; import com.alfred.bean.User; import com.alfred.util.ProjConfig; import com.thoughtworks.xstream.XStream; public class Main { public static

maven上传jar包到nexus私服后的存放路径 以及 使用IDEA上传jar包的步骤

maven上传jar包到nexus私服的方法,网上大神详解很多,那么上传后的jar包存放到哪里了呢? 在下使用nexus3.2.1版本,在本地搭建了私服,使用maven上传jar包.最后结果如下: 点进去后展示的是: 这让我一度以为是以jar包的形式保存在本地,但事实证明,保存在本地的最终是一个 .bytes 类型的文件,它的默认路径在\nexus-3.2.1-01-win64\sonatype-work\nexus3\blobs\default\content下面 即使jar包是同样的,但是d

[Android] Android工程以jar包形式向第三方应用提供服务

参考: http://www.cnblogs.com/0616--ataozhijia/p/4094952.html 以API 19为例: 系统默认提供的 android.jar整体大小为: 21.8 MB 手动删除资源文件后, android.jar大小为:  2.6 MB 从中可以确定:   jar包中是可以放入资源文件的 那么 jar包中的资源是如何被调用的?? 以纯java方式: 见参考 以Android方式: 参考:http://blog.csdn.net/liguangzhenghi

com.android.dex.DexException: Multiple dex files define(jar包重复引用) 错误解决

前段时间开始转入Android studio,不料果真使用时候遇到些错误,在此记下! 出现这个错误往往是在libs目录下有个jar包,然后在gradle文件中又引用了,即: 共同引用了. 解决方法: 1.既然在gradle文件中引用了,即2,那么把libs中的删了. 2.更改1中的配置,即把compile改为provided,更改方法可以手动更改,也可以在structure中更改,即: 出现上面错误还有一种可能就是项目需要引用其它项目作为一个library,而你自己的项目也引用了该jar包,这样

带有res资源文件的项目 需要导成jar包 供别人使用的解决方法

比如说自己的成品项目,名字是MyObject,需要导出成jar包,让别人的项目调用,但是自己的项目还包含有图片.layout布局.libs里面的依赖包等等: 步骤: 1.MyObject项目需要“is library”一下,当做一个类库.(项目右键-Properties-Android页面下部Library部分选中“Is Library”,点击ok就行了) 2.新建一个项目,名称随意,我起名字叫MyLib,packageName一定要和MyObject项目一样.然后也是“is library”一

spring_boot打jar包及打包错误的解决方法

问题产生及解决 对于刚接手spring_boot的人,可能会感觉到很茫然无措,看到书上写的spring_boot是直接打包成jar包,使用java -jar *运行.然而却不知道该怎么打包.而创建spring_boot以后在pom文件中会安装spring_boot打包插件,此时我们会看到如下几个选项: pom文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt

eclipse中maven项目jar包不会自动下载解决办法

Eclipse中maven从远程仓库中下载jar包有时会很慢,有些甚至进度停止不动,这个时候我们可能会终止当前下载,但是终止jar包下载后会出现一个问题,再次打开Eclipse时,你会发现提示你项目中依赖的jar包找不到,如下图所示,项目右键打--->Build Path--->Configure Build Path 打开项目的 Java Build Path 在 Libraries 页签下 Maven Dependenicies 你会发现报错提示 依赖的jar包 missing如下图所示

如何在制作jar包时引用第三方jar包

我用的是Eclipse打包,但在CMD窗口执行的时候报“ActiveMQ.jar中没有主清单属性”错误. 在网上搜了下,这个与MANIFEST.MF文件有关,该文件没有定义MAIN方法所在类的路径,利用好压打开jar包,果然如此.里面只有一行 Manifest-Version: 1.0 需添加Main-Class.在本例中,添加如下: Main-Class: com.luoluo.TestUse.activemq.ActiveMQStateMain 上面,有几点需要注意: 1. Main-Cla