這檔案控管project檔案的,多人開發會有衝突,小型project還能用人力自行merge,太大就難了,我是使用這github的script當mergetool
https://github.com/simonwagner/mergepbx
此外多人開發storyboard也是個issue,我目前並沒有merge的方法,只能從切畫面當xib來使用。
2015年5月27日 星期三
2015年3月11日 星期三
使用Reveal破解任意iOS app view hierarchy
Reveal這套軟體可以用來破解任意iOS app view hierarchy,內容應該正確 這我沒辦法確認
參考網路上的文章 http://c.blog.sina.com.cn/profile.php?blogid=cb8a22ea89000gtw 雖然只有六步,但這六步其實都不簡單。
1. Jailbreak過後的裝置,這步只能你自己想辦法了,通常照ios等級會有不同的方法。
2. 安裝reveal,找出裡面的libReveal.dylib,並且安裝至mobile內的/Library/MobileSubstrate/DynamicLibraries
reveal選menu的help/show reveal library in finder就有libs了
JB過後的device會有Cydia,Cydia內可以安裝openssh,需等Cydia自己更新後才搜尋的到,網路上說可以加入Repo http://weamdev.org/repo,但我還沒找到加入法就可以安裝openssh了。
而後需要安裝Cydia substrate後,/Library/MobileSubstrate/DynamicLibraries才會出現 我是透過scp將檔案裝入,並且加入一個file named 'libReveal.plist'
{ Filter = { Bundles = ( "com.yourdomain.yourapp" ); }; }
其中bundle name如果是他人app,則你還需在itunes中自行下載他的app,而後在你的硬碟裡找出 ~/Music/iTunes/iTunes Media/Mobile Applications/ 這目錄下你下載的.ipa,更名至.zip。
unzip後,在iTunesMetadata.plist中找出key softwareVersionBundleId
<key>softwareVersionBundleId</key>
<string>"XXXXXXX"</string>
其中XXXXXXX則為你需要的bundle name
3. 重開設備或者re-spring(我不會),而後你就可以在Reveal中享受你的成果了。
還需注意的是,JB過的安裝openSSH device最好換掉root密碼,預設為alpine
參考網路上的文章 http://c.blog.sina.com.cn/profile.php?blogid=cb8a22ea89000gtw 雖然只有六步,但這六步其實都不簡單。
1. Jailbreak過後的裝置,這步只能你自己想辦法了,通常照ios等級會有不同的方法。
2. 安裝reveal,找出裡面的libReveal.dylib,並且安裝至mobile內的/Library/MobileSubstrate/DynamicLibraries
reveal選menu的help/show reveal library in finder就有libs了
JB過後的device會有Cydia,Cydia內可以安裝openssh,需等Cydia自己更新後才搜尋的到,網路上說可以加入Repo http://weamdev.org/repo,但我還沒找到加入法就可以安裝openssh了。
而後需要安裝Cydia substrate後,/Library/MobileSubstrate/DynamicLibraries才會出現 我是透過scp將檔案裝入,並且加入一個file named 'libReveal.plist'
{ Filter = { Bundles = ( "com.yourdomain.yourapp" ); }; }
其中bundle name如果是他人app,則你還需在itunes中自行下載他的app,而後在你的硬碟裡找出 ~/Music/iTunes/iTunes Media/Mobile Applications/ 這目錄下你下載的.ipa,更名至.zip。
unzip後,在iTunesMetadata.plist中找出key softwareVersionBundleId
<key>softwareVersionBundleId</key>
<string>"XXXXXXX"</string>
3. 重開設備或者re-spring(我不會),而後你就可以在Reveal中享受你的成果了。
還需注意的是,JB過的安裝openSSH device最好換掉root密碼,預設為alpine

