当前位置: 编程技术>移动开发
本页文章导读:
▪有关问题小结(23)-获取所有应用的包名 问题小结(23)---获取所有应用的包名首先说一下在非编码情况下的方式,当然在该情况下一般都是我们想看下当前应用的包名都有哪些,此时并不是想做什么功能,仅仅是处于好奇心看看而.........
▪ opensips1.9装配 opensips1.9安装----------------------------------------------
作者: Amaryllis
时间: 2013-3-11
操作系统: ubuntu-12.04-tls
opensips: Opensips-1.9.0-tls
---------------------------------------------
环境.........
▪ 调用pthread_mutex_destroy以后是否需要free 调用pthread_mutex_destroy之后是否需要free翻译自:http://stackoverflow.com/questions/6883032/do-i-need-to-use-delete-after-pthread-mutex-destroy
问:
假设我有以下代码来初始化互斥变量:
pthread_mutex_t *m = new pthread_mu.........
[1]有关问题小结(23)-获取所有应用的包名
来源: 互联网 发布时间: 2014-02-18
问题小结(23)---获取所有应用的包名
首先说一下在非编码情况下的方式,当然在该情况下一般都是我们想看下当前应用的包名都有哪些,此时并不是想做什么功能,仅仅是处于好奇心看看而已。
此时我们可以采用两种方式:1、进入通过cd命令进入data/data目录下,然后用ls命令查看。
C:\Users\Duke>adb shell # cd data/data cd data/data # ls ls
2、进入通过adb 连接上设备以后,通过如下命令查看
C:\Users\Duke>adb shell # pm list packages pm list packages注意:通过这两种方式获取的结果略有不同,注意查看和对比。
然后,我们说一下代码的形式获取已安装应用的包名。
首先第一一个类,用于存储获取的信息
package com.example.apppackages; import android.graphics.drawable.Drawable; public class AppPackageInfo { public String appName=""; public String packageName=""; public String versionName=""; public int versionCode=0; public Drawable appIcon=null; }
然后就是功能代码:
ArrayList<AppPackageInfo> appList = new ArrayList<AppPackageInfo>(); List<PackageInfo> packages = getPackageManager().getInstalledPackages(0); for(int i=0;i<packages.size();i++) { PackageInfo packageInfo = packages.get(i); AppPackageInfo tmpInfo = new AppPackageInfo(); tmpInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString(); tmpInfo.packageName = packageInfo.packageName; tmpInfo.versionName = packageInfo.versionName; tmpInfo.versionCode = packageInfo.versionCode; tmpInfo.appIcon = packageInfo.applicationInfo.loadIcon(getPackageManager()); appList.add(tmpInfo); Log.i("tag", tmpInfo.packageName); }你可以根据自己的要求进行结果的展示或者做自己的功能,我这里只是在获取结果后打印了一下包名,没做任何展示的处理。
[2] opensips1.9装配
来源: 互联网 发布时间: 2014-02-18
opensips1.9安装
----------------------------------------------
作者: Amaryllis
时间: 2013-3-11
操作系统: ubuntu-12.04-tls
opensips: Opensips-1.9.0-tls
---------------------------------------------
环境安装总步骤:
一.操作系统安装(略)
二.opensips下载
用svn down下代码 svn co https://opensips.svn.sourceforge.net/svnroot/opensips/branches/1.9 opensips_1_9
三.mysql安装
见 http://blog.csdn.net/ximen1224/article/details/8457222
四.opensips安装
提示: 1.安装时最好使用ROOT角色,因为需要用到sudo的地方比较多,很多命令都需要sudo。如果习惯在命令前添加sudo的开发者可以忽略此提示。
2.上下按键:指针向上、向下;左右键:返回上层目录、进入下层目录,一直按左键可返回到命令输入界面,之后返回图形界面输入:fg;CTRL-Z:退出到命令界面
1.进入opensips目录
root@ubuntu:cd /home/amaryllis/work/project/opensips/
root@ubuntu:make menuconfig
输入上述命令进入选择框模式如图:
如图:往下执行
选择mysql数据库模块
制定安装目录
如上图:红色部分为指针选择,蓝色部分为指定程序安装目录
提示:程序安装目录最好指定到公共文件目录中,据测试放到用户目录中,启动会出问题,个人出现过BUG,故作此提示
配置完成之后需要对配置进行保存,如下图
下面会提示“db_mysql”模块存在问题,表示您需要安装apt-get install libmysqlclient-dev
安装完之后进入到图形界面进行安装,如下图
安装界面如下:
出现上图内容部分表示安装已经成功完成,可以进行下一步:配置。
提示:如果出现下列内容则恭喜你,你中奖了:
mysql/mysql.h:没有那个文件或目录。这时候就需要安装apt-get install libmysqlclient-dev来解决这个问题。
五:opensips文件配置:
1.9相对于1.7及以下版本配置起来要麻烦一点,但是配置完给人的感觉还是比上述版本要安全、简介一点。
1.修改配置文件opensipsctlrc
root@ubuntu:gedit /usr/local/opensips_proxy/etc/opensips/opensipsctlrc
提示: 如果您对vim非常熟的话就用VIM吧。这个没有要求。本文修改配置文件采取gedit方式。
修改内容如下:
## your SIP domain
SIP_DOMAIN=192.168.99.103
# this parameter.
DBENGINE=MYSQL
## database host
DBHOST=localhost
## database name (for ORACLE this is TNS name)
DBNAME=opensips
## database read/write user
DBRWUSER=opensips
## password for database read/write user
DBRWPW="opensipsrw"
## database super user (for ORACLE this is 'scheme-creator' user)
DBROOTUSER="root"
2.安装数据库
root@ubuntu:cd /usr/local/opensips_proxy/sbin/
root@ubuntu:./opensipsdbctl create
接下来就是创建数据库如下图:
3.检查M4是否安装
apt-get install m4,如果没有安装,那么你懂的。。。
4.生成opensips_residential_2013-3-10_22:52:46.cfg文件
root@ubuntu:cd /usr/local/opensips_proxy/sbin/
root@ubuntu:./osipconfig
输入上述命令进入图形界面,如下图:
选中下列项,如图
上图指针提示项为根据上述选择生成配置文件。
接下来就是修改该文件了,如上图,根据下面的目录找到该文件:
root@ubuntu:cd /usr/local/opensips_proxy/etc/opensips/
root@ubuntu:gedit opensips_residential_2013-3-10_22:52:46.cfg
打开之后就开始修改属性了,需要修改的点如下图:
修改TCP与UDP建立信令链接的地址,修改成你ubuntu所在机器上的IP地址,查看命令:ifconfig
设置模块的位置,需要用绝对路径来指定,具体位置砍图片内容制动的路径。
如果你需要打印日志到单独的文件中以方便管理的话,需要修改下列属性:
log_facility = LOG_LOCAL0修改为 log_facility = LOG_LOCAL1
然后
root@ubuntu:gedit /etc/rsylog.conf
在最后面添加代码local1.* -/var/log/opensips.log
最后重启日志
root@ubuntu:/etc/init.d/rsyslog restart
日志即配置完成。
接下来回到原来的配置文件上来:
#### URI module
loadmodule "uri.so"
modparam("uri", "use_uri_table", 0)
modparam("uri", "db_url",
"mysql://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME
在此处添加红色代码部分,否则运行时会报错。
到此该配置文件基本上告一段落了。
5.设置启动项:
root@ubuntu:cd /home/amaryllis/work/project/opensips/packaging/debian
root@ubuntu:cp opensips.init /etc/init.d/opensips
root@ubuntu:chmod +x /etc/init.d/opensips
root@ubuntu:gedit /etc/init.d/opensips
打开最后修改配置文件如下图:
红色部分为需要删除的部分
"-f ..."为程序程序制定生成时候的配置文件,只有这里指定了,在启动时才能通过该路径去读取该配置文件。否则不读取该配置文件。
6.设置默认项opensips.default
root@ubuntu:cd /home/amaryllis/work/project/opensips/packaging/debian
root@ubuntu:cp opensips.default /etc/default/
root@ubuntu:cd /etc/default/
root@ubuntu:mv opensips.default opensips
root@ubuntu:gedit opensips
打开之后修改配置文件如下图:
六:启动opensips
root@ubuntu:/etc/init.d/opensips restart(重启)
或者
root@ubuntu:/etc/init.d/opensips start(启动)
七:查看进程:
root@ubuntu:ps aux | grep opensips
结果如下图:
查看UDP链接状态
查看TCP链接状态
如果出现结果和上述不一样,那么只能说你配置出问题了,需要仔细进行排查。
至此安装基本上告一段落了,剩下的就是需要你去测试看能否通过了。
[3] 调用pthread_mutex_destroy以后是否需要free
来源: 互联网 发布时间: 2014-02-18
调用pthread_mutex_destroy之后是否需要free
翻译自:http://stackoverflow.com/questions/6883032/do-i-need-to-use-delete-after-pthread-mutex-destroy
问:
假设我有以下代码来初始化互斥变量:
pthread_mutex_t *m = new pthread_mutex_t; pthread_mutex_init(m, NULL);使用结束后调用:
pthread_mutex_destroy(m);
那么我是否需要调用 free(m)
答:
你需要释放内存,pthread_mutex_destroy并不能为你释放。
为什么呢?
因为下面的调用方法是被允许的:
pthread_mutex_t m; pthread_mutex_init(&m, NULL); pthread_mutex_destroy(&m); /* Can't free &m. 这里是引用*/你可能传入一个指针,也可能传入引用,函数并不能区分,因此,如果你声明的是指针,则需要手动free
最新技术文章: