- 浏览: 16365 次
最新评论
文章列表
在build.gradle文件中再次配置下,打开混淆文件:
release {
3 // 下面各值的意思将在后续进行讲解
4 storeFile file('release.keystore')
5 storePassword "123456"
6 keyAlias "androiddebugkey"
7 keyPassword "123456"
8 }
9 ...
最近一直用android studio 进行开发,在开发和发版的时候,遇到一个多渠道打包的问题,由于公司里是有七个渠道的包进行分发,由于每次去AndroidManifest.xml修改渠道的值,甚是麻烦。。。
最后去google了一番,发现有些方法,是在gradle文件里切换各种不同的AndroidManifest.xml文件,感觉这样也太麻烦些了。。。后面搜索了些,发些大家写得都差不多,发现一个在gradle利用manifestPlaceholders这个属性来替换渠道值的方法,但我按照这个方法,没有成功,我就去扒官方的文档才彻底搞定。下面就讲讲怎么实现的吧。
一般用渠道的统计无非是用友 ...
%1$s %1$d string
- 博客分类:
- android
<string name="time">我的时间: %1$s</string>
String times= getResources().getString(R.string.time);
String sFinalAge = String.format(times, "xx年xx月");
也可简单写成:
%d (表示整数)
%f (表示浮点数)
%s (表示字符串)
遍历手机应用市场 ps:不一定显示齐全
Intent intent = new Intent();
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.APP_MARKET");
PackageManager pm = this.getPackageManager();
List<ResolveInfo> infos = pm.queryIntentActivities(intent ...
如果使用Xcode 4.5来新建项目,默认是支持AutoLayout的,但是AutoLayout是iOS 6的新特性,如果在iOS 5的simulator上运行程序,会出现Could not instantiate class named NSLayoutConstraint问题。解决方法是打开storyboard文件,去掉AutoLayout的选择。
转自:http://www.cnblogs.com/procoder/archive/2013/01/13/Could-not-instantiate-class-named-NSLayoutConstraint.html
...
android4.0时候提示 android.os.NetworkOnMainThreadException异常,在2.3以下无
在appliction里添加
int fv =android.os.Build.VERSION.SDK_INT;
if (fv>10) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detect ...
public class TextViewLinkActivity extends Activity {
TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myTextView = (TextView) this.findView ...
vi的基本操作 a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mo ...
tabHost 的tab下有白线,去白线
tabHost = getTabHost(); /* 去除标签下方的白线 */ tabHost.setPadding(tabHost.getPaddingLeft(), tabHost.getPaddingTop(), tabHost.getPaddingRight(), tabHost.getPaddingBottom() - 4);
获取屏宽高及密度
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1 ...
(1)Android是一个多任务系统,也就是说可以同时运行多个程序,这个大家应该很熟悉。一般来说,启动运行一个程序是有一定的时间开销的,因此为了加快运行速度,当你退出一个程序时,Android并不会立即杀掉它,这样下次再运行该程序时,可以很快的启动。随着系统中保留的程序越来越多,内存肯定会出现不足,这个时候Android系统开始挥舞屠刀杀程序。这里就有一个很明显的问题,杀谁?(2)Android系统中杀程序的这个刽子手被称作"LowMemory Killer",它是在Linux内核中实现的。这里它实现了一个机制,由程序的重要性来决定杀谁。通俗来说,谁不干活,先杀谁。And ...
Android Low Memory Killer介绍基本原理:Android的Low Memory Killer是在标准linux kernel的OOM基础上修改而来的一种内存管理机制,当系统内存不足时,杀死Bad进程释放其内存。Bad进程的选择标准有两个:oom_adj和占用内存的大小。oom_adj代表进程的优先级,数值越大,优先级越高,对应每个oom_adj都有一个空闲内存的阈值。Android Kernel每隔一段时间会检查当前空闲内存是否低于某个阈值,如果是,则杀死oom_adj最大的Bad进程,如果有两个以上Bad进程oom_adj相同,则杀死其中占用内存最多的进程。 Low ...
应用程序名字,能跟着我们软件中指定的环境走,而不受手机本身的语言环境影响 设置好默认的语言,比如locale,需要重载函数onConfigurationChanged,这个函数在系统语言改变的时候会被调用,在函数里把语言设置成默认的,这样就不会随系统改变了:
private Locale locale = new Locale("en");
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(new ...
本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密算法。
BASE64编码算法不算是真正的加密算法。
MD5、SHA、HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法。我们通常只把他们作为加密的基础。单纯的以上三种的加密并不可靠。
BASE64
按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrar ...