黑苹果安装后的问题解决

没有评论

2015年4月26日 at 下午9:16分类:其他 阅读: 304 次

计算机配置:

ludashi

一、问题:安装后只能进安全模式(-x)

解决:删除\System\Library\Extensions下所有显卡驱动,我删除的是这些:

a1

二、启动后在AppleKeyStore Starting处要卡上3分钟

解决:重新用“小马工具”激活win7

三、无法驱动网卡

win7下到网站下载MAC的驱动:

http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=3&PNid=7&PFid=7&Level=5&Conn=4&DownTypeID=3&GetDown=false#7

在MAC OS中安装,安装后可检测到网卡,但我的还是无法连接,需要在网卡中手动设置硬件速率:

5.03.21

 

黑苹果安全模式下实现真机调试

没有评论

2015年4月26日 at 上午10:18分类:其他 阅读: 350 次

计算机硬件配置:

ludashi

赛扬CPU,只能进黑苹果安全模式(启动时加-x参数)。

参考如下教程安装好黑苹果:

http://bbs.feng.com/read-htm-tid-8027820.html

如无法访问可下载此附件:

10.9.3黑苹果安装教程!驱动已经更新!!! - Mac OSX86 for PC - 威锋论坛 - 威锋网

安装好后的系统截图:

5.50.08

CPU被认成core i5了。xcode为6.0 beta版本:

5.45.49

真机设备为ipad mini,IOS版本为6.1.2越狱版:

5.59.47

下面是真机调试的配置:

1、准备工作:

在用来测试的真机Cydia中添加源:http://apt.weiphone.com,下载适合真机系统版本的AppSync。 我的AppSync是2.2版本。

由于安全模式不能联网,我们先要在windows下下载配置过程中所需要的文件,然后放到MAC OS的相应目录(按上面黑苹果教程进行安装,可在windows下访问MAC OS的文件)

两个附件:

gen_entitlements

Script

这两个文件解压后可以放在MAC OS的桌面,MAC OS桌面在Windows下的路径如下,H是我的MAC OS的安装盘符,ywb是MAC OS中的用户名:

w1

2、启动MAC OS,创建一个证书,用于为生成的程序签名:

打开MAC系统的“实用工具”,点击“钥匙串访问-证书助理-创建证书…”来打开向导:

9.02.29

注意这里的三个地方, 必须要把名称命名为iPhone Developer,将类型设定为代码签名,将”让我覆盖这些默认值”选中。之后的步骤什么都不用改,一路点击“确定”和“继续”,最后完成这个向导就可 以了。

wKioL1RPLfCye7pnAAByNnue2Fc909

3、如果Xcode在运行状态,请先将其 完全关闭。然后打开实用工具中的“终端”

① 进入iPhone SDK目录,指令如下:

cd /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/

备注:不同版本的Xcode最后的版本号不同。在Xcode 6.0中是 iPhoneOS8.0.sdk,未来版本可能版本高一些,早期版本的就低一些。请根据实际情况自己改动上面的路径(如果实在不知道自己的版本号,可以用“ls”指令查看所有文件。)。我的系统实际路径是cd /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/

② 备份原文件,如果电脑设有密码,系统会提示你输入密码(输入后不会显示出来,敲回车即可)

sudo cp SDKSettings.plist SDKSettings.plist.orig

③ 编辑配置文件SDKSettings.plist

 

为了方便修改,我们可以直接用Xcode打开这个文件。首先要打开这个文件所在目录:

open .

在弹出的Finder窗口中双击 SDKSettings.plist ,会启动Xcode的图形界面,展开 DefaultProperties 分 支,将下面的ENTITLEMENTS_REQUIRED和CODE_SIGNING_REQUIRED两个属性改为 NO。

备注:这里可能会遇到系统提示【“SDKSettings.plist” is locked for editing……】,这是因为文件读写的权限问题,解决办法如下:

首先,修改文件夹权限,此时我们所在目录是iPhoneOS8.0.sdk,如果输入指令“cd ..”返回上级目录,“ls -al”查看所有文件,会发现系统显示iPhoneOS8.0.sdk -> iPhoneOS.sdk,这表示iPhoneOS8.0.sdk是指向iPhoneOS.sdk的快捷方式,所以我们要修改的真正文件夹是 iPhoneOS.sdk,指令如下:

sudo chmod -R 777 iPhoneOS.sdk

然后,修改文件夹内所有文件的读写权限:

sudo chmod 777 *

 

现在双击打开 SDKSettings.plist, 你会发现,刚才不能修改的属性可以修改了!

④ 编辑另外一个配置文件Info.plist

cd /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneOS.platform

sudo cp Info.plist Info.plist.orig

open .

在弹出的Finder窗口中双击打开 Info.plist 。分别在 DefaultProperties 分支 下、 RuntimeRequirements 分支下和 OverrideProperties 分支下,共有3处,将全部的 XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext 。

备注:同第③步,可能会遇到权限问题,修改Platforms 文件夹权限和该文件夹内所有文件的权限 即可,步骤同上。

4、准备自定义的生成后脚本

sudo mkdir /Applications/Xcode6-Beta.app/Contents/Developer/iphoneentitlements

cd /Applications/Xcode6-Beta.app/Contents/Developer/iphoneentitlements

拷贝下载的gen_entitlements.txt 到此目录,或在windows下将文件拷贝到此目录,然后继续在MAC OS执行:

sudo mv gen_entitlements.txt gen_entitlements.py

sudo chmod 777 gen_entitlements.py

OK,基本配置到此结束。

 

下面是配置Xcode,需要对每一个要调试的project进行设置:

① 禁用Xcode自动的签名操作

点击工程名称,将工程配置“Build Settings”中所有的Code Signing选项全部设为Don’t Code Sign,如图:

5.53.49

② 添加自定义的生成后脚本 在Build Phases中,点击左上角的”+“号,添加一个”New Run Script Phase“,将下载的script.txt文件打开,将其中的内容拷贝到这里:

5.54.48

注意,如果你的路径与文件中的描述不一样,需要修改为你的实际路径,上图中已经将Xcode.app改为我的实际路径Xcode6-Beta.app,修改完成后xcode需要重启生效。

 

现在接上你的真机设备,如果你像我一样是老版本的设备,还需要修改工程中的如下配置(下面红框部分),将其修改为你 的设备版本即可:

5.53.38

 

Android版本和API Level对应关系

没有评论

2015年4月25日 at 上午9:30分类:软件 阅读: 271 次

CONNECTBOT改造4-增加定时发送文本功能

没有评论

2015年4月24日 at 下午2:02分类:软件 阅读: 269 次

首先描述一下connectbot的调用逻辑。

HostListActivity.java是主机列表的Activity,再这里可以输入主机或点击保存的主机进行连接。会新建一个终端窗口ConsoleActivity:

Intent intent = new Intent(HostListActivity.this, ConsoleActivity.class);

注意:这里不管是新连接还是从现有连接退出再重新进入都会重新创建一个新窗口。

在ConsoleActivity中,是通过Viewflip来实现多个终端窗口的显示,新建窗口时,会调用:

private ServiceConnection connection = new ServiceConnection()

此函数会遍历所有bridge,为每个bridge创建一个view,然后将这些view加入到flip:

for (TerminalBridge bridge : bound.bridges) {

final int currentIndex = addNewTerminalView(bridge);

flip会检测屏幕手势,如果水平左右滑动,会进行不同终端view的切换:

final GestureDetector detect = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {

在每一个view当中,会保存view和bridge的关联。

从上面描述可以看出,如果要实现文本插入和终端绑定,必须在bridge中修改,需要修改的是src\main\java\org\ywb_ipop\service\TerminalBridge.java。

 

1、加入定时器及任务

Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句,否则提示出错,需重新创建

private Timer mTimer = null;
private TimerTask mTimerTask = null;
private Handler mHandler = null;

private static int delay = 1000; //1s
private static int period = 1000; //1s
private static final int SEND_TXT_MESSAGE = 0;

private void startTimer(){
if (mTimer == null) {
mTimer = new Timer();
}

if (mTimerTask == null) {
mTimerTask = new TimerTask() {
@Override
public void run() {

// 需要做的事:发送消息
if (mHandler != null) {
Message message = Message.obtain(mHandler, SEND_TXT_MESSAGE);
mHandler.sendMessage(message);
}

}
};
}

if(mTimer != null && mTimerTask != null )
mTimer.schedule(mTimerTask, delay, period);

}

private void stopTimer(){

if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}

if (mTimerTask != null) {
mTimerTask.cancel();
mTimerTask = null;
}

 

}

在重构函数加入事件处理初始化:

mHandler = new Handler(){

@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case SEND_TXT_MESSAGE:
// 需要做的事:发送文本

...

break;
default:
break;
}
}
};

2、在ConsoleActivity编写发送按钮触发事件

ImageButton sendbutton = (ImageButton) findViewById(R.id.sendButton);
sendbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TerminalView terminalView = (TerminalView) findCurrentView(R.id.console_flip);
TerminalBridge bridge = terminalView.bridge;
if(bridge.isendFlag==true)
{
bridge.stopSend();
}
else
{
String temps = ((TextView) findViewById(R.id.sendText)).getText().toString();
bridge.startSend(temps,1000);
}
}
});

另外需要同步按钮状态,在切换不同的窗口,重新进入窗口时读取bridge状态,更新按钮状态。

关于Android studio的logcat

没有评论

2015年4月24日 at 上午11:26分类:软件 阅读: 228 次

华为手机开启logcat:
拨号界面输入*#*#2846579#*#*进入测试模式,点击projectmeu-点击第三个-后台设置-进入了之后-点击第2个-log设置-选择log开关-打开log开关,并将log级别设置为VERBOSE.
android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSEDEBUG,INFOWARNERROR

1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");

2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.

3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息

4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。

5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。