如何在协作开发安卓项目中打jar包给合作人
一般情况下,id都是安卓自动生成的。使用时只要用R.id.xx就可以了。但是,在合作开发安卓时,需要将自己开发的代码部分打成jar包,甚至做混淆。
这就需要使用java的反射机制。在取id时使用如下类,避免了硬编码。res文件只能乖乖的交给合作方了。当然可能还有更好的方法解决这个问题。
使用方法如:
(ImageButton) findViewById(GetItemId.getIdResIDByName(this, "title_exit"));
import java.lang.reflect.Field;
import android.content.Context;
import android.util.Log;
public class GetItemId {
public static int getItemId(Context paramContext, String paramString1,
String paramString2) {
try {
Class<?> localClass = Class.forName(paramContext.getPackageName()
+ ".R$" + paramString1);
Field localField = localClass.getField(paramString2);
int i = Integer.parseInt(localField.get(localField.getName())
.toString());
return i;
} catch (Exception localException) {
Log.e("getIdByReflection error", localException.getMessage());
}
return 0;
}
public static int[] getItemIdArray(Context paramContext,
String paramString1, String paramString2) {
try {
Class<?> localClass = Class.forName(paramContext.getPackageName()
+ ".R$" + paramString1);
Field localField = localClass.getField(paramString2);
int[] i = (int[]) localField.get(localField.getName().toString());
return i;
} catch (Exception localException) {
Log.e("getIdByReflection error", localException.getMessage());
}
return null;
}
public static int getLayoutResIDByName(Context context, String name) {
return context.getResources().getIdentifier(name, "layout",
context.getPackageName());
}
public static int getIdResIDByName(Context context, String name) {
return context.getResources().getIdentifier(name, "id",
context.getPackageName());
}
public static int getStringResIDByName(Context context, String name) {
return context.getResources().getIdentifier(name, "string",
context.getPackageName());
}
public static int getDrawableResIDByName(Context context, String name) {
return context.getResources().getIdentifier(name, "drawable",
context.getPackageName());
}
}
如何在协作开发安卓项目中打jar包给合作人的更多相关文章
- Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图(转载)
Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图 2017年04月05日 10:53:13 李学凯 阅读数:104997更多 所属专栏: Intellij Idea ...
- Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图
Maven 组件界面介绍 如上图标注 1 所示,为常用的 Maven 工具栏,其中最常用的有: 第一个按钮:Reimport All Maven Projects 表示根据 pom.xml 重新载入项 ...
- 如何查看Maven项目中的jar包依赖树情况
对于开发人员,我想大家对于Maven应该不会陌生吧,如何在一个Maven项目中对这个项目中所引用的第三方jar包有个直观的了解呢? 其实实现很简单,只需要借助于Maven的一条命令,如下所示: mvn ...
- Android项目中打jar包 和 使用
第一步,把普通的android project设置成库项目 库项目也是一个标准的android项目,因此你先创建一个普通的android项目. 这个项目可以起任何的名称,任何的报名,设置其他需要设置的 ...
- Java开发过程中开发工具Eclipse中导入jar包的过程
欢迎欣赏我的第二篇随笔.我们在创建好一个动态网站项目之后,如果没有部署maven的情况下,你可以按照以下的方法,直接把要用的jar包导入你的工程中,而不用再部署maven. 例如在使用JDBC编程时需 ...
- 向eclipse的JavaWeb项目中导入jar包--备忘录
一: 在你所需的jar包网站下载对应的jar包.如org.apache.commons.lang.jar. 二:复制粘贴到该JavaWeb的WEB-INF目录下的lib目录下,如: 三:右键 ...
- Android Studio向项目中导入jar包的方法
第一步: 切换到"Project"视图,找到app --> libs目录 第二步: 将需要导入的jar包粘贴到libs目录中,此时还不能看到jar包中的内容 第三步: 右键点 ...
- 向eclipse的JavaWeb项目中导入jar包
一: 在你所需的jar包网站下载对应的jar包.如org.apache.commons.lang.jar. 二:复制粘贴到该JavaWeb的WEB-INF目录下的lib目录下,如: 三:右键 ...
- IntelliJ IDEA Java项目中添加jar包
1. 事先下载完成需要的javacsv.jar包. java项目在没有导入该jar包之前,显示如下图所示 2. 点击 File -> Project Structure(快捷键 Ctrl + ...
随机推荐
- 09day2
多米诺骨牌 递推+高精度 [问题描述] Jzabc 对多米诺骨牌有很大兴趣,然而他的骨牌比较特别,只有黑色的和白色的两种.他觉得如果存在连续三个骨牌是同一种颜色,那么这个骨牌排列便是不美观的.现在他有 ...
- (六)6.6 Neurons Networks PCA
主成分分析(PCA)是一种经典的降维算法,基于基变换,数据原来位于标准坐标基下,将其投影到前k个最大特征值对应的特征向量所组成的基上,使得数据在新基各个维度有最大的方差,且在新基的各个维度上数据是不相 ...
- 【Android】SDK工具学习 - Traceview 和 dmtracedump
dmtracedump官方文档 Traceview 根据程序的log,形成图形 dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g out ...
- 15个必须知道的chrome开发者技巧(转)
15个必须知道的chrome开发者技巧 在Web开发者中,Google Chrome是使用最广泛的浏览器.六周一次的发布周期和一套强大的不断扩大开发功能,使其成为了web开发者必备的工具.你可能已经熟 ...
- SeuRain的归来
不知不觉二十载寒窗苦读要结束了,还没有到回顾过去的时候.马上进入研三了,现在要努力加油了.还记得曾经的那个在凌晨两点奋战的宇么?归来吧!
- Node.js的循环依赖
我们知道在实际编程过程中,要尽可能的减少或者规避循环依赖情况的发生.但在现实环境中,有时却不得不产生循环依赖.Node.js不提倡使用循环依赖,但真有如此情况发生时Node.js也有办法解决.这篇博文 ...
- mysql的data数据库只有.frm 而.myd和.myi没有,使用正常
正常 data目录下的数据库文件只要表结构文件frm文件...甚是不解 钻研过后知道 mysql的默认数据库引擎模式呗设置成了InnoDB innodb表没有没有MYD和.MYI,其数据文件对应于i ...
- Shell教程1-第一个Shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了.输入一些代码: #!/bin/bash ...
- RandomAcessFile、MappedByteBuffer和缓冲读/写文件
项目需要进行大文件的读写,调查测试的结果使我决定使用MappedByteBuffer及相关类进行文件的操作,效果不是一般的高. 网上参考资源很多,如下两篇非常不错: 1.花1K内存实现高效I/O的Ra ...
- linux下安装filezilla客户端遇到的问题
访问filezilla ./filezilla 出现error while loading shared libraries : libpng12.so.o 缺少libpng12.so.o这个文件 解 ...