Eclipse、Android SDK、ADT搭建安卓开发环境

我的环境windows7,选择以下版本。

eclipse-jee-2018-12-R-win32-x86_64.zip

android-sdk_r24.4.1-windows.zip

ADT-23.0.6.zip

Eclipse

下载地址:https://www.eclipse.org/downloads/packages/选择对应的版本包下载即可。

这里我选择的是Eclipse IDE for Java EE Developers,Windows 64-bit版本。

Android SDK

下载地址:http://dl.google.com/android/android-sdk_r24.4.1-windows.zip

ADT(Android Development Tools)

下载地址:https://dl.google.com/android/ADT-23.0.6.zip

有没有感觉挺简单,都是压缩包。

Eclipse安装

下载完毕后,你会在你保存的地方看到一个压缩包文件,这就是eclipse,直接解压缩即可。解压完毕后即可使用,进入文件夹,双击Eclipse图标后,就可以启动Eclipse了,到这Eclipse就安装完毕了。

eclipse在线安装ADT插件

  • 1.启动Eclipse,然后在菜单栏上选择 Help > Install New Software
  • 2.单击 Add 按钮,在右上角
  • 3.在Name(名称)处输入”ADT Plugin”,Location(网址)处输入”https://dl-ssl.google.com/android/eclipse/”
  • 4.点击”OK”
  • 5.在软件对话框中,选中”Developer Tools”复选框,然后点击”Next”
  • 6.在下一个窗口中,您会看到一个要下载的工具列表。单击“Next”
  • 7.阅读并接受许可协议,然后单击“Finish”
  • 8.安装完成后,重新启动Eclipse

eclipse离线安装ADT插件

  • 1.下载ADT插件的zip文件(不要解压)
  • 2.启动Eclipse,然后在菜单栏上选择 Help > Install New Software
  • 3.单击 Add 按钮,在右上角
  • 4.在”Add Repository”对话框,单击”Archive”
  • 5.选择下载的adt-23.0.6.zip文件并单击”确认”。
  • 6.在Name(名称)处输入”ADT Plugin”,单击“Finish”
  • 7.在软件对话框中,选中”Developer Tools”复选框,然后点击”Next”
  • 8.在下一个窗口中,您会看到一个要下载的工具列表。单击“Next”
  • 9.阅读并接受许可协议,然后单击“Finish”
  • 10.安装完成后,重新启动Eclipse

配置ADT插件

  • 1.启动Eclipse,选择windows>preferences>android
  • 2.在选项卡中选择”Browse”,选择之前下载的Android SDK的zip文件(需要解压)的目录(解压后的目录),点击确定
  • 3.点击OK

到这里环境基本搭建完成!!

SDK和ADT都可以国内Android Studio网站下载到:http://tools.android-studio.org/

通过Android SDK Manage添加新的软件包

  • 1.启动SDK解压目录android-sdk-windows\SDK Manager.exe
  • 2.运行后出现如下界面,选择自己需要的Android版本,然后点击”Install X packages”。Installed 表示已经安装、Not installed表示没有安装!!   
  • 3.在新出现的界面中选择如下Accept或者Accept All,然后点击Install。Android SDK 管理器就开始下载并安装你所选的包了,我们等一段时间就OK了!

AVD Manage创建安卓虚拟机

  • 1.启动Eclipse,在菜单栏上点击图标、也可以执行android-sdk-windows\AVD Manager.exe
  • 2.点击Create按钮,进行如下设置,然后点击”OK”

  • 3.选中刚才创建的虚拟设备,然后点击“Start->Launch”,就可以启动 Android 模拟器了。

发表在 服务器 | 标签为 , | 留下评论

【原创】Eclipse调试LogCat无法显示内容

刚刚开始学习Eclipse编写Android安卓app,在调试过程中发现不能用Log.v/d/i/w/e任何方法在logcat不能输出任何东西,空白了。

点击导航栏中的Window,选择Preferences,进入编辑界面

选择Android->LogCat;进入如图所示的编辑界面,将Show logcat view if message priority is atleast:里的下拉选项选择

VERBOSE项,并点击OK!

最后重启Eclipse就能正常显示LogCat的打印信息了

发表在 服务器 | 标签为 , | 留下评论

