关于修改别人的代码过程中出现的关于反编译的问题:
调试的时候没有问题,但是打成 apk的时候就会出现以下的log 信息:
atcom.*.*.hall.a.h.a(Unknown Source)
atcom.*.*.hall.a.e.a(Unknown Source)
由于各种反编译工具的泛滥,作为Android程序员在2.3版本以前只能通过手动添加proguard来实现代码混淆,
在2.3版本的sdk中我们可以看到在android-sdk-windows/tools/下面多了一个proguard文件夹
google已经把proguard技术放在了androidsdk里面 可以通过正常的编译方式也能实现代码混淆了
源文档 <http://my.oschina.net/hebeijpp/blog/132505>
如果反编译的话,会出现 类似于 .a类 文件
at *.*.*.shall.a.h.a
11-18 15:20:39.452:E/AndroidRuntime(5072): FATAL EXCEPTION: main
11-18 15:20:39.452:E/AndroidRuntime(5072): java.lang.NullPointerException: key == null
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.support.v4.util.LruCache.get(Unknown Source)
11-18 15:20:39.452:E/AndroidRuntime(5072): at
11-18 15:20:39.452:E/AndroidRuntime(5072): FATAL EXCEPTION: main
11-18 15:20:39.452:E/AndroidRuntime(5072): java.lang.NullPointerException: key == null
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.support.v4.util.LruCache.get(Unknown Source)
11-18 15:20:39.452:E/AndroidRuntime(5072): atcom.*.*.hall.a.h.a(Unknown Source)
11-18 15:20:39.452:E/AndroidRuntime(5072): atcom.*.*.hall.a.e.a(Unknown Source)
11-18 15:20:39.452:E/AndroidRuntime(5072): atcom.*.*.*.b.a.getView(Unknown Source)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.AbsListView.obtainView(AbsListView.java:2207)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.GridView.onMeasure(GridView.java:1040)
11-18 15:20:39.452:E/AndroidRuntime(5072): atcom.cvte.multiscreen.hall.view.MyGridView.onMeasure(Unknown Source)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.view.View.measure(View.java:15609)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4916)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1411)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.LinearLayout.measureVertical(LinearLayout.java:698)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.LinearLayout.onMeasure(LinearLayout.java:588)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.view.View.measure(View.java:15609)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.ListView.setupChild(ListView.java:1923)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.ListView.makeAndAddView(ListView.java:1848)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.ListView.fillDown(ListView.java:678)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.ListView.fillFromTop(ListView.java:739)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.ListView.layoutChildren(ListView.java:1661)
11-18 15:20:39.452:E/AndroidRuntime(5072): atandroid.widget.AbsListView.onLayout(AbsListView.java:2037)
会导致各种问题的发生空指针的 java.lang.NullPointerException: key == null 的问题;
类似的问题,解决此问题的相关网址:
http://blog.csdn.net/zz_mm/article/details/9147533
http://blog.csdn.net/eagleking012/article/details/6855216
http://blog.csdn.net/chinavfeng/article/details/7287362
仅供参考相互交流...........
解决办法:
自己重新 建立一个工程将有用的代码 复制进去,重新编译,打apk 就可以了!(主要是 proguard 的事儿)