梦书之家(移动开发)

你有一个苹果,我有一个苹果,我们交换一下,一人还是一个苹果;你有一个思想,我有一个思想,我们交换一下,一人就有两个思想。 ——肖伯纳

导航

随笔分类 -  Java

annotation processor 为啥没有被调用?
摘要:Android Studio 3.5 使用@AutoService(Processor.class)注册annotation processor Android Plugin for Gradle: <=3.3.2 && Gradle Version 4.10.2 以上的都是可以的,但是高于以上的版 阅读全文

posted @ 2019-10-21 14:28 梦书 阅读(3188) 评论(1) 推荐(1) 编辑

命令行签名
摘要:可以去掉signalg 以及digestalg这两个是用于输入密码的 阅读全文

posted @ 2019-07-10 17:47 梦书 阅读(326) 评论(0) 推荐(0) 编辑

遇到一个git branch很奇怪的问题
摘要:最近,同事做了一个自动化的打包平台,但我发现里面的分支竟然有重复的,还有一些已经删除的branch。 比如,我已经删除了一个 test分支,在工程 game 目录下(已输入 git pull),输入: 还能看到 test这个分支名,而且也能切到这个分支,但是通过如下的代码,删除分支,确现实这个分支不 阅读全文

posted @ 2017-03-24 17:47 梦书 阅读(388) 评论(0) 推荐(0) 编辑

Android远程调试(Remote Java Application)
摘要:Unable to install breakpoint due to missing line number attributes. Remote java application. 阅读全文

posted @ 2013-05-02 14:20 梦书 阅读(950) 评论(0) 推荐(0) 编辑

利用Android的崩溃日志来定位问题
摘要:之前项目打包混淆的时候,都没有留下什么有意义的文件,导致运营那边反馈过来的崩溃日志(最典型的就是Google Play),都没有好好利用,因为里面的日志很多都是混淆过的类、方法与变量,很难定位问题。最近发现了:只要在混淆的时候,加入以下的命名,就可以生成一个类、方法与变量的混淆前后的映射表:-printmapping ${dstdir}/mapping.txt发布新包之后,保留这个文档,以后遇到用户提交的崩溃日志,可以根据上面的映射文件,就能定位出现崩溃的地方,至少能定位到某个子程序。 阅读全文

posted @ 2012-08-30 13:20 梦书 阅读(6781) 评论(2) 推荐(0) 编辑

使用Parcelable出现的几个问题
摘要:1.Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling : com.MyClass原因:这个类我是通过将其放入Bundle中传递的,所以在从Bundle中取的时候需要先设置ClassLoader:mBundle.setClassLoader(MyClass.class.getClassLoader());myClass = mBundle.getParcelable( "MY_CLASS" );2.Caused by: java.lang.NullPo 阅读全文

posted @ 2012-08-01 10:34 梦书 阅读(4778) 评论(0) 推荐(0) 编辑

JNI Types
摘要:http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/types.html 阅读全文

posted @ 2012-07-17 13:00 梦书 阅读(216) 评论(0) 推荐(0) 编辑

通过反射获取类的所有构造函数与方法
摘要:构造函数:Class<?> sp = Class.forName("java.lang.String");Pattern p = Pattern.compile("\\w+\\.");Constructor<?>[] ctors = sp.getDeclaredConstructors();for(Constructor<?> ctor : ctors){ System.out.println(p.matcher(ctor.toString()).replaceAll(""));}其中 Patter 阅读全文

posted @ 2012-07-16 17:03 梦书 阅读(1771) 评论(0) 推荐(0) 编辑

Java中String 的不可变性
摘要:一句话:String对象不能在原处修改。 阅读全文

posted @ 2012-06-29 13:32 梦书 阅读(280) 评论(0) 推荐(0) 编辑

Android打包含有文本或者图片资源的JAR包
摘要:如果引用第3方的jar,并且jar中包含文本或者图片资源,apkbuilder时,需要特殊处理:apkbuilder -rj <third party.jar>而jar包中读取其包含的文本或者图片资源,可以采用以下的方式(一般都是读取整个文件):String resource;//资源文件名InoutStream ins = XXX.class.getResourceAsStream(resource);或者File f = new File(XXX.class.getResource.getFile(resource)); 阅读全文

posted @ 2012-05-22 14:52 梦书 阅读(2361) 评论(0) 推荐(0) 编辑

keytool错误: java.io.FileNotFoundException: android.key (Permission denied)
摘要:keytool 在JDK的/bin目录下,比如:/opt/jdk/bin用以下的命令生成一个证书:keytool -genkey -alias android.key -keyalg RSA -validity 20000 -keystore android.key老是报如题的错误:后来才知道是因为当前的目录下没有写的权限,所以需要指定一个路径来存放android.key:keytool -genkey -alias android.key -keyalg RSA -validity 20000 -keystore /<MY_PATH>/android.key注: 该单位的两字母国 阅读全文

posted @ 2012-05-16 10:47 梦书 阅读(9760) 评论(0) 推荐(0) 编辑

