Quantcast
Channel: 應用教學 – Hiraku Dev
Viewing all 94 articles
Browse latest View live

如何找到 App 所安裝的位置

$
0
0

在製作一般的 Cydia 套件時,我們會用 deb 的方式來安裝,

但是 deb 本身在檔案結構那邊已經指定安裝路徑了,

這對於每次安裝路徑都不同的 iOS App 來說,是一個很大的問題,

因為如此一來,我們不能針對特定 App 來安裝修改過的檔案。

 

於是解決方式如下,

我是參考 Sparrow+ 的 preinst 指令作的,原始的 shell script 如下

http://pastie.org/5837801

 

只要輸入 tempLoc=$(find 在指定資料夾搜尋 -name “你要搜尋的東西")

例如以 Sparrow 來說是

tempLoc=$(find /var/mobile/Applications/ -name "Sparrow.app")

 

之後就可以用 echo $tempLoc 得到位置了

再來就可以用 $tempLoc 來控制檔案位置,例如用 mv、cp 等指令移動檔案,

使得 App 當中的檔案被替換。


解決煩人的 iTunes Match 錯誤問題

$
0
0

因為懶得把所有的音樂都放到所有的電腦中,

加上常常忘記把音樂灌進 iPhone 內,所以我前兩天訂閱了 iTunes Match。

 

iTunes Match 基本上滿方便的,

但是我有些歌在上傳的時候會提示有錯誤,於是無法正確地上傳上去

例如一直卡在 Waiting,或者直接出現驚嘆號的圖示

iTunes Match

 

 

所以說,這篇就是來教你如何「正確」解決這個問題

之所以說「正確」是因為,幾乎所有的教學的解決方法都會降低本機上音樂的音質,

所以當你的原始檔案是比 256kbps AAC 還要好的時候,只能屈就於較差的音質…

 

那麼就開始吧!

 

首先我們了解一下錯誤解決原理:

這種錯誤的情況下,音樂其實「已經是上傳上去的了」,但是因為某些因素無法完成 Match

所以我們要作的就是,把音樂轉換格式,讓他重新 Match 並上傳(大部分的教學就做到這裡)

然後再把原本更高音質的音樂替換回本機資料庫

 

那麼,我們先找出有錯誤上傳的音樂所在的專輯

之後在 Finder / 檔案總管 裡面備份整張專輯(也就是複製貼上)到其他地方

iTunes Match

 

然後刪除整張專輯,這時候會問你要不要隱藏 iCloud 上面的音樂,記得要打勾,接著按丟到垃圾桶

刪除就會看到專輯從 iTunes 消失了,接著我們把備份出來的原始檔案轉換成 256kbps 的 AAC 檔案

(在這個範例中我原本是 AppleLossless 的無損檔案,所以轉為 256 kbps 的 AAC 會比較好)

Mac 使用者可以用 XLD 轉換檔案

 

轉換完畢之後,把轉好的檔案拖進 iTunes

接著選那些沒有上傳(上傳失敗)的檔案,按右鍵選擇增加到 iCloud。

iTunes Match

 

等一會兒所有音樂都上傳成功之後,再把整張專輯刪除,

這次不要勾「在 iCloud 隱藏」,但仍然選擇丟到垃圾桶

最後,把原本無損的檔案丟回去 iTunes,這時候會看到曲名重複,但不管他,過幾分鐘就會自動合併回去了

(如果一直沒有合併回去,你也可以在那些檔案再選一次加到 iCloud,他就會掃描並且 Match 了)

這樣,就可以完美解決無法 Match 的問題,並且完全不會降低原始檔案的音質
教學參考文章

PasteboardKey 讓你管理剪貼簿項目

$
0
0

PasteboardKey 是日本tweak專家moyashi的作品,

其主要目的就是,讓你可以管理 iOS 的剪貼板項目

安裝方式:

加入Source http://hitoriblog.com/apt/

或者在我的Soucre裡面有個 moyashi repository,加入之後,

找到 PasteboardKey 並且安裝,這樣就可以了

 

接著,按住鍵盤的地球按鍵,找到 PasteboardKey

他就會把「複製」的文字在這裡管理,你可以直接點擊以使用

 

PasteboardKey

 

要管理/刪除也很簡單,點兩下底下的 Pasteboard / Snippets ,就可以上下移動,或者刪除項目

當然,你也可以直接向右滑動項目以刪除

PasteboardKey2

 

PasteboardKey 還有更強大的地方

在 Pasteboard 的項目往左滑動,會出現這樣的訊息

PasteboardKey

 

這樣項目會跑到 Snippets,類似「我的最愛」那樣

PasteboardKey

 

而 Snippets 可以支援 Javascript 的指令

例如 1+1,當我們在 Snippets 往左滑的時候,執行Javascript,會直接輸出 2

PasteboardKey

而你也可以這樣而直接貼上目前正在聽的音樂等資訊。

 

如果貼上錯了怎麼辦?很簡單,在刪除鍵往左滑,就會復原你的輸入了!

PasteboardKey

 

總評:

這是一個非常棒的 tweak,你可以將常用的 Email,或者固定格式的文字放在這裡

加上有了支援Javascript的功能,可以有更多變化,建議大家都可以裝看看!

另外,跟我的鍵盤tweak沒有相容問題,也支援 KeyboardAccio,所以不必擔心!

 

 

更多設定方式及玩法,請參考原作者blog

http://hitoriblog.com/?p=15567

加速百度網盤下載速度的方法

$
0
0

雖然台灣沒有什麼人在用百度網盤,

但是因為我有些檔案需要傳給在大陸的開發者,加上 Dropbox 什麼的他們可能沒辦法上去,

總之就是有用到就是了…

 

而在剛剛我下載一個分割的壓縮檔時,發現某些Part比較快(1M),某些卻慢的只有 10k左右

於是稍微看了一下下載網址,發現有兩種版本:

http://119.147.249.203/cdn.baidupcs.com/file/

http://qd.cache.baidupcs.com/file/

問題就出在這裡,只要將 119.147.249.203 的網址,file後面的字串照樣不動

但前面改成 qd.cache 的版本,這樣就可以加速下載了…

 

立圖為證

Thunder

 

#2013 . 08 .06 更新

http://113.107.248.7/cdn.baidupcs.com/file/

這個網址似乎也可以加速,如果上一個沒辦法加速的話可以試試看這個

LINE 在中國會過濾部分敏感詞

$
0
0

雖然自從奇虎跟LINE合作之後,

不少人就開始質疑LINE是不是接下來會「入境隨俗」,配合一些中國的「在地化政策」

(奇虎就是作 360 系列的那個,他們早期最有名的是一個叫做 3721 的流氓軟體)

不過沒想到這麼快就出現了…

總之,今天看到有中國的網友貼了這樣的圖片

一開始我只是好奇說這個東西到底是怎麼作的?

是在本機審查,還是在雲端會審查你的對話內容?
LINE

 

這讓我開始有了興趣,於是弄了一個可以翻入「牆內」的VPN,但是怎麼測都測不出來,

於是放棄正規的測試方法,我想可能是因為我沒有綁定電話的關係

(使用簡體中文的 LINE 是必須綁定電話的,否則無法使用,有興趣的可以登出之後切換語言試試)

 

不用正規的方法,當然就用我的專項:mobile substrate hook,

不過在那之前,我們先猜測一下這個敏感詞偵測的可能性:

1. 只對中國大陸的使用者有效

2. 對全世界所有人都有效,只是在中國大陸才會出現上圖的警告

為了驗證是 1 還是 2,我把目標轉為了解它的驗證機制,

 

首先,先檢查一下 LINE app 的檔案內容

於是發現了這個東西:
LINE 敏感詞
注意這裡是繁體中文顯示的,代表說這個訊息是存在在本機內,而且有可能是對所有使用者審核

(只是目前除了中國大陸以外不會出現訊息)

根據上面的 「badWords」這個關鍵字,我找到了一些有趣的 class 跟 method ,

過程就省略不說了,有興趣的可以去挖寶,但下面我直接給結論。

 

結論是:

LINE 會對你輸入跟接收到的文字內容審查,出去跟進來分別用一個 method 檢查

審查不分國家,我測試到的情況是 台灣帳號+日文語系+沒有綁定電話號碼+沒有綁定 Facebook ,

即使上面條件一項跟中國都無關, LINE 依然對我進行關鍵字審查。

而審查是在本地進行的,LINE 會在網路上下載一個敏感詞列表,之後對內容進行比對,

如果有符合的內容,就會出現錯誤(在中國大陸)

 

以下是我抓出來的審查關鍵字列表

http://pastebin.com/DA4qAFZv

 

以下是證明 LINE 會審核對方輸入的內容(第一行)、加密的敏感詞列表(第三行)、解密的敏感詞列表(最下面)

LINE 審查

 

所以說,我認為LINE 可以下課畢業了,

對於這種會審核使用者內容的通訊軟體,我們是否還有再信任的理由?

 

 

Update 1. 05/21  PM 9:21:

我將一些用詞不正確的內容修正了,LINE 並沒有「監控」使用者,

就目前的情況來看,他會在本機端審核使用者輸入的內容

TCFail 10.9 修改版

$
0
0

用過 zonble 大大的 TCFail 都知道這是一個修改系統字體的好東西。

不過因為 10.9 裡面增加了一個檔案來控制字體,所以原本的方法失效了。

於是在這邊提供我自己修改的版本,支援 10.9,並加上還原功能,

即使亂修改也能還原成原本的系統狀態。

當然,10.9 內建的新字體:手札體 跟 翩翩體 也同樣加入到選單中了。

下載位置

TCFail 10.9

Geektool 天氣設定模組修正版

$
0
0

之前寫過一篇文章講過Geektool。

可惜好景不長(?) 這個方法在幾個月前失效了,導致 icon 顯示不出來

剛好這兩天重新研究一下,開發出了新的版本…

主要內容還是請參考舊文

不過請把舊的 Geektool widget全部刪除,並且改用最新版的 Geektool

Mac AppStore 上面的版本是舊版的,請不要再用那個,直接到官網下載吧

官網:http://projects.tynsoe.org/en/geektool/

 

接著到 這裡 下載新版的 Geeklets,全部開啟就會跟下圖一樣了,記得調整你所在的位置

Geektool2

Dictionary.appender 讓你安裝非官方字典到 iOS 7

$
0
0

iOS 7 有個新功能是可以讓你從網路上面下載字典來使用。

對於中文使用者來說好處是終於有中英字典了,不過可惜的是他是簡體中文的。

而 Dictionary.appender 這個神奇的 App 可以讓我們安裝任何的字典檔…

 

因為這個軟體運用的原理我不是很清楚,建議大家先趕快下載以免被下架

首先,先到 AppStore 下載,安裝之。

連結:https://itunes.apple.com/ca/app/dictionary.appender/id650562573?mt=8

 

安裝好之後進到 iTunes 的手機同步設定裡面,選擇 App -> Dictionary.appender -> 加入,

再選擇字典檔。
Add Dictionary
字典檔來源可以是 Mac 本身的字典 (放在 /Library/Dictionaries/)

或者在網路上有人分享的 iOS 用字典檔案

 

丟進去之後打開 App,找到你剛剛丟進去的檔案,如果沒出現就按右上角按鈕重新整理看看
安裝字典

 

按下安裝,安裝過程不要關閉 App,也不要拔掉傳輸線

(原文寫的,我也不知道為什麼)

Install Dictionary
安裝好之後,去「任何一個」App裡面,看到英文單字選定,

按下「定義」之後,就會出現例如下圖的畫面

IMG_0134

 

搞定收工。

 

原始來源:http://techinch.com/blog/Install-Any-OS-X-Dictionary-On-iOS


小技巧:讓 OS X 的檔案排列順序回到舊版方式

$
0
0

之前發現自從升級到 Mavericks 之後,

檔案的排列方式都是中文在前面,英文反而在後面,這樣很不方便。

其實有一個簡單的方法可以讓順序回到舊版的樣子

 

例如 Mavericks 的應用程式排列會變成這樣…

一堆不常用的東西因為中文順序在前面反而跑到前面來。

Sort

 

要改回去很簡單,去系統偏好設定 > 語言與地區 > 列表順序 這邊改成通用就好了!
Sort Settings
 

因為有些東西的順序不會馬上反映,建議弄完之後重新開機或者重新登入,設定才會正確套用喔!

小技巧:在預覽程式顯示更多的輸出格式

$
0
0

剛剛想要把一些照片轉成 BMP 檔案,結果預覽程式的輸出沒有 BMP

我又不想開 Photoshop 就只是為了轉個圖

後來爬文找到教學說先按住 Option ,再點開選單,就會出現隱藏的選項

結果就會出現 BMP、ICO… 甚至 Photoshop 等格式了!

解決 dandelion 首頁縮圖在文章內出現的問題

$
0
0

基本上這篇是給我自己看的,除非你也跟我用一樣的 WP 主題不然可以無視XD。

因為我之前會有設定首頁縮圖之後,內文也重複出現一樣縮圖的問題。

要解決這個問題很簡單,修改這個檔案就行了:

./wp-content/themes/dandelion/includes/post-template.php

 

在原本出現 post_box_img 的地方

改成這樣

<?php
if( is_home() ) {the_post_thumbnail('post_box_img');} if(!is_single()){
?>

就會讓縮圖只出現在首頁了。

解決IMKQIM(或者其他拼音輸入法)在 Word 裡面切換的問題

$
0
0

Word for Mac 裡面輸入法切換的問題一直讓人頭痛,

雖然我之前有寫過文章教大家怎麼改,但是他還是有些副作用在。

後來我發現更慘的是,因為我平常有三種輸入法:英文、拼音(IMKQIM)、日文,

而每次開啟 Word 一定會自動變成日文,都要再自己切回去中文,非常麻煩。

 

後來想一想,發現應該是因為第三方輸入的拼音都是大陸人作的,

所以預設其實是簡體輸入法,因此在繁體中文的 Word for Mac 裡面不會變成優先輸入法。

知道問題在哪裡之後就好搞定了。

 

因為我自己是用 IMKQIM,所以我就用這個當例子,

如果你是用其他第三方的拼音輸入法(百度、搜狗)找對應的檔案自己改看看,

首先找到:

/Library/Input Methods/IMKQIM.app/Contents/Info.plist

複製到桌面之後,用可以開啟 plist 的程式開啟(例如 Xcode),或者你也可以用 TextWranger 開啟(免費)

之後檢查裡面的項目,如果有 Hans 的就改成 Hant,

例如 zh-Hans 就改成 zh-Hant。

另外有 Simp 的改成 Trad,例如 smSimpChinese 改成 smTradChinese

檢查完之後替換原本檔案,之後登出系統再登入,這樣我們就成功欺騙系統說這個輸入法是繁體中文的了

如此一來,在 Word 裡面他的優先順序就會大於日文,使得 Word 不會再每次變成日文輸入法。

 

 

yourchili 的 nginx 編譯設定

$
0
0

yourchili 是一個快速簡單的 nginx 安裝方案,

身為懶人的我因為覺得 nginx 比較輕巧,但是又懶得設定一大堆,

所以當初就用 yourchili 裝一裝收工。

不過最近由於需要加上一個 with-http_stub_status_module 的參數重新編譯,

而如果直接下 ./configure 的話檔案位置都會抓錯,所以參考了一下 yourchili 原本設定的參數

長的像是這樣:

./configure --prefix=/srv/www --sbin-path=/usr/local/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --error-log-path=/srv/www/nginx_logs/error.log --http-log-path=/srv/www/nginx_logs/access.log --user=www-data --group=www-data --with-http_ssl_module --with-debug --with-http_stub_status_module

 

我在最後面加上了 –with-http_stub_status_module ,讓我的 linode 的 Longview 可以抓到 nginx 的記錄

就是為了這玩意讓我搞半天… Orz

iOS 7 手動恢復簡訊 (sms.db) 方法

$
0
0

因為 iOS 7 越獄出來了,所以玩了一下。

不過每年越獄出來,我習慣都會先去乾淨重刷,然後手動還原資料,

畢竟我的資料從 iPhone OS 2.0 (那時候還不叫 iOS)一直上來到 7.0,東西久了難免有些雜七雜八的在裡面。

對於一般使用者來說,Apps 存檔只要用 iFunbox 就可以備份還原了

雖然 iTools 也可以,不過個人不喜歡用,對他有疙瘩。

其他東西大致上用 iCloud 就可以同步了,所以沒啥問題,

最麻煩的是簡訊,簡訊的 database 常常改版而且除了 iTunes 之外,只能手動恢復。

 

所以這次難得恢復成功來寫個筆記。

1. 首先先抓出 SMS 整個資料夾

2. 之後重刷,裝好 iFiles ,如果習慣用指令改權限就裝 OpenSSH

3. 還原 SMS 的資料夾之後整個改成 766 權限(我自己懶得一個一個測所以用777,不過原始應該是766)

4. 還原好之後不要打開簡訊程式,先刪除 sms.db-shm 跟 sms.db-wal

5. 直接重新開機,就成功了

 

這次(其實好像是 iOS 6之後)跟以往不大一樣,以往是丟 SMS.db 回去改權限,然後respring就好了

但是該死的那兩個檔案似乎是快取之類的,會吃掉你顯示的簡訊,所以務必要刪除再重開機~

以上,祝大家還原順利XD

在 iOS 7 獲得 UDID (需越獄)

$
0
0

iOS 7 對開發者來說一個頭痛的問題就是:UDID 完全無效了。

雖然 iOS 5 開始 Apple 就逐漸禁用 UDID,

但是到 iOS 6 之前其實還是可以偷偷用 [[UIDevice currentDevice] uniqueIdentifier] 呼叫,

只是應該是不能上架,所以只有 JB 軟體在用。

 

不過現在連這個方法都被擋了,

還好我偷看了 Cydia 的 source code ,發現原來可以繞道而行

首先寫上這行:

static CFStringRef (*$MGCopyAnswer)(CFStringRef);

之後在要抓 UDID 的 function 前加上:

void *gestalt(dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_GLOBAL | RTLD_LAZY));
$MGCopyAnswer = reinterpret_cast<CFStringRef (*)(CFStringRef)>(dlsym(gestalt, "MGCopyAnswer"));

最後用

(id)$MGCopyAnswer(CFSTR("UniqueDeviceID"));

就可以抓到 UDID 了!

 

不過身為懶人當然直接 hook UIDevice 比較快(炸)

static CFStringRef (*$MGCopyAnswer)(CFStringRef);
%hook UIDevice
-(NSString *)uniqueIdentifier
{
	if (kCFCoreFoundationVersionNumber > 800)
	{
		void *gestalt(dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_GLOBAL | RTLD_LAZY));
		$MGCopyAnswer = reinterpret_cast<CFStringRef (*)(CFStringRef)>(dlsym(gestalt, "MGCopyAnswer"));
		return (id)$MGCopyAnswer(CFSTR("UniqueDeviceID"));
	}
	else
		%orig;
}
%end