【原创】vsftp被动模式启动iptables读取目录列表失败

今天开启了centos防火墙后发现我的vsftp不能用了。

首先在防火墙规则文件\etc\sysconfig\iptables中添加如下内容:

-A INPUT -p tcp –dport 30000:31000 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 21 -j ACCEPT

接着在防火墙参数配置文件\etc\sysconfig\iptables-config中打开模块

IPTABLES_MODULES=”ip_conntrack_ftp”
IPTABLES_MODULES=”ip_nat_ftp”

service iptables restart重启防火墙,用lsmod |grep ftp查看模块是否开启。

最后在vsftp配置文件\etc\vsftpd\vsftpd.conf中开启被动模式和端口,添加如下内容:

pasv_enable=yes
#pasv_promiscuous=no
pasv_max_port=30000
pasv_min_port=31000

保存,service vsftpd restart重启ftp。

试试看你的ftp是否复活了。

 

 

发表在 服务器 | 标签为 | 留下评论

【原创】memcache默认11211端口漏洞 未授权禁止访问

今天发现有台服务器的Memcached被外部ip不停攻击,流量竟然能承受最大上G,但是整台服务器收到很大的访问影响。最后发现是因为这台没有默认开启绑定ip的限制。限制都是很简单的事情,犯了低级错误。

方法1、通过参数-l,绑定内部ip,这样外网就无法攻击了。

memcached -d -p 11211 -u memcached -m 1024 -u root -l 127.0.0.1 -c 1024 -P /tmp/memcached.pid

方法2、通过防火墙,我的环境是centos6。

打开\etc\sysconfig\iptables配置文件:

加入以下内容:

#阻止所有11211端口

-A INPUT -p tcp -m tcp –dport 11211 -j DROP

#指定内网ip访问 或者192.168.0.0/24指定网段都可以

-A RH-Firewall-1-INPUT -s 192.168.0.8/32 -p tcp -m state –state NEW -m tcp –dport 11211 -j ACCEPT

重启防火墙即可。

 

发表在 服务器 | 标签为 | 留下评论

【原创】yii2角色权限rbac中auth_rule规则表功能作用与使用

可以发现在auth_item表中有个字段rule_name关联到auth_rule,那它是用来做什么的呢?

都叫rule了,无非就是规则,在角色和角色权限下的规则。

创建\common\components\AuthorRule.php文件内容如下:

<?php
namespace common\components;

use yii\rbac\Rule;//从系统自带规则继承

/**
 * Checks if authorID matches user passed via params
 * 检查authorID是否与已经通过参数的用户匹配
 */
class AuthorRule extends Rule
{
    public $name = 'isAuthor';

    /**
     * @param string|integer $user the user ID.
     * @param Item $item the role or permission that this rule is associated with
     * @param array $params parameters passed to ManagerInterface::checkAccess().
     * @return boolean a value indicating whether the rule permits the role or permission it is associated with.
     */
    public function execute($user, $item, $params)//实现rule抽象类里的extends方法
    {
        return isset($params['userid']) ? $params['userid'] == $user : false;//把传送进来的用户id,与当前登录的用户id对比。
    }
}

\advanced\vendor\yiisoft\yii2\rbac\DbManager.php这里调用

if (!$this->executeRule($user, $item, $params)) {
    return false;
}

\advanced\vendor\yiisoft\yii2\rbac\BaseManager.php文件内checkAccess调用checkAccessFromCache或checkAccessRecursive,里面又调用executeRule,最后调用了execute,有点绕,自己按路径和顺序看看。

protected function executeRule($user, $item, $params)
{
    if ($item->ruleName === null) {
        return true;
    }
    $rule = $this->getRule($item->ruleName);//读取auth_rule表中对应的规则
    if ($rule instanceof Rule) {
        return $rule->execute($user, $item, $params);//执行对应的规则
    }

    throw new InvalidConfigException("Rule not found: {$item->ruleName}");
}

auth_rule表中的规则需要用add来添加,对应data字段是blob类型,保存的时候是先把对象序列化成字符串。读取资源流后用stream_get_contents转化成字符串再反序列化成对象。
以下为添加规则的代码。