Comparison method violates its general contract
摘要:今天一同事采用Collections.sort 来对文件进行排序,出现Comparison method violates its general contract 异常,找了好久,才发现是实现接口Comparator 的类有问题,在compare中没有处理好两个比较的对象相等的情况public int compare(T lhs, T rhs);即 lhs == rhs 时,返回值不是0 阅读全文

posted @ 2012-05-08 16:24 梦书 阅读(20290) 评论(0) 推荐(0) 编辑

一道面试题:求一个正整数的因子个数
摘要:如:整数 15,有1, 15, 3,5 共4个因子。要求算法的复杂度为O(sqrt(N)).首先想到的方法是:逐个枚举,从 1 到 N/2 + 1(当然也可以是 从 1 到 N),这样算法的复杂到至少是O(N)的,而且,其中还要去重,比如 24 = 4*6 = 6*4,这样还要分配空间来存放找到的因子,并且每次添加的时候,还要查找是否已经在列表中,采用二分查找也要logN,因此最终的算法复杂度也要达到O(NlogN)。不符合题目的要求。其实,重复因子的出现是在sqrt(N)的附近,再加上题目给出的算法复杂度的提示,因此我们可以写出如下的算法: /** * 求正整数 N的因子数 * @par.. 阅读全文

posted @ 2012-05-07 15:53 梦书 阅读(10210) 评论(1) 推荐(2) 编辑

JDK 下载
摘要:http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u32-downloads-1594644.htmlUbuntu下安装.bin文件chmod u+x jdk-1_5_0-linux-i586.bin ./ jdk-1_5_0-linux-i586.bin///另外,在下载之前要先查看下自己CPU的类型,比如:1.archiX86 是32位, x86-64的就是64位的2. 阅读全文

posted @ 2012-05-03 13:33 梦书 阅读(286) 评论(0) 推荐(0) 编辑

常见错误(从混淆后的异常日志中查找问题)
摘要:1.java.lang.NullPointerException at java.io.File.fixSlashes(File.java:267) at java.io.File.<init>(File.java:131)File file = new File(filePath);其中的 filePath 为null.--------------------------------------------------------------------2.更科学的方法参看我的另一篇博文:利用Android的崩溃日志来定位问题 阅读全文

posted @ 2011-07-25 14:37 梦书 阅读(2062) 评论(0) 推荐(0) 编辑

NDK基础
摘要:NDK(Android Native Development Kit),其实就是Java语言里面调用C/C++语言写的代码,但是由于Android系统是基于Linux的,所以C/C++的代码只能用GCC来编译了,如果Android系统是基于Windows的话,我们就可以用VC++等IDE来编译了。当然,二者都需要Android系统提供一些Library来供C/C++调用。所以,在学习NDK之前,最好看看Java语言里面关于Native method的相关的内容,入门推荐:1 Thinking in Java, 2th edition. append B. The Java Native Int 阅读全文

posted @ 2010-09-15 14:23 梦书 阅读(526) 评论(0) 推荐(0) 编辑

Java学习5之编程风格
摘要:1 也是最重要的一点是:不管自己采用什么的代码,一定得采用一致的代码风格;在修改别人的代码的时候,必须与原有的代码保持一致的风格。2Fildes Name 类的成员变量的命令1) 要么放在所有方法的前面,要么放在第一个用到该成员变量的方法前面2) 非public、非静态的以m开头3)静态的以s开头4) 其他的以小写单词开头5)public && static && ... 阅读全文

posted @ 2010-08-30 11:53 梦书 阅读(156) 评论(0) 推荐(0) 编辑

Java学习4
摘要:1 快速报错Java对容器提供了一种叫做fail-fast(快速报错)的机制:只需创建一个迭代器,然后向迭代器所指向的Collention添加或者删除东西,就会发生ConcurrentModificationException异常,如下代码所示:[代码]应该将 Iterator<String> it = c.iterator(); 放在c.remove("hello")之后,即迭代器的... 阅读全文

posted @ 2010-08-27 11:29 梦书 阅读(243) 评论(1) 推荐(0) 编辑

Java学习3
摘要:今天在写程序的时候,对下面的代码感到疑惑:于是自己分析了下:以上的代码相当于double类型的-0.10被强制转化为int类型 ---》 -0 负0 (0x80000000)其补码为:取反(符号位不变其他位取反): 0xFFFFFFFF加 1: 0x00000000 (最高位因溢出,自动丢失)而Java代码中对数值的保存采用补码来保存,而正0与负0的补码是一样的所以 -0 == +0.所以最初的代... 阅读全文

posted @ 2010-08-25 17:47 梦书 阅读(196) 评论(0) 推荐(0) 编辑

Java 学习笔记2(一个测试正则表达式的程序)
摘要:该程序修改自<Thinking in Java>(the fourth edition) 阅读全文

posted @ 2010-08-19 11:23 梦书 阅读(272) 评论(0) 推荐(0) 编辑