之後就可以繼續用 [[UIDevice currentDevice] uniqueIdentifier] 爽一年了 XDXD

 

 


iOS tweak 支援 arm64 的小技巧整理

$
0
0

新年第一天寫個一篇小整理,一方面怕自己忘記,

一方面幫助其他開發者找出一些問題。

 

首先,參考 iPhone Development Wiki 的教學,上面寫的落落長

其實就簡單兩件事,第一個是改 makefile:

ARCHS: armv6 arm64
TARGET := iphone:7.0:2.0

加到 makefile 的 include 前面

不過我都設不一樣,一來是我在 4.2 以前還不會寫程式,所以根本沒有需要支援 XD

二來是我這些東西應該也沒有要支援 armv6 的必要,

所以除了 armv6 改成 armv7 外,TARGET 也改成:

TARGET = :clang::5.0

視情況有些會用 6.0,這樣的話不必支援太低版本的 SDK,出問題會比較簡單一些

 

第二件事情很重要,就是重新下載 theos 、ldid 跟 libsubstrate.dylib

尤其是如果之前有用過非官方的 libsubstrate 的話,一定要重弄

因為我就浪費了一天去 debug,結果最後發現是非官方 libsubstrate 有問題。

如果你很懶的話,記得參考 r-plus 的安裝 script ,直接安裝好。

 

