Android

Android中的apk打包

Android中的apk打包

前言 使用友盟对应用进行信息收集时,其中包含有一个渠道名。渠道姑且可以认为是一个商店吧,如果应用要在很多个商店上面上架的话,一直改太麻烦了。有一个叫做多渠道打包的东西自然而然地走了过来。 多渠道打包实现 <meta-data android:name="UMENG_APPKEY" android:value="xxxxxxxxxxxxxxxxxxxxxx" /> <meta-data android:name="UMENG_CHANNEL" android:value="Google Play Store" /> 如上所示,如果需要换一个渠道的话,重新改的话就特别麻烦了。先将其中的value替换成占位符${UMENG_CHANNEL_VALUE}。接下来到模块下的build.gradle中进行相应的修改。修改大致如下:

Android中的签名

Android中的签名

签名,顾名思义与生活中的签名类似,为某个东西签了名,那么这个东西就与所签的名字产生了某种关系,如归属等。 为什么要为Android应用签名? 这是因为Android系统的要求就是这样,Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,就无法安装到系统中。 为什么在AS中直接RUN可以安装到系统上? 因为这种方式会使用Android Studio默认生成的debug签名,去给应用进行签名。 签名不同会怎样 如果同一应用使用不同的签名,那么将不能覆盖安装,必须先卸载之前的,然后再安装。 1)两个程序的入口Activity是否相同。两个程序如果包名不一样,即使其它所有代码完全一样,也不会被视为同一个程序的不同版本; 2)两个程序所采用的签名是否相同。如果两个程序所采用的签名不同,即使包名相同,也不会被视为同一个程序的不同版本,不能覆盖安装。 所以这也是为什么,同样一份代码,由不同的机器RUN,然后安装到同一台设备上时,需要先卸载之前的应用,而后再安装此次的。 原因就是每台机器默认

Android中的looper与handler

Android中的looper与handler

前言 为什么会有这么一篇网上有很多种解说版本的博客?因为我看懂了很多次,都没有把自己的想法记下来,然后就忘了。那样不仅浪费时间、而且还有点伤积极性。 从一个异常出发开始 在《第一行代码》中看到了关于异步处理消息的用法时,有没有想过可以在子线程中去new一个Handler?现在就开始着手,从一个子线程中去new一个Handler,看看会有什么发生。 new Thread(new Runnable() { @Override public void run() { new Handler(); } }).start(); 结果就出现了RuntimeException异常,仔细看它的信息说明。 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 那么可知,在每个线程new Handler()时,都必须先调用Looper.prepare(

Android中遇到的问题

Android中遇到的问题

遇到了挺多的问题,但是每个问题都写篇文章感觉有点不实在,所以还是选择将这些小知识点都汇集到这一篇文章,方便自己再次查看吧。好多问题解决了之后没有及时记录下来,现在忘得差不多了。 替换Fragment的问题 这个问题遇到过好几次了,但是还是没有很快地解决它.不过最终还是解决了~所以还是记下来踩过的坑吧 现象 代码如下. 在我们看来这可能是再平常不过的代码了,但是它就是报错了,而且就是在replace这个函数这里. 它需要的就是一个Fragment呀,我的fragment也是一个继承了Fragment类, 为什么就不能完成类型匹配呢? 所以很是纠结 getFragmentManager().beginTransaction() .replace(R.id.container, fragment) .commit(); 但是,我心里清楚,我的fragment是继承自android.support.v4.app.Fragment, 而且我还记得之前使用过一个叫做getSupportF