2014年11月9日 星期日
NFC in Android
All my informations learned from this book
Professional NFC Application Development for Android – Vedat Coskun, Kerem Ok, busra Ozdenizci
I recommended developers in NFC Android to buy one, no matter app layer or driver layer.
It helps me learning from no basic knowledge in hardware to fully understand NFC technology in Android.
Some of my document sentences make no sense because all figures are in the book.
You have to buy one of find it out on the internet.
https://drive.google.com/file/d/0B6BL3rjr8LORVEpHYkJmdVdhMG8
Professional NFC Application Development for Android – Vedat Coskun, Kerem Ok, busra Ozdenizci
I recommended developers in NFC Android to buy one, no matter app layer or driver layer.
It helps me learning from no basic knowledge in hardware to fully understand NFC technology in Android.
Some of my document sentences make no sense because all figures are in the book.
You have to buy one of find it out on the internet.
https://drive.google.com/file/d/0B6BL3rjr8LORVEpHYkJmdVdhMG8
2014年9月29日 星期一
2014年8月1日 星期五
android調用framework函數的用法。
最近剛好要用到android安裝apk所產生的permission granting view 如下
那其實這個view是在framework中產生的,我看光產這個view的class就四千多行,其中相關連的class更是不可能整個移植過來,上網google一下才發現(應該說是忘了)在一般app也能調用framework函數,只是你要確定安裝的device有著正規的framework,否則class會not found。
直接貼出我使用的function。這樣一來就能抓到這個view。
public static View getPermissionView(final Context context) { try { // android.widget.AppSecurityPermissions // AppSecurityPermissions asp = new AppSecurityPermissions(this, // packageName); // asp.getPermissionsView() // 原本在framework的使用方法 // 使用reflection得到class Class clazz = Class.forName("android.widget.AppSecurityPermissions"); Constructor[] constructors = clazz.getConstructors(); for (Constructor c : constructors) { Class[] parameterTypes = c.getParameterTypes(); for (Class cls : parameterTypes) { System.out.println(cls.getName()); } } // loop找出constructor結構 Constructor c = constructors[1]; Object obj = c.newInstance(new Object[] { context, context.getPackageName() }); Method method = clazz.getMethod("getPermissionsView"); View view = (View) method.invoke(obj); // ll_list_permission.addView(view); ScrollView scrollview = new ScrollView(context); ScrollView.LayoutParams params = new ScrollView.LayoutParams( ScrollView.LayoutParams.MATCH_PARENT, ScrollView.LayoutParams.MATCH_PARENT); scrollview.setLayoutParams(params); LinearLayout linearLayout = new LinearLayout(context); LinearLayout.LayoutParams paramsLinear = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); linearLayout.setLayoutParams(paramsLinear); linearLayout.setOrientation(LinearLayout.HORIZONTAL); linearLayout.addView(view); scrollview.addView(linearLayout); return scrollview; } catch (Exception e) { e.printStackTrace(); } return null; }
使用的機制是java的refection,然後抓出constructor來建構這個class,而後invoke他的method,這文章對於reflection寫的很詳盡。
http://godleon.blogspot.tw/2007/09/class-class-java-class-class-jvm-class.html
最後就能傳出漂亮的permission view了。
2014年7月24日 星期四
Supervised Learning
https://drive.google.com/file/d/0B6BL3rjr8LORTjR1LWZEUGxzZDA/edit?usp=sharing
我自行重打了一份文件,關於supervised learning的,內容都從下列文件中得來的。
我自行重打了一份文件,關於supervised learning的,內容都從下列文件中得來的。
上面所有知識素材圖片等都來自下面這些網站
參考資料
中文
•
英文
2014年1月24日 星期五
android view draggable , rotatable , scaleable by android-gesture-detectors framework
nice work by this https://github.com/Almeros/android-gesture-detectors
Basically you just imply this framework and make some flexible modified to a ImageView . there is a sample of his project .
The change i did is made the ImageView to not match the parent to whole screen instead just wrap the content . the hardest part should be rotation . you have to modify the width and height to wrap the dynamic content . it took me some hours to figure out but turned out it was just junior high school math .. bummer .
Basically you just imply this framework and make some flexible modified to a ImageView . there is a sample of his project .
The change i did is made the ImageView to not match the parent to whole screen instead just wrap the content . the hardest part should be rotation . you have to modify the width and height to wrap the dynamic content . it took me some hours to figure out but turned out it was just junior high school math .. bummer .
訂閱:
文章 (Atom)