即使 compile 完之後,記得還要做幾件事:

1. 在 arm64 的機器上面測試

2. 在 armv7 的機器上面測試(推薦 iPhone 4)

3. 在 iOS 6 上面測試(推薦 3GS、iPhone 4)

4. Preferences Bundles 要測試(如果有的話)

5. 重新抓 UDID (如果你有要用的話)

 

因為有些東西你用 arm64 compile 完之後在 armv7 可能會出問題

 

所以記得,交叉測試是必須的…不然會跟我一樣整天推送 update OAQ…

如果真的不行的話,再去動 makefile,去弄兩個 binary 出來,

確定 arm64 的版本跟 armv7 的版本分別可以正常執行,然後在 postinst 放這個指令:

export version=$(dpkg -s cy+cpu.arm64 | grep Version | sed -e 's/Version: //')
if [[ $version == 0 ]]; then
	echo "arm64"
fi

從 deb 的 postinst 下手,讓 arm64 的去安裝不同檔案即可,這樣是有點小作弊啦

不過如果在還沒有辦法解決相容性的情況下,這樣做可以讓東西趕快先上線。

以上就是簡短心得,歡迎交流(?

使用 SublimeClang 搭配 iOS tweak 的方法

$
0
0

因為個人用 Sublime Text 3 來寫 tweaks,

但是跟一般用 Xcode 寫 App 比起來,除了沒有自動補完之外,

也沒有在編譯前糾錯的功能。

 

不過 Sublime Text 的優點就是有很多外掛可以使用,

昨天弄了一整天,終於搞定了。

 

先來說我的開發環境:

系統跟編譯器還有 SDK 部分是 OS X 10.9 + Xcode 5 + iOS 7.0 SDK

Sublime Text 這邊是 3.0 ,搭配 theos logos 來寫 tweak。

 

首先,先在 Sublime Text 3 選擇 Preferences > Browse Packages …

然後在終端機 cd 到該目錄,輸入

git clone --recursive https://github.com/quarnster/SublimeClang SublimeClang
git pull && git submodule foreach --recursive git pull origin master

然後編譯 SublimeClang,或者在這邊下載我編譯好的檔案

解開壓縮之後把兩個 dylib 丟進去剛剛的 SublimeClang/internals 裡面

 

之後到 Sublime Text 3 的 Preferences >  Package Settings > SublimeClang > Settings – Default

找到 options : 加入下面這段

//For logos
"-x",
"objective-c++",
"-c",
"-DTARGET_IPHONE=1",
"-O2",
"-include", "/opt/theos/Prefix.pch",
"-I", "/opt/theos/include/",
//For iOS
"-isystem", "/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/",
"-isystem", "/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/c++/4.2.1/",
"-I", "/Applications/Xcode.app/Contents/Developer/usr/lib/llvm-gcc/4.2.1/include",
"-arch","armv7",
"-isysroot", "/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk",
"-D__IPHONE_OS_VERSION_MIN_REQUIRED=__IPHONE_4_3",
"-miphoneos-version-min=4.3",

 

再找到 analyzer_commandline,加入下面這段

//Theos Logos
"/usr/bin/xcrun",
"-sdk", "iphoneos",
"clang++",

最後再找到 analyzer_extensions ,加上

"x",
"xi",
"xm",
"xmi"

就好了

 

不過這時候 theos logos 會被認為是錯誤,但自動補完的部分是正常的,

這時候你可以選擇發揮無視技能,或者按照接下來的教學做

 

 

去 SublimeClang/sublimeclang.py

找到 295 – 299 行,應該長這樣:

errString = "%s%s\n" % (errString, err)
if diag.severity == cindex.Diagnostic.Warning:
   warningCount += 1
elif diag.severity >= cindex.Diagnostic.Error:
   errorCount += 1

改成這樣

if not err.endswith("expected unqualified-id") and not err.endswith("missing context for method declaration"):
   errString = "%s%s\n" % (errString, err)
   if diag.severity == cindex.Diagnostic.Warning:
        warningCount += 1
   elif diag.severity >= cindex.Diagnostic.Error:
        errorCount += 1

 

再找到下面一點點的

add_error_mark(
     diag.severityName, filename, f.line - 1, diag.spelling)

 

改成這樣:

if not err.endswith("expected unqualified-id") and not err.endswith("missing context for method declaration"):
      add_error_mark(
           diag.severityName, filename, f.line - 1, diag.spelling)

 

就好了,重要的是主要注意原本的 code 那邊 tab 要空好就行了

 

 
參考資料:

在 Sublime Text 3 中使用 SublimeClang 插件

SublimeText 2をiOS向けにカスタマイズ:コード補完,構文エラー表示

SublimeClang user preferences json for iOS + theos

在 Xcode 4 以上使用 Property List Editor 的方法之二

$
0
0

方法之一在這邊 ,這個方法必須要每次更新 Xcode 就重新做一次,比較麻煩

加上在 Xcode 4.3 之後 Xcode.app 改成在 /Applications 裡面了,更加難搞,

所以研究出了方法二。

 

方法二是直接把需要的 Frameworks 丟進去 Property List Editor.app 裡面

因此使用之後以後不僅不用每次都重包,更可以放在電腦的任何位置執行

 

需要的條件:目前你使用中的 Xcode 4 或 5 、舊版 Xcode 3 (Xcode 3.2.6 可以在這裡下載)

接著一樣按照方法一的方式,用 Pacifist 抓出 Xcode 3.2.6 裡面的 Property List Editor.app 本體,

以及必備的 PlistEdit.framework 都抓出來

 

然後到 /Applications/Xcode.app/Contents/OtherFrameworks

也複製出以下檔案

DevToolsCore.framework

DevToolsCParsing.framework

DevToolsFoundation.framework

DevToolsSupport.framework

JavaKit.framework

接著把這些 .framework 丟進去 Property List Editor.app/Contents/Frameworks (缺少的資料夾自己建立),

就變成如圖所示
Plist Frameworks

 

然後用 Hex Field 或者你喜歡的十六進位編輯器,

打開 Property List Editor.app/Contents/MacOS/Property List Editor

選擇全部取代文字,把

../../../../../Library/PrivateFrameworks/

換成

.././././././././././././././/Frameworks/

Hex Field
最後存檔就好了!這樣一來,我們已經把必備的 Frameworks 丟進去 App 裡面

然後也把讀取 Framework 的地方改掉了,

所以這樣 Property List Editor 就不會因為抓不到必備的 Framework 而無法在 Xcode 5 以上開啓了

為甚麼 APT package number 爆量時,出錯的都是 modmyi

$
0
0

最近比較紅的一個 Cydia 問題是:

「Wow, you exceeded the number of package names this APT is capable of」的問題

如果你想解決這個問題,我會推薦你看 頭號哆啦迷 的這篇教學。

 

不過伴隨著的一個情況是,為甚麼在這個問題出現後,底下總是會有類似「Modmyi」出錯的訊息呢?

因為 Modmyi 隨之顯示出錯的原因,導致有些人對 Modmyi 有點誤解,而有了「刪除 Modmyi 就可以解決」的迷思。

不過,在這裡我關注的是,為甚麼出錯的總是「Modmyi」?

 

簡單研究一下之後,我得到了解答。

首先大家必須先知道,APT(Cydia 的 Source 機制)最多可以容許有 65536 個 Package (套件)

所以我們先來算一下內建的三大 Source 有多少個 Package 吧…

 

計算方法:從 Package List 裡面搜尋「Package: 」這個關鍵字,看有幾個搜尋結果。

以下是 2014 年 3 月 17 號的數據:

Bigboss:13545

Zodttd:13713

Modmyi:….哇是 22195 !

 

三大 Source 加起來是 49453 個 Packages,(內建的 Saurk source 加超雪只有 300 多個 Package,所以乾脆忽略不計)

再根據強力的計算 ,65535-49453 = 16082 ,這大概就是你可以再另外加的 Source 裡面所有 Package 的數量

再看下面的圖,兩個國外盜版源加起來約 13691 個 Packages,再隨便加兩個大陸盜版源就爆了

Package Lists

 

 

好,那講回重點,既然知道爆了,那為甚麼出錯的總是 Modmyi?

原因很簡單,APT 的機制會先抓完所有的 source,之後再 MergeList (合併所有列表)

一旦 Modmyi 的合併順序在比較後面,而前面已經合併超過了 65535-22195 = 43340 個套件資料的話,就會導致錯誤的是 Modmyi

(其實在 Modmyi 後面才合併的也會出錯,但是當出錯時就停止合併直接跳警告了,所以才會覺得 Modmyi 是兇手)

 

看不懂嗎?講個簡單的比喻,有個電梯限重 1000 公斤,Modmyi 這個胖子重 300 公斤,

一旦電梯快滿了才讓 Modmyi 進去,當然每次都會覺得是 Modmyi 讓電梯超重的。

但真的嗎?其實只要不要載那麼多人(不要加那麼多 Source),Modmyi 還是可以正常搭電梯的。

當然你也可以直接把 Modmyi 殺了,其他人就可以全部塞進去電梯裡面,但是 Modmyi 胖不是虛胖,

如果你哪一天需要他,或者其他人需要他(套件的 Depends 依賴)時,就會發生找不到套件的錯誤。

 

所以說… Modmyi 真的是無辜的,他只是肥了點而已,但當 APT 爆量時,常常犧牲的就是他…嗚嗚

iOS JB 惡意軟體 Unflod.dylib

$
0
0

國外消息指出,他們發現了一個 iOS 的惡意軟體,但只有 JB 才有可能中獎,沒 JB 的可以上一頁了。

消息來源:

iOS Malware Campaign “Unflod Baby Panda"

【注意】脱獄したiPhoneやiPadからApple IDとPassを中国に送信するマルウェアが発見される

 

原文分析軟體什麼的就懶得說了,直接給大家結論

總而言之,這個 Unflod.dylib 會竊取你的 Apple ID 帳號密碼,

 

移除方法很簡單:刪除 /Library/MobileSubstrate/DynamicLibraries/Unflod.dylib 之後重新開機就好了

但是如果有中標的話,一定要去改 Apple ID 密碼,不然密碼很可能已經被盜了。

 

另外,原文消息指出這些資料是傳到中國瀋陽的伺服器,

然後也有消息指出是中國盜版源內藏此軟體的,但是這部分未確認是哪個源。

Viewing all 94 articles
Browse latest View live