$auth = Yii::$app->authManager;
// 添加规则
$rule = new \common\components\AuthorRule;//使用创建的类文件创建对象
$auth->add($rule);//执行后去看看表是不是多了一条记录

auth_rule表规则添加完了 怎么用呢?在控制器添加如下代码:

public function beforeAction($action)
{
   if (!parent::beforeAction($action)) {
      return false;//如果父类验证失败,则返回失败
   }
   $permission = $action->controller->module->requestedRoute;//访问的规则路由
   //允许的路由和对应规则参数传送进去进行,系统会调用添加的rule规则进行判断返回。
   if (Yii::$app->user->can($permission, ['article_id' => Yii::$app->request->get('id'),'userid'=>Yii::$app->user->getId()])) {
      return true;//如该用户能访问该请求,则进行返回
   }

   throw new \yii\web\UnauthorizedHttpException('无权查看');//如果没有该权限,抛出一个异常
}

以上我多了个文章参数,传什么由你自己定,我发现一个路由权限只能自定义一个规则,如果能有多个规则那就更灵活了,如何多个规则有人告诉我吗?

发表在 服务器 | 标签为 , | 留下评论

【原创】windows7定时运行bat文件无窗口模式运行简单方法

windows7计划任务定时运行bat的时候老是弹出一个窗口影响工作,网上搜索一般都是vbs方式,后来我发现只要在对应的计划任务->常规->选择不管用户是否登录都要运行,点确定,之后它运行的时候就不会弹出cmd窗口了。终于不影响工作了,简单方便。

发表在 服务器 | 标签为 | 留下评论

【原创】Yii2使用swiftMailer发送QQ邮件

今天想在监控上做一个yii2使用qq邮箱发送邮件的功能。

一、安装swiftMailer扩展

默认yii 2.0会有这个扩展,如果没有就安装。

composer require –prefer-dist yiisoft/yii2-swiftmailer

或者修改composer.json,require加入: “yiisoft/yii2-swiftmailer”: “*”,

二、开启QQ邮箱IMAP/STMP服务

进入你的QQ邮箱,进入账户界面->设置->账户->开启服务:IMAP/SMTP服务

这里的意思是可以使用imap.qq.com作为邮件接收服务器,smtp.qq.com作为邮件发送服务器。

IMAP是什么?
IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息、下载邮件等。IMAP与POP3类似,都是一种邮件获取协议。区别就是一个有消息反馈,一个没反馈。

根据页面要求发送短信开启后可以获取授权码,相当于发送账号的密码,记得保存下来。

三、修改yii2配置文件

我是修改了advanced\common\config\main-local.php,加入以下内容:

<?php
return [
    'components' => [
      'mailer' => [
         'class' => 'yii\swiftmailer\Mailer',
         'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
         'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.qq.com',  //每种邮箱的host配置不一样
            'username' => 'xxx@qq.com',//用发送开启了功能的邮箱
            'password' => 'xxxxxx',//授权码
            'port' => '465',
            'encryption' => 'ssl',

         ],
         'messageConfig'=>[
            'charset'=>'UTF-8',
            'from'=>['xxx@qq.com'=>'admin']
         ],
      ],

四、控制器或命令行编写发送代码

$url='http://www.jd.com/';
$mail= Yii::$app->mailer->compose();
$mail->setTo('xxx@foxmail.com');
$mail->setSubject("上架了");
//$mail->setTextBody('zheshisha ');   //发布纯文字文本
$mail->setHtmlBody("<br>商品:<a href='".$url."' target='_blank'>购买地址</a>");    //发布可以带html标签的文本
if($mail->send())
 echo "success";
else
 echo "failse";

//批量多发
$users = ['xxx1@qq.com', 'xxx2@qq.com']; 
$messages = []; 
foreach ($users as $user) {
 $messages[] = Yii::$app->mailer->compose() 
 ->setTo($user) 
 ->setSubject('测试主题') 
 ->setHtmlBody('测试内容'); 
} 
Yii::$app->mailer->sendMultiple($messages);

还可以模板方式,发送附件等,具体看官方文档:

https://www.yiiframework.com/doc/guide/2.0/en/tutorial-mailing

 

发表在 服务器 | 标签为 , | 留下评论

【原创】港版ipad2018 ios11忘记功能限制的密码

ipad2018港版为了孩子使用设置了一个密码,结果直接却忘记了。找半天,刷机和远程iCloud抹掉都不适合我会丢失数据,尝试修改备份文件添加密码恢复失败,恢复过程老是中断。最后发现一个老外网站可以很容易解决问题。

iOS7-iOS11 采用pbkdf2-hmac-sha1加密, 非常强壮,可是因为一般密码只有(0000 to 9999) 4位非常简单又短的数字,所以还是非常快就能匹配出来的。

但是目前看应该不适合ios12,因为IOS12最终将限制代码移到了IOS钥匙链中!还好我还没升级到最新版。不然就只能重新刷机或抹掉数据了。希望你们也还没升级!

我windows7

1、ipad连接电脑,打开itunes,备份你的ipad到本地(不要加密)。
xp的文件备份目录是C:\Users\Administrator\Application Data\Apple Computer\MobileSync\Backup,其他系统请问度娘。

2、下载iBackupBot for iTunes软件

3、打开iBackupBot for iTunes软件,点打开文件,找到备份目录。

4、打开左边窗口的目录,点system files,在右边的窗口中的搜索框中录入com.apple.restrictionspassword.plist回车。

5、点击此文件(会弹出注册窗口,点cancel)

 <dict>
 <key>RestrictionsPasswordKey</key>
 <data>
 FklNcq4P3mJYSNjDFWvv2ei2+uE=
 </data>
 <key>RestrictionsPasswordSalt</key>
 <data>
 aSbUXg==
 </data>
 </dict>

打开网站:http://ios7hash.derson.us/

把对应的RestrictionsPasswordKey和RestrictionsPasswordSalt输入到对应的文本框内,点击start searching搜索。最后发现密码就是: 0020,简单吧。

详细内容还是看看老外怎么解释吧。

 

发表在 服务器 | 标签为 | 留下评论

yii2打印print_r、var_dump、echo出现Headers already sent in错误

yii2在打印输出的时候遇到奇葩错误问题;

An Error occurred while handling another error:
yii\web\HeadersAlreadySentException: Headers already sent in

因为Yii2输出模板的时候触发了Yii Response类的异常。

方法选一个:

1、可以在action或函数的开始加

Yii::$app->response->send();

2、在结束结尾加die或者exit可以解决

 

发表在 服务器 | 标签为 | 留下评论

【原创】phpstudy在window下nginx支持php多版本

由于项目使用一些不同的扩展和框架,而对php的版本支持又不同,所以需要多版本运行项目。

由于我原来使用的就是phpstudy来搭建php环境的,nginx整合各个php免安装版本Non Thread Safe(nts)都有了。

当然你可以上http://windows.php.net/download下载最新版。

phpstudy运行的是php5.5n版本,需要运行更多一个php7的版本,phpstudy网上都是说使用apache实现,我的配置都在nginx下,不想动。

需要RunHiddenConsole,用于启动php-cgi,可以实现关闭窗口依然在后台运行。解压后放在phpstudy目录下就可以了。
http://redmine.lighttpd.net/attachments/660/RunHiddenConsole.zip

配置nginx

在要使用php7的修改nginx.conf配置文件中将请求发送到9001端口。

location ~ \.php$ {
 fastcgi_index /index.php;
 fastcgi_pass 127.0.0.1:9001;
 include fastcgi_params;
 fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }

php7由于phpstudy都自带的,找到对应的目录就可以了。

启动脚本

在phpstudy目录下新建启动脚本start.bat。让php7启动在9001端口。

@ECHO OFF

ECHO Starting PHP7.0 FastCGI...
RunHiddenConsole.exe E:/phpStudy/php70n/php-cgi.exe -b 127.0.0.1:9001

新建关闭脚本stop.bat。可以用以下代码关闭,也可以直接用phpstudy关闭。

@ECHO OFF

ECHO Stoping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul

这里麻烦的就是一旦使用phpstudy重启的时候,必须使用start.bat命令启动下php7,当然你自己也可以写个nginx+mysql+php一起重启关闭的bat批处理命令,这样就不用使用phpstudy来操作了。

 

 

发表在 服务器 | 标签为 | 留下评论