1、 安装pptpd
sudo aptitude install pptpd
2、 设置虚拟ip,编辑 /etc/pptpd.conf
localip 172.25.1.1
remoteip 172.25.1.10-20
3、 设置dns,编辑 /etc/ppp/pptpd-options
ms-dns 8.8.8.8
ms-dns 4.2.2.2
4、 添加用户,编辑 /etc/ppp/chap-secrets
#帐号 服务器 密码 IP地址
user pptpd mm1234 *
5、 重启pptpd
service pptpd restart
以上我们完成了vpn服务配置,但不能连接到外网,接下来继续做nat转换设置
7、编辑 /etc/sysctl.conf
net.ipv4.ip_forward=1 //这行的注释去掉
#使得配置立即生效
sysctl –p
8、向iptables添加NAT规则
iptables -t nat -A POSTROUTING -s 172.25.1.0/24 -o eth0 -j MASQUERADE
9、保存iptables配置到文件
iptables-save>/etc/iptables-rules
10、新建 /etc/network/if-pre-up.d/iptables,添加内容
#!/bin/sh
iptables-restore > /etc/iptables-rules
#给予文件执行权限
chmod 0755 /etc/network/if-pre-up.d/iptables
然后使用vpn再配置的时候,必须修改
vpn advanced 勾选 Use Point-to-Point encryption(MPPE)
本条目发布于
2015年3月12日。属于
未分类分类。
出现该问题的原因是:
java的版本不对:
$ sudo update-alternatives –config java
$ sudo update-alternatives –config javac
$ sudo update-alternatives –config javadoc
并将版本指向1.6版本
本条目发布于
2015年2月13日。属于
未分类分类。
该问题的原因是该API的目标activity必须是stardard的activity,否则就不会起作用。
比如在AndroidManifes.mk添加了android:launchMode=”singleTask”就不会起作用
本条目发布于
2014年11月7日。属于
未分类分类。
package/app/Provision
里面的DefaultActivity是一个Home Activity
并且:
<activity android:name=”DefaultActivity”
android:excludeFromRecents=”true”>
<intent-filter android:priority=”1″>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.HOME” />
<category android:name=”android.intent.category.DEFAULT” />
</intent-filter>
</activity>
其priority=1,所以系统执行startHome的时候它会被启动起来
那你可能会说,如果是这样,那这个activity不是每次都会起来。
解决方案是:
// Add a persistent setting to allow other apps to know the device has been provisioned.
Settings.Global.putInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);
Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);
//将这个home activity从系统中删除,这样下次启动自然不会启动了
// remove this activity from the package manager.
PackageManager pm = getPackageManager();
ComponentName name = new ComponentName(this, DefaultActivity.class);
pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
// terminate the activity.
finish();
本条目发布于
2014年11月7日。属于
未分类分类。
错误信息如下:
In file included from external/chromium_org/content/common/android/hash_set.cc:5:0:
out/target/product/mako/obj/GYP/shared_intermediates/content/jni/HashSet_jni.h:10:26: error: extra tokens at end of #ifndef directive [-Werror]
out/target/product/mako/obj/GYP/shared_intermediates/content/jni/HashSet_jni.h:11:26: error: missing whitespace after the macro name [-Werror]
解决方法:
该问题的根本原因是javap这个可执行文件不匹配,不能使用openjava的对应文件。
sudo update-alternatives –config javap
命令即可以查看修改javap使用的默认版本,可以根据提示选择默认的版本。
如果自己安装的jdk的javap不存在,则可以通过以下方法添加javap
sudo update-alternatives –install /usr/bin/javap javap /xx/jdk1.6.0/bin/javap 100
再次执行 sudo update-alternatives –config javap
本条目发布于
2014年11月4日。属于
未分类分类。
官方推荐的方案:
-keepclassmembers class * {
public (org.json.JSONObject);
}
5.0及以上
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
4.0
-keep public class [您的应用包名].R$*{
public static final int *;
}
4.0这个混淆避免方案我不能接受,以为这样就会暴露我们的resource id,因而想到其他方案
-keep public class [您的应用包名].R$*{
public static final int umeng*;
}
只是keep umeng的资源
本条目发布于
2014年10月31日。属于
未分类分类。
在使用BlueVm的vps时,通过测试如下服务器地点的ping值发现,Los Angeles, CA, USA的服务器延时最小
Buffalo, NY, USA
Test IPv4: s1.ny.bluevm.com
Test file: http://s1.ny.bluevm.com/100mb.test
Chicago, IL, USA
Test IPv4: s1.il.bluevm.com
Test file: http://s1.il.bluevm.com/100mb.test
Los Angeles, CA, USA
Test IPv4: s1.ca.bluevm.com
Test file: http://s1.ca.bluevm.com/100mb.test
Atlanta, GA, USA
Test IPv4: s1.atl.bluevm.com
Test file: http://s1.atl.bluevm.com/100mb.test
Dallas, TX, USA
Test IPv4: s1.tx.bluevm.com
Test file: http://s1.tx.bluevm.com/100mb.test
Piscataway, NJ, USA
Test IPv4: s1.nj.bluevm.com
Test file: http://s1.nj.bluevm.com/100mb.test
本条目发布于
2014年10月22日。属于
未分类分类。
$sql = “SELECT * FROM comment” .
” WHERE userid != ? AND targetid = ? AND type = ? AND id > ? limit ?”;
$this->db->query($sql, array(xx,xx..));
这个会出错。
$sql = “SELECT * FROM comment WHERE userid != ? AND targetid = ? AND type = ? AND id > ? limit ?”;
$this->db->query($sql, array(xx,xx..));
而这个不会
本条目发布于
2014年10月20日。属于
未分类分类。
当我们接收不确定长度字符串的数据时,我们就会遇到一个问题:怎么样知道我要接收的字符串结束了呢?
由于字符串太长时,tcp发送会分包发送,这样接收端就没法通过一次read/recieve来完成字符串的接收,
必然得通过循环读取来实现。
1)先发送字符串的长度,再接收,这样只要接收到指定长度的字符串,主动退出接收
2)以特定字符结尾来标识一个字符串结束,比较通用的方法是添加“\r\n”等特殊字符串
本条目发布于
2014年10月20日。属于
未分类分类。
最近在做一个项目时,发现一旦所有activity退到后台,自己的service总是被杀掉。
后来以为通过START_STICKY,setForground等来提高优先级以减少被杀的概率,结果还是被杀。
后来才发现,根本的原因视因为我的这个service的exported=”false“导致的,去掉这个标志,立马正常了。
本条目发布于
2014年10月18日。属于
未分类分类。