<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-296940553090947970</id><updated>2024-09-21T11:57:59.219-07:00</updated><category term="專案"/><category term="Andriod"/><category term="GIT"/><category term="App Server"/><category term="雜記"/><category term="iPhone"/><category term="程式設計筆記"/><category term="程式設計的藝術"/><category term="Retro"/><category term="Unity3D"/><title type='text'>OB&#39;S BOOTLEG</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-7366269649482142237</id><published>2021-09-14T19:05:00.004-07:00</published><updated>2021-12-22T18:16:17.087-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="雜記"/><title type='text'>阿扁台南門事件</title><content type='html'>&lt;p&gt;2021/9/13&lt;br /&gt;陳致中(臉書)：&quot;家父母台南住家門外上週晚間遭不明人士放置可疑包裹物！已報警處理！因動機及企圖不明，我感到擔憂。&quot;&lt;br /&gt;&lt;a href=&quot;https://news.ltn.com.tw/news/society/breakingnews/3670731&quot;&gt;https://news.ltn.com.tw/news/society/breakingnews/3670731&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://news.ltn.com.tw/news/politics/breakingnews/3670670&quot;&gt;https://news.ltn.com.tw/news/politics/breakingnews/3670670&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;陳致中(臉書貼文留言)：&quot;公文紙袋是凱達格蘭基金會台北辦公室前幾天寄資料給父親的，資料取出後、紙袋就資源回收，推測是被不明人士從垃圾場撿回，裝入衣物、工具後放到父母住處門外顯眼處，很明顯是要讓父母帶回家裡...&quot;&lt;br /&gt;&lt;a href=&quot;https://news.ltn.com.tw/news/politics/breakingnews/3670684&quot;&gt;https://news.ltn.com.tw/news/politics/breakingnews/3670684&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://www.ctwant.com/article/139555&quot;&gt;https://www.ctwant.com/article/139555&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;陳致中(臉書轉陳水扁聲明)：&quot;感謝警方今天傍晚才來詢問...距9月7日晚上請大樓管理中心幫忙報案，已事隔多日。因為今年是911事件20週年。 阿扁對收到不明郵包，衣服包藏有硬硬的東西，當然心生恐懼。阿扁怎麼知道該東西是不是危險物品，或者有沒有針對性。幾天過去了，沒有看到警方來到現場並訊問相關人等，阿扁才在昨晚去電派出所所長，並在早上要求大樓管理中心督導務請警方積極辦理....籲請警方充分瞭解當事人每天生活在恐懼之中的心情，從速偵辦為感！&quot;&lt;br /&gt;&lt;a href=&quot;https://news.ltn.com.tw/news/society/breakingnews/3670731&quot;&gt;https://news.ltn.com.tw/news/society/breakingnews/3670731&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;2021/9/14&lt;br /&gt;台南警方：&quot;此包裹是9月7日當天，陳家女看護將家中不用紙袋放到一樓回收室，但她當時把一件回收衣服塞在紙袋後忘了取回，因紙袋上有陳水扁收的字樣，有人才將紙袋放回陳家住處前，目前仍在調查刷子(*)是誰放入的。&quot;&lt;br /&gt;&lt;a href=&quot;https://udn.com/news/story/7315/5743999&quot;&gt;https://udn.com/news/story/7315/5743999&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;台南市警察局第一分局分局長方國璽：&quot;...經檢視監視器畫面比對後，發現紙袋內裝有衣服1件、毛刷(*)1支，不具危害性...警方受理此案後未能主動向報案者說明偵辦進度，造成陳水扁及家屬不安，他向陳水扁及家屬表達歉意，並已向市警局自請處分，分局後續將主動進行關懷慰問並加強周邊安全維護。&quot;&lt;br /&gt;&lt;a href=&quot;https://www.cna.com.tw/news/asoc/202109140062.aspx&quot;&gt;https://www.cna.com.tw/news/asoc/202109140062.aspx&lt;/a&gt;&lt;br /&gt;(*)參考其他新聞報導為鐵刷/電動刷子&lt;br /&gt;&lt;br /&gt;台南市警察局長方仰寧：&quot;...警方對於陳前總統家中放置牛皮紙袋的事没處理好，也沒有向陳報告偵辦進度表示歉意。並對台南市警一分局長方國璽記過處分，後續並由督察室調查，追究相關責任。&quot;&lt;br /&gt;&lt;a href=&quot;https://udn.com/news/story/7315/5744260&quot;&gt;https://udn.com/news/story/7315/5744260&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;台南市警察局新聞稿：&quot;...前總統住處門口遭人置放牛皮紙袋案，本局第一分局受理報案後雖立即展開偵處，保全證物送驗...惟於偵辦過程中第一分局未依三線系統報告警察局，亦未適時向陳前總統說明案件之偵處進度，致讓陳前總統心生疑懼...分局長方國璽記過2次...查究相關人員疏失責任。&quot;&lt;br /&gt;&lt;a href=&quot;https://udn.com/news/story/7315/5744260&quot;&gt;https://udn.com/news/story/7315/5744260&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;不明好(or有)心人士：(缺述)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;最後 &quot;分局長記過2次&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/7366269649482142237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/7366269649482142237'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2021/09/blog-post.html' title='阿扁台南門事件'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-7105805520508429640</id><published>2017-05-19T01:47:00.000-07:00</published><updated>2017-05-19T01:54:45.214-07:00</updated><title type='text'>Windows 7 SP1 Windows Update 檢查更新時 CPU 使用量過高或時間過長(卡住)</title><content type='html'>&lt;span style=&quot;color: #f1c232;&quot;&gt;這幾天 &lt;a href=&quot;https://zh.wikipedia.org/zh-tw/WannaCry&quot;&gt;WannaCry &lt;/a&gt;病毒肆虐，您的 windows 有保持著更新修正嗎？好久以前我重灌 Windows 7 (因為&lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;越&lt;/span&gt;跑越慢)，安裝好開機後&quot;偶然&quot;發現其實我的 Windows Update 已經卡住不再自動更新....Google 討論後了解原因是&quot;後&quot;更新&lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;包&lt;/span&gt;與&quot;前&quot;&lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;更新&lt;/span&gt;包衝突，&lt;/span&gt;&lt;span style=&quot;color: #f1c232;&quot;&gt;身為 Windows 的使用者也算是一種悲哀 (Wana Cry) 吧...haha 就貼一下當時的筆記上來~&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;Windows 7 SP1 Windows Update 檢查更新時 CPU 使用量過高或時間過長(卡住)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;(How to fix windows update stuck checking)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Windows 7 SP1 在某次更新之後或全新安裝的情況下，會發生 Windows Update 在檢查更新時，CPU 使用量會非常高，且掃描更新時間過長或卡住的狀況。&lt;br /&gt;
&lt;br /&gt;
解決辦法：&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. 先關閉 Windows Update 服務 (若不關閉，更新包有可能無法安裝)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (控制台 &amp;gt; 系統及安全性 &amp;gt; Windows Updates &amp;gt; 變更設定 &amp;gt; 選 “永遠不檢查更新&quot;，後按確定)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 重新開機&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. 手動下載並安裝 Windows 7 和 Windows Server 2008 R2 的 2015 四月更新包 (KB3020369)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32 位元 &lt;a href=&quot;http://www.microsoft.com/zh-TW/download/details.aspx?id=46827&quot;&gt;http://www.microsoft.com/zh-TW/download/details.aspx?id=46827&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64 位元 &lt;a href=&quot;http://www.microsoft.com/zh-TW/download/details.aspx?id=46817&quot;&gt;http://www.microsoft.com/zh-TW/download/details.aspx?id=46817&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 4. 手動下載並安裝 Windows 7 和 Windows Server 2008 R2 的 2016 七月更新包 (KB3172605)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32 位元 &lt;a href=&quot;http://www.microsoft.com/zh-TW/download/details.aspx?id=53335&quot;&gt;http://www.microsoft.com/zh-TW/download/details.aspx?id=53335&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64 位元 &lt;a href=&quot;http://www.microsoft.com/zh-TW/download/details.aspx?id=53332&quot;&gt;http://www.microsoft.com/zh-TW/download/details.aspx?id=53332&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 5. 重開機後，恢復 Windows Update 服務並檢查更新&lt;br /&gt;
&lt;br /&gt;
資料來源 (英文)：&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://superuser.com/questions/951960/windows-7-sp1-windows-update-stuck-checking-for-updates&quot;&gt;http://superuser.com/questions/951960/windows-7-sp1-windows-update-stuck-checking-for-update&lt;/a&gt;&lt;a href=&quot;https://www.blogger.com/null&quot;&gt;s&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://support.microsoft.com/en-us/kb/3200747&quot;&gt;http://support.microsoft.com/en-us/kb/3200747&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
相關資料 (英文)：&lt;br /&gt;
&lt;br /&gt;
April 2015 servicing stack update for Windows 7 and Windows Server 2008 R2 – &lt;a href=&quot;http://support.microsoft.com/en-us/kb/3020369&quot;&gt;http://support.microsoft.com/en-us/kb/3020369&lt;/a&gt;&lt;br /&gt;
July 2016 update rollup for Windows 7 SP1 and Windows Server 2008 R2 SP1 – &lt;a href=&quot;http://support.microsoft.com/en-us/kb/3172605&quot;&gt;http://support.microsoft.com/en-us/kb/3172605&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/7105805520508429640/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2017/05/windows-7-sp1-windows-update-cpu.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/7105805520508429640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/7105805520508429640'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2017/05/windows-7-sp1-windows-update-cpu.html' title='Windows 7 SP1 Windows Update 檢查更新時 CPU 使用量過高或時間過長(卡住)'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-8460548608257408282</id><published>2017-05-12T01:56:00.000-07:00</published><updated>2017-05-16T04:00:07.866-07:00</updated><title type='text'>Cordova 初探筆記</title><content type='html'>-----------------------------------------------------------&lt;br /&gt;
&lt;b&gt;0) 準備/前提&lt;/b&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
1. 你已經安裝好各平台&quot;自身&quot;的開發環境了&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;MEMO:&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;b&gt;Android&lt;/b&gt;:&lt;/span&gt; &lt;a href=&quot;https://cordova.apache.org/docs/en/latest/guide/platforms/android/&quot;&gt;https://cordova.apache.org/docs/en/latest/guide/platforms/android/&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6aa84f;&quot;&gt; &lt;b&gt;iOS&lt;/b&gt;:&lt;/span&gt; &lt;a href=&quot;https://cordova.apache.org/docs/en/latest/guide/platforms/ios/&quot;&gt;https://cordova.apache.org/docs/en/latest/guide/platforms/ios/&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #38761d;&quot;&gt; &lt;span style=&quot;color: #6aa84f;&quot;&gt;建議: Andriod Studio 安裝全部預設元件，並也用預設的路徑...參見 B) 的第 6 項 MEMO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
2. 設置相關的環境變數，或之後檢查再設置...參見 B) 的第 6 項&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;b&gt;A) 安裝 node.js(含npm), cordova&lt;/b&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
1. 安裝 node.js&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 來源: &lt;a href=&quot;http://nodejs.org/&quot;&gt;http://nodejs.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 下面功能必須安裝&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [] Node.js runtime&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [] npm package manager&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [] Add to PATH&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
2. 驗證 node 安裝&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 開啟命令提示字元，輸入 node，是否有執行並回應新行，顯示提示號 &#39;&amp;gt;&#39;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\&amp;gt;node&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 提示號 &#39;&amp;gt;&#39; 下輸入 1+2 ，檢查是否有回應 3 的答案&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\&amp;gt;node&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;1+2&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #e06666;&quot;&gt;NOTE: node.js 是利用 google chrome v8 引擎執行, 如果出現 Windows 安全性警示，&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 按下解除封鎖按鈕&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
3. 驗證 npm 安裝&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 開啟命令提示字元，輸入 npm，是有否顯示 usage 訊息&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\&amp;gt;npm&lt;br /&gt;
&lt;br /&gt;
4. 安裝 cordova&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 開啟命令提示字元，輸入&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\&amp;gt;npm install -g cordova&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 必須要有網路連線 npm 會下載安裝包&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 建議全域安裝 &#39;-g&#39;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
5. 驗證 cordova 安裝&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 開啟命令提示字元，輸入 cordova，是否有顯示 synopsis 訊息&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\&amp;gt;cordova&lt;br /&gt;
&lt;br /&gt;
6. (非必要) 更新 cordova&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 開啟命令提示字元，輸入&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 目前版本 (本地)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\&amp;gt;cordova -v&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 查最後版本 (網路)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\&amp;gt;npm info cordova version&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 升級&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\&amp;gt;npm update -g cordova&amp;nbsp;&lt;span style=&quot;color: #e06666;&quot;&gt; (沒法更新 7.0.0 -&amp;gt; 7.0.1?)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 或&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\&amp;gt;npm install -g cordova&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #6aa84f;&quot;&gt;MEMO: 唯有更新 cordova 後，&#39;platform update&#39; 才能不指定版號更新，&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 參見 C) 第 5 項&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;b&gt;B) 建立新 cordova 專案&lt;/b&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
1. (非必要，只是多專案時都可以在一個父目錄下) 建立一個工作目錄 &#39;work&#39;&lt;br /&gt;
&lt;br /&gt;
2. 在此工作目錄下開啟命令提示字元 (或開啟後進入此工作目錄)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\work&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #e06666;&quot;&gt; NOTE: 以後全都要在命令提示模式下操作&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
3. 假設：專案目錄 myapp，反向域樣式識別碼 aaa.bbb.ccc.MyApp，應用程式的顯示標題 MyApp&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 命令提示字元下執行&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\work&amp;gt;cordova create myapp com.mycompany.myteam.myapp MyApp&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MEMO: cordova create &amp;lt;PATH&amp;gt; [ID [NAME [CONFIG]]] [options]&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; P.S. cordova 將在 C:\work\myapp 下生成專案檔案&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
4. 進入 C:\work\myapp 目錄下&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\work&amp;gt;cd C:\work\myapp&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\work\myapp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;*** NOTE: 專案目錄建立後，以後所有 cordova 命令全都在專案目錄 (C:\work\myapp)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 下操作&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
5. 加入目標平台 android, ios ...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;cordova platform add android ios&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 你必須先安裝好該平台的開發環境 (browser 除外)，否則會提示警告，並且之&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 後跑執行(run)/建構(build)會失敗&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MEMO: cordova platform &amp;lt;command&amp;gt; [options]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MEMO: cordova 7.0 之後，&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&#39;platform add&#39; 自動加 &#39;--save&#39; 選項，參見下&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;面 D) 的 NOTE 2,3&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
6. (非必要，但建議) 檢查是否滿足平台的開發環境需求&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;cordova requirements --verbose&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 環境變數可能(*)須要手動設置...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Android platform:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;JAVA_HOME&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; ANDROID_HOME&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果安裝在&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\Program Files\Android\Android Studio&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\Users\MyName\AppData\Local\Android\sdk&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 則執行(臨時)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;set ANDROID_HOME=C:\Users\MyName\AppData\Local\Android\sdk&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 或新增環境變數(永久)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 控制台-&amp;gt;進階系統設定-&amp;gt;環境變數-&amp;gt;系統變數, 新增...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;PATH&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (我沒做) 建議新增 C:\Users\MyName\AppData\Local\Android\sdk\platform-tools;C:\Users\MyName\AppData\Local\Android\sdk\tools;C:\Users\MyName\AppData\Local\Android\sdk\tools\bin&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Gradle 執行路徑可能(*)需要新增到 PATH 變數 &lt;/b&gt;(我沒做) &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MEMO: 經驗上這邊常常會檢查出錯 (這表示稍後建構應用程式也會失敗)，錯誤的原因&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; requirements 指令已經列出，如果是環境變數沒設置很容易解決，而正確設置還&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 出錯是常常在網路社群 (like StackOverflow...) 被詢問的，如 Gradle 找不到&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最多人問...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我發現終究原因是平台的 SDK/Tools 頻繁改版，但 SDK/Tools 與 Cordova&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; platform 開發的人員是不同的一群人，Cordova platform 開發也會改版，並依據&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 當前的 SDK/Tools 測試發行(*)，唯沒法呼應全部玩家的環境及手上 SDK/Tools 的&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 版本，所以建議一開始各抓最新版 (平台的 SDK 日期不要比 Cordova 新) 設置好&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果測過，謹慎更新 SDK(*) 或 Cordova，再發生 requirements 有錯誤時，無法&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 解決則最終就是回歸上次 ok 的版本...&quot;_&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如下有一個案例，&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;更新 Android &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;SDK Tools 後，&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;Cordova 報 Gradle &lt;/span&gt;找不到&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;因 Gradle 搬家了:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;C:\Users\MyName\AppData\Local\Android\sdk\tool&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;到:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;C:\Program Files\Android\Android Studio\plugins\android\lib\templates\gradle\wrapper&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://stackoverflow.com/questions/42613882/error-could-not-find-gradle-wrapper-within-android-sdk-might-need-to-update-yo&quot;&gt;http://stackoverflow.com/questions/42613882/error-could-not-find-gradle-wrapper-within-android-sdk-might-need-to-update-yo&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (*)建議: 安裝 SDK/Tools 時預設元件不要核銷，Cordova platform 有時(**)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;會用到...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 並用預設的路徑，Cordova 優先會去那邊找...就可不用設置環境變數&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp; (**)P.S. 如我有一次更新 android &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;platform 後，出現 cmd: Command failed with&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;exit code 1 Error output: &#39;avdmanager&#39;....錯誤，研究發現這是新版&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;android platform 改用此 cmd tool (&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;來自 android sdk tools) 來判定&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;android target，但我 &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;ANDROID_HOME 下是沒這東西的，後重新安&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;裝 &lt;/span&gt;Android Studio 時懷疑可能是我之前省硬碟空間沒裝虛擬機器選項? &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;b&gt;C) 編輯 cordova 專案&lt;/b&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
1. 撰寫你的 html5 程式碼位於&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\work\myapp\www\&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 此 www 目錄會在執行/建構時複製至目標平臺的子目錄中，如 platforms/ios/www 或&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; platforms/android/assets/www，請編輯此處 www 目錄中的檔案，而不是位於平臺的&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 子目錄下的檔案&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
2. (非必要) 如果需要安裝外掛&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;cordova plugin add cordova-plugin-inappbrowser&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;cordova plugin add cordova-plugin-camera&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...etc&lt;br /&gt;
&lt;br /&gt;
3. 執行&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;cordova run android&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 構建指定平台&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;cordova build android&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 或構建全部&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;cordova build&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 或發行(簽署)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;cordova run android --release -- --keystore=../my_release_key.keystore --storePassword=my_password --alias=my_alias_name --password=my_password&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp&amp;gt;cordova build android --release -- --keystore=&quot;..\android.keystore&quot; --storePassword=android --alias=mykey&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 當使用上述 CLI(Command Line Interface) 去執行/建構應用程式 (或外掛重新安裝)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ，專案目錄下 /platforms/ 裡面的某些檔案會被 CLI 覆蓋，所以除非知道哪些不會有影&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;響&lt;span style=&quot;color: #e06666;&quot;&gt; &lt;/span&gt;(如: platforms\android\src\com\ 下加入自己的 android java 程式...)，不&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;應該對裡面的文件做編輯修改&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #6aa84f;&quot;&gt;MEMO: 簽署:&lt;/span&gt; &lt;a href=&quot;https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#signing-an-app&quot;&gt;https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#signing-an-app&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
4. (非必要) 除錯&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #6aa84f;&quot;&gt;MEMO: 除錯:&lt;/span&gt; &lt;a href=&quot;https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#debugging&quot;&gt;https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#debugging&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
5. (非必要) 更新&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova 本身&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 更新參考 A) 的第 6 項&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 查各平台最後版本 (網路)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; npm info cordova-android version&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; npm info cordova-ios version&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...etc&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 專案目前安裝平台及版本&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova platform ls&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 更新至最後(固定標記)版本&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova platform update android&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...etc&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 各 cordova 版本發行時會固定標記(pinned)一個預設平台版本號&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (available platforms)， platform update/add 只會更新到/加入該版，除非指&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 定版號(如下)，或先更新 cordova&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 更新至指定版本&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova platform update android@5.4.3&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...etc&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 可以任意指定網路上有的版本&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 各外掛最後版本&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; npm info cordova-plugin-inappbrowser version&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; npm info cordova-plugin-whitelist version&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...etc&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 專案目前安裝外掛及版本&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova plugin ls&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 更新至最後(固定標記)版本&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strike&gt;cordova plugin update cordova-plugin-inappbrowser&lt;/strike&gt; &lt;span style=&quot;color: #e06666;&quot;&gt;(中文版文件你弄錯了吧?)&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 或&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova plugin remove cordova-plugin-inappbrowser&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova plugin add cordova-plugin-inappbrowser&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 更新至指定版本&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova plugin remove cordova-plugin-inappbrowser&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova plugin add cordova-plugin-inappbrowser@1.2.3&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...etc&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 安裝 cordova-check-plugins 可一次更新專案裡全部外掛 (https://github.com/dpa99c/cordova-check-plugins)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; npm install -g cordova-check-plugins&lt;br /&gt;
&lt;br /&gt;
7. (非必要) 修改專案設置&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 編輯下面文件&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\work\myapp\config.xml&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;b&gt;D) 其他命令 (全都在 C:\work\myapp 下操作)&lt;/b&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova platform remove ios&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova plugin remove cordova-plugin-camera --save&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cordova emulate android&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 如果移除平台 (platform remove)， platforms/xx 將被刪除，所以任何你在裡面&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 作的異動會消失!&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: When adding/removing plugins or platforms, use the &#39;--save&#39; flag to&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;add/remove them to config.xml.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Existing projects can use &#39;cordova plugin save&#39; and &#39;cordova platform&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; save&#39; commands to save all previously installed plugins and platforms&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; into your project&#39;s config.xml.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Platforms and plugins will be autorestored when cordova prepare is run.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: &lt;/span&gt;After Cordova 7.0 &lt;/span&gt;it will automatically save that platform or plugin to&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;your &lt;code&gt;config.xml&lt;/code&gt; and &lt;code&gt;package.json&lt;/code&gt;. The &lt;code&gt;--save&lt;/code&gt; flag is no longer required to&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; save. Use &lt;code&gt;--nosave&lt;/code&gt; to prevent saving.&lt;/span&gt;&lt;/span&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #6aa84f;&quot;&gt;MEMO: 更多: &lt;/span&gt;&lt;a href=&quot;https://cordova.apache.org/docs/en/latest/reference/cordova-cli/&quot;&gt;https://cordova.apache.org/docs/en/latest/reference/cordova-cli/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;b&gt;E) 參考&lt;/b&gt;&lt;br /&gt;
-----------------------------------------------------------&lt;br /&gt;
&lt;a href=&quot;https://cordova.apache.org/docs/en/latest/guide/cli/&quot;&gt;https://cordova.apache.org/docs/en/latest/guide/cli/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://cordova.apache.org/docs/en/latest/&quot;&gt;https://cordova.apache.org/docs/en/latest/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/8460548608257408282/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2017/05/cordova.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/8460548608257408282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/8460548608257408282'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2017/05/cordova.html' title='Cordova 初探筆記'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-2378284121250204037</id><published>2015-08-11T19:30:00.002-07:00</published><updated>2015-08-25T23:42:32.531-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GIT"/><category scheme="http://www.blogger.com/atom/ns#" term="專案"/><title type='text'>(再度) 如何在 Synology NAS 設置 GIT 伺服器 (新版)</title><content type='html'>&lt;h3 class=&quot;post-title entry-title&quot; itemprop=&quot;name&quot;&gt;

&lt;/h3&gt;
&lt;div class=&quot;post-header&quot;&gt;
&lt;/div&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;b&gt;2013 年曾發表兩篇文章, 是多年前的老機器 DS107 
的紀錄, 這台機器的 DSM 已經停止更新, 當時他是無法透過 DSM 安裝 GIT 套件, 所以只能手動(ipkg)安裝, 最近購入 
DS214 發現新的 DSM 上已經有套件可以直接安裝, 如果你的 DSM 有支援線上安裝 GIT Server 可參考本文...&lt;a href=&quot;https://help.synology.com/dsm/?section=Git&amp;amp;version=2.3&amp;amp;link=git.htm&quot;&gt;&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
===================================================&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;b&gt;NOTE: 這是我的私人記錄, 不是教學! &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
環境:&lt;br /&gt;
&lt;br /&gt;
1. Synology DS214Play+ DSM 5.2-5592 版&lt;br /&gt;
2. 有實體 IP 11.22.33.44 (此為亂寫)&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;How to setup a GIT Server on a Synology NAS&lt;br /&gt;-------------------------------------------&lt;/span&gt;&amp;nbsp; &lt;br /&gt;
1. 先啟動 SSH 功能&lt;br /&gt;
&amp;nbsp;&amp;nbsp; DSM-&amp;gt; 控制台 -&amp;gt; 進階模式 -&amp;gt; 終端機 &amp;amp; SNMP -&amp;gt; [v] 啟動 SSH 功能&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; P.S. 安全起見建議你自訂連接埠!&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
2. 安裝 Git Server 套件&lt;br /&gt;
&amp;nbsp;&amp;nbsp; DSM-&amp;gt; 套件中心 -&amp;gt; 收尋 &quot;git&quot; -&amp;gt; 找到 [Git Server] -&amp;gt; 點 [安裝套件]&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; P.S. 要等待一下下安裝完成...&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
3. 啟動 Git Server 套件&lt;br /&gt;
&amp;nbsp;&amp;nbsp; DSM -&amp;gt; 套件中心 -&amp;gt; 已安裝 -&amp;gt; 找到 [Git Server], 點選 -&amp;gt; 點 [動作] -&amp;gt; 啟動&lt;br /&gt;
&lt;br /&gt;
4. 建立 git 庫(repository) 的位置, 假定 &quot;git-repo&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; DSM -&amp;gt; 控制台 -&amp;gt; 共用資料夾 -&amp;gt; [新增] -&amp;gt; 名稱 &quot;git-repo&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; P.S. 以上名稱可以自訂.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
5. 建立 git server 使用者, 假定 &quot;git.user&quot;, &quot;blabla&quot;...&lt;br /&gt;
&amp;nbsp;&amp;nbsp; DSM -&amp;gt; 控制台 -&amp;gt; 使用者帳號 -&amp;gt; [新增] -&amp;gt; 名稱 &quot;git.user&quot;, 密碼 &quot;xxx&quot; -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 指定群組, 勾 &quot;Users&quot; (*) -&amp;gt; 在 &quot;指派共用資料夾權限&quot; 頁面, 在 &quot;git-repo&quot; 的 &quot;可讀寫&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; P.S. (*)可以把全部使用 git server 的使用者, 放在一個專用的群組.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; P.S. 以上名稱可以自訂.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
6. 設置 Git Server 使用者&lt;br /&gt;
&amp;nbsp;&amp;nbsp; DSM -&amp;gt; 主選單 -&amp;gt; Git Server -&amp;gt; &quot;git.user&quot; 的 &quot;允許存取&quot; 打勾&lt;br /&gt;
&lt;br /&gt;
7. 建立 git 庫(repository), 假定 &quot;test&quot;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;b&gt;&lt;u&gt;[方法1] Only for Windows (or Mac?)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 前提:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1. NAS 能位於 PC 相同的區域網域(**), PC 能連線 NAS 為網路磁碟(或資料夾)&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; P.S: (**)實際上我的 NAS 都是放在區(內)網 192.168.0.x, 由 router 映射一個&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 外部 ip:port 給 NAS 需要開放的服務, like&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11.22.33.44:1234 -&amp;gt; 192.168.0.x:22 (your SSH port in NAS)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2. PC 有安裝 TortoiseGit, 或其他 Git clients.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 步驟:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1. 啟動 NAS 的 Windows 檔案服務&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; DSM -&amp;gt; 控制台 -&amp;gt; 檔案服務 -&amp;gt; [Windows 檔案服務] -&amp;gt; 啟動, 注意下面有寫 PC&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 檔案總管如何存取...預設為 \\Diskstation&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2. PC -&amp;gt; 檔案總管 -&amp;gt; 選單, 連線網路磁碟機 -&amp;gt; 指定磁碟機代號, 資料夾輸入&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; \\Diskstation\git-repo -&amp;gt; 輸入 DSM 的(管理員或 git.user)的登入名字與密碼&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 或&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PC -&amp;gt; 檔案總管 -&amp;gt; 頁籤, 電腦 -&amp;gt; 滑鼠在 [網路位置] 上按右鍵選單 -&amp;gt; 新增一個網路&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 位置 -&amp;gt;選擇自訂網路位置 -&amp;gt; 輸入 \\RICHSTATION\git-repo -&amp;gt; ...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3. 如果你已經是 TortoiseGit 的能力者, 剩下就簡單並直覺了...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; a) 在 NAS 上新建 GIT 專案庫:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 直接打開網路資料夾 git-repo -&amp;gt; 裡面新建一個資料夾 &quot;test&quot; -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 滑鼠在 &quot;test&quot; 資料夾上按右鍵選單 -&amp;gt; Git Create repository here... -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;勾 &#39;Make It Bare&#39;&lt;/b&gt;&lt;/span&gt; (***) -&amp;gt; OK.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; P.S: (***)這裡還蠻重要的, 因為是遠端庫, 不在庫目錄上直接工作, 不勾會導致每次本&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/span&gt;地 push 遠端時都發一個警告...&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; b) 轉移既有(或備份)的 GIT 專案庫到 NAS:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 不用多說了把既有的 GIT 專案庫(&lt;b&gt;bared&lt;/b&gt;)複製到網路資料夾 git-repo 裡面!&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;u&gt;&lt;b&gt;[方法2] SSH 登入 NAS&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 步驟:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1. PC 執行 SSH client(!), Host Name: 11.22.33.44, Port: 22 (或自訂過)&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; P.S. (!) 我是用&lt;a href=&quot;http://www.chiark.greenend.org.uk/~sgtatham/putty/&quot;&gt; PuTTY&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2. Login as: admin&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Password: (NAS 網頁管理頁面(admin)用的密碼)&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 這裡登入名字建議不要用 &#39;root&#39;, root 登入後若不切換帳號, 可能會導致後面建&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;立&lt;/i&gt;&lt;/span&gt;的&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;/span&gt;test 資料夾權限只限 root 用戶可存取, 此時還要用 chmod 修改...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 如果密碼沒錯卻拒絕登入, 可以檢查:&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/span&gt;1. ip:port 是否正確, 路由 ip(router):port -&amp;gt; NAS:port 都正確?&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/span&gt;2. 是否被 router(firewall) 封鎖 IP or port?&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/span&gt;3. 是否被 NAS 封鎖 IP or port?&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/span&gt;4. NAS 的 SSH 服務已經已啟動?&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 3. 接下來操作 shell commands&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Diskstation&amp;gt; cd /volume1/git-repo/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Diskstation&amp;gt; pwd&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(確認一下目前目錄為上面嗎)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /volume1/git-repo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Diskstation&amp;gt; mkdir test&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(建立新的資料夾擺放 test 專案的 Git 庫)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Diskstation&amp;gt; ls -l&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(確認一下目錄的權限)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; drwxrwxrwx&amp;nbsp; 7 admin users&amp;nbsp; 4096 Aug 12 15:26 test&lt;br /&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ^^^^^^^^^&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^^^^^&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 123456789&amp;nbsp; &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; 123:admin 可讀寫執行, 456:users 可寫執行, 789:其他人也可&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;NOTE: 權限不對, 會導致 git.user 在本地無法存取 /volume1/git-repo/test, 此時可&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;用 chmod 修改, 或直接換用 git.user 身份建立資料夾...&lt;/span&gt;&lt;/i&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;參見 &lt;a href=&quot;http://ob-brew.blogspot.com/2013/04/synology-nas-git-22.html&quot;&gt;如何在 (老) Synology NAS 設置 GIT 伺服器 (2/2)&lt;/a&gt;&lt;/span&gt;&lt;/i&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Diskstation&amp;gt; cd test&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Diskstation&amp;gt; pwd&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;i&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(確認一下目前目錄為上面嗎)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /volume1/git-repo/test&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Diskstation&amp;gt; git --bare init&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(建立初始 git 空庫)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initialized empty Git repository in /volume1/git-repo/test/ &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Clone Git 庫&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 以步驟 7 的 test Git 庫, 其遠端的存取位置(URL)為&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ssh://git.user@11.22.33.44:22/volume1/git-repo/test&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; NOTE:&amp;nbsp; 1. git.user 為步驟 5 的建立的 git 使用者名字. 請替換為你的名字.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; NOTE:&amp;nbsp; &lt;/i&gt;&lt;/span&gt;2. :22 為預設 SSH 連接埠, 或是你有自訂其他的數值...&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 操作 Git client 的 clone, 連線後會問 git.user 的密碼, 輸入後, 如正確無誤, 就開始複製&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 檔案到本地, Git 的使用方法此處不多說了...&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;參考: &lt;/span&gt;&lt;a href=&quot;https://help.synology.com/dsm/?section=Git&amp;amp;version=2.3&amp;amp;link=git.htm&quot;&gt;Synology Git 套件說明&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;Q1: 每次本地操作 remote git 時都會出現 &quot;Could not chdir to home directory /var/services/homes/git.user: No such file or directory&quot;?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;A1: 這是因為 DSM 操作新增 git.user 時並沒有建立其家目錄, 這只是警告不妨礙 Git 操作, 如果不愛, 可以用 SSH 登入 NAS, 操作 shell 指令方式, 重新指定 git.user 的家目錄, 參見&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;a href=&quot;http://ob-brew.blogspot.com/2013/04/synology-nas-git-22.html&quot;&gt;如何在 (老) Synology NAS 設置 GIT 伺服器 (2/2)&lt;/a&gt; 中, 步驟 15 有說明修改(改家目錄, shell 應該不用改).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/2378284121250204037/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2015/08/synology-nas-git.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/2378284121250204037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/2378284121250204037'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2015/08/synology-nas-git.html' title='(再度) 如何在 Synology NAS 設置 GIT 伺服器 (新版)'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-3643708055560210156</id><published>2015-06-25T00:17:00.001-07:00</published><updated>2015-06-25T00:54:49.842-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="程式設計的藝術"/><title type='text'>Sublime Text and Uncrustify</title><content type='html'>I like to use &lt;b&gt;Uncrustify&lt;/b&gt; to format the source codes and the &lt;b&gt;Sublime Text&lt;/b&gt; to edit codes..&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
After discover packages in &lt;u&gt;&lt;b&gt;packagecontrol.io&lt;/b&gt;&lt;/u&gt; I can&#39;t find a plug-in that uses &lt;b&gt;Uncrustify&lt;/b&gt; in &lt;b&gt;Sublime Text&lt;/b&gt; *_*
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
The are some C/C++ formatter/beautifier for &lt;b&gt;Sublime Text&lt;/b&gt;. But they aren&#39;t my favor &lt;b&gt;Uncrustify&lt;/b&gt;!!&lt;br /&gt;
&lt;br /&gt;
So I wrote myself....Everyone who likes &lt;b&gt;Uncrustify&lt;/b&gt; and &lt;b&gt;Sublime Text&lt;/b&gt;, Now I present to you the...... &lt;span style=&quot;font-size: large;&quot;&gt;&lt;a href=&quot;https://packagecontrol.io/packages/Uncrustify&quot;&gt;&lt;b&gt;Sublime-&lt;/b&gt;&lt;b&gt;Uncrustify&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; ^_^&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh588Str51LqavTzkZu7em1krpwO2us3T831EoEpcIwe03SwDpsIiRly1SRGqbIvf8SRR2n_22Hx3sWYg-OGXB0A42KE2v8AO72XD37hhQjp6DlLbEOSxeQltsvj6kJnVVtx80dovS-O4ND/s1600/Screenshot.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh588Str51LqavTzkZu7em1krpwO2us3T831EoEpcIwe03SwDpsIiRly1SRGqbIvf8SRR2n_22Hx3sWYg-OGXB0A42KE2v8AO72XD37hhQjp6DlLbEOSxeQltsvj6kJnVVtx80dovS-O4ND/s1600/Screenshot.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/3643708055560210156/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2015/06/sublime-text-and-uncrustify.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/3643708055560210156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/3643708055560210156'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2015/06/sublime-text-and-uncrustify.html' title='Sublime Text and Uncrustify'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh588Str51LqavTzkZu7em1krpwO2us3T831EoEpcIwe03SwDpsIiRly1SRGqbIvf8SRR2n_22Hx3sWYg-OGXB0A42KE2v8AO72XD37hhQjp6DlLbEOSxeQltsvj6kJnVVtx80dovS-O4ND/s72-c/Screenshot.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-3183264461828245580</id><published>2014-02-12T20:32:00.002-08:00</published><updated>2015-08-12T01:30:42.006-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Andriod"/><title type='text'>(再度) 安裝 andriod 開發環境</title><content type='html'>02/11/2014, 我重灌電腦, 再度安裝 andriod 開發環境, 發現 andriod 官網已經把下述之 Eclipse IDE 跟 SDK (step 7~21) 整合成一個 adt-bundle 了, 下載該包後, 解壓縮到硬碟任何地方即可以. (但前提 JRE 還是要先裝), 我沒有再新建專案, 去測試剩餘的步驟的有無差異. &lt;br /&gt;
&lt;br /&gt;
以下我這一次的過程簡要...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. 下載 JRE 的最後一版 (&lt;a href=&quot;http://www.java.com/zh_TW/download/&quot;&gt;官網&lt;/a&gt;), 安裝.&lt;br /&gt;
&lt;br /&gt;
2. 下載 andriod SDK (ADT Bundle) (&lt;a href=&quot;http://developer.android.com/sdk/index.html&quot;&gt;官網&lt;/a&gt;), 解壓縮至 C: 為 C:\adt-bundle&lt;br /&gt;
&lt;br /&gt;
3. 下載 andriod NDK (&lt;a href=&quot;http://developer.android.com/tools/sdk/ndk/index.html&quot;&gt;官網&lt;/a&gt;), 解壓縮至 C: 為 C:\android-ndk&amp;nbsp; (*)&lt;br /&gt;
&lt;br /&gt;
4. 把之前的備份的 Cygwin 解壓縮至 C: 為 C:\cygwin&amp;nbsp; (**)&lt;br /&gt;
&lt;br /&gt;
5. 執行 C:\adt-bundle\SDK Manager.exe 更新預設的 packages 至最新 (含安裝 Google USB driver)&lt;br /&gt;
&lt;br /&gt;
6. 執行 C:\adt-bundle\eclipse\eclipse.exe, 指定新的 workspace 到 D:\my_workspace&lt;br /&gt;
&lt;br /&gt;
7. 匯入老專案, File -&amp;gt; Import... -&amp;gt; Android&amp;nbsp; / Exist Android Code Into Workspace -&amp;gt; Browse 至 andriod project setting (project.properties?) 的 root 目錄&lt;br /&gt;
&lt;br /&gt;
9. Build.... (***)&lt;br /&gt;
&lt;br /&gt;
P.S.&lt;br /&gt;
(*) 此為我專案預設 ndk 的路徑&lt;br /&gt;
&lt;br /&gt;
(**) 1. 先前已經把上次安裝的 Cygwin 備份了, 這東西是可攜式的. 因為只用到 bash, make etc沒特別要求最新版. 並透過 Cygwin setup 也能再更新安裝過的 packages.&lt;br /&gt;
2.&amp;nbsp; 此為我專案預設 cygwin 的路徑.&lt;br /&gt;
&lt;br /&gt;
(***) 因為我之前的 NDK Builder 的設定已在專案下一直保留著(.externalToolBuilders\NDK_Builder.launch) 了, 所以這次沒再設置 NDK Builder!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/3183264461828245580/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2014/02/andriod.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/3183264461828245580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/3183264461828245580'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2014/02/andriod.html' title='(再度) 安裝 andriod 開發環境'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-8995068071944900669</id><published>2014-01-16T20:52:00.004-08:00</published><updated>2014-01-16T20:58:01.700-08:00</updated><title type='text'>軟體小熊</title><content type='html'>好喜歡這張插圖, 道盡了軟體專案最無奈的一面, 不知這本書市面上還找的到嗎?&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;nbsp;&quot;小男孩後頭帶著一隻小熊從樓梯上走下來，&lt;br /&gt;
可憐的小熊頭在樓梯上不斷的撞擊著台階。&lt;br /&gt;
盡這可憐的小熊所知，這是它唯一能夠下得了樓梯的辦法，&lt;br /&gt;
有時它覺得應該還有別的方法，&lt;br /&gt;
不過它的頭得先停止撞擊樓梯，才有可能想得出別的辦法來。&lt;br /&gt;
然而，他想，那個辦法大概不存在吧。&quot;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYSgU37riO5og4Nlp3pJIgTuQY009QtDh4NkoVBao8Rdk1HADUgFQDP3QAiCLkVrf76bxPd5CjLflbYITMSQxfJlp2ZkviqttCJujKx9Uc1hVmbDjMuZSTquV3wY5v47lFEmUV3OfxsEMa/s1600/%E8%BB%9F%E9%AB%94%E5%B0%8F%E7%86%8A800.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYSgU37riO5og4Nlp3pJIgTuQY009QtDh4NkoVBao8Rdk1HADUgFQDP3QAiCLkVrf76bxPd5CjLflbYITMSQxfJlp2ZkviqttCJujKx9Uc1hVmbDjMuZSTquV3wY5v47lFEmUV3OfxsEMa/s1600/%E8%BB%9F%E9%AB%94%E5%B0%8F%E7%86%8A800.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/8995068071944900669/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2014/01/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/8995068071944900669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/8995068071944900669'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2014/01/blog-post.html' title='軟體小熊'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYSgU37riO5og4Nlp3pJIgTuQY009QtDh4NkoVBao8Rdk1HADUgFQDP3QAiCLkVrf76bxPd5CjLflbYITMSQxfJlp2ZkviqttCJujKx9Uc1hVmbDjMuZSTquV3wY5v47lFEmUV3OfxsEMa/s72-c/%E8%BB%9F%E9%AB%94%E5%B0%8F%E7%86%8A800.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-3956155895979698054</id><published>2014-01-09T03:28:00.001-08:00</published><updated>2014-01-09T03:36:56.775-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Andriod"/><title type='text'>Type R 錯誤?</title><content type='html'>Android 開發環境並不太完善, 所以常遇到怪問題....&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&quot;Type R cannot be resolved to a variable&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
乍看之下這是什麼鬼阿, 一旦發生就會發生在幾百個 java 行裡!&lt;br /&gt;
&lt;br /&gt;
可以查一下&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/885009/r-cannot-be-resolved-android-error&quot;&gt;StackOverflow&lt;/a&gt;, 我自己久久也會遇到一次, 有時太久了, 遇到反而熊熊不知道怎麼辦, 記錄一下...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
關於 StackOverflow 該篇討論網友的描述, 有蠻多的見解, 以我的案例只有一個, 如下述&lt;br /&gt;
&lt;br /&gt;
檢查 &lt;code&gt;/res&lt;/code&gt; 目錄, 是不是有檔案錯誤, 通常是有新增的文件錯誤(名字不合規定, 格式錯誤, 多餘)或誤刪老文件導致 layout (XML) 失去對文件的參用等等, 所以無法產生出 R.java class (資源檔?), 以致於後續編譯 java 只要參用 res 的地方就會出現(一堆) &lt;span style=&quot;color: red;&quot;&gt;&quot;Type R&quot; &lt;/span&gt;錯誤.&lt;br /&gt;
&lt;br /&gt;
例如, 剛剛我發現我在 res/drawables-mdpi 多了一個 xxx.psd 我編輯用的圖檔, 忘記這裡面不能亂放檔案(儘管專案本身沒用到), 但專案編譯過程會&quot;一一&quot;掃瞄裡面的全部文件, 砍掉後就正常了.&lt;br /&gt;
&lt;br /&gt;
好希望 eclipse 是報告類似&lt;span style=&quot;color: #6aa84f;&quot;&gt; &quot;The res/drawables-mdpi/xxx.psd can&#39;t be identified!&quot;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;/span&gt;arrrr~&amp;nbsp;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/3956155895979698054/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2014/01/type-r.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/3956155895979698054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/3956155895979698054'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2014/01/type-r.html' title='Type R 錯誤?'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-908055456030841794</id><published>2013-12-26T22:42:00.002-08:00</published><updated>2014-02-21T00:01:22.358-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Andriod"/><title type='text'>錯誤! 請再猜一次!</title><content type='html'>&amp;nbsp;本篇是關於&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #f6b26b;&quot;&gt;1. 轉移 Google Play App 軟體到另外一個 Google 帳號&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #f6b26b;&quot;&gt;2. 申請 Google Wallet 商家資料&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
很早我就付了 US$25 的規費給 Google 所以可以在 Google Play 上架, 去年公司想要轉移一款客製的 Android 軟體至 Google Play 上公開下載, 我就用了我的個人帳號操作, 在 Developer Console 發行版本多次後, 熊熊才發現, App 是綁住我的帳號的, Google 的機制是全部(Google XX)都綁一個帳號互通資料, 所以該軟體準備做 Paid In App 機制, 也用我的 Google Wallet 裡面的資料做收付款!&lt;br /&gt;
&lt;br /&gt;
Google Play Developer Console 上面並沒有看到任何轉移帳號的操作. 除了商家資料綁住我, 或是我離職了那怎麼辦? &lt;br /&gt;
&lt;br /&gt;
想說有點麻煩了, 如果我重用新的 gmail 帳號來做, 此發行一年多的 App 是有唯一 ID 的, 另外帳號是無法使用同個 ID, 所以會變的多個 App 發行!&lt;br /&gt;
&lt;br /&gt;
難道最後我的 gmail 帳號要送給公司, 早知道就不要自告奮勇...&lt;br /&gt;
&lt;br /&gt;
前禮拜在 Google Play Developer Console 下方的 &lt;a href=&quot;https://support.google.com/googleplay/android-developer/&quot; target=&quot;_blank&quot;&gt;&quot;說明中心&lt;/a&gt;&quot;, 竟然發現了 Google Play 有轉移 App 至另外一個帳號的機制&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;https://support.google.com/googleplay/android-developer/answer/139626?hl=en&amp;amp;ref_topic=16285&quot;&gt;Changing your sign-in address or account&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
所需要的是兩個 Developer 帳號付款的交易單號 Transaction ID, 這可以在各自的 Google Wallet (電子錢包) 裡面交易記錄找到, 然後在上面的網址填申請書. 此不多述, 我填好了欄位需要的資料, 指定 &quot;ALL&quot; 把我的帳號裡頭全部 App 轉移至新的帳號, 送出申請, 然後等 Google 人工省核, 約半天就 Google 某客服就寄 Email 給我, 回覆說成功轉移了.&lt;br /&gt;
&lt;br /&gt;
本文重點是第二段申請 &quot;商家帳戶&quot;(Google Wallet Merchant)....&lt;br /&gt;
(注意這不是 &quot;Google Wallet&quot; 電子錢包, 但事實又有些關連如後述)&lt;br /&gt;
&lt;br /&gt;
所以我接著要替新帳號(公司名義)申請 &quot;商家帳戶&quot;, 以便  Paid In App 收款使用, 打開申請頁面有一些資料要填寫, 填好後按 &quot;送出&quot;...嗶~ (&lt;i&gt;其實電腦沒出聲, 是我腦袋的 FUCK 的消音&lt;/i&gt;)&lt;br /&gt;
&lt;br /&gt;
網頁上方一條紅色訊息 &quot;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;聯絡人姓名必須包含姓氏與名字，例如：王小明 UNKNOWN_VALUE&lt;/span&gt;&lt;/b&gt;&quot;, 於是無法送出申請.&lt;br /&gt;
&lt;br /&gt;
意思似乎是我寫的名字有問題? 我改了英文 嗶~, 或換了常見名字 嗶~, 不填 嗶~, 於是我改了 &quot;&lt;b&gt;&lt;span style=&quot;color: #e69138;&quot;&gt;王小明&lt;/span&gt;&lt;/b&gt;&quot; .....&lt;br /&gt;
&lt;br /&gt;
當然, 還是 嗶~ 不行 -_- !!&lt;br /&gt;
&lt;br /&gt;
怎麼會這樣!? 難道是我網頁瀏覽器支援有問題, 我下載了 Google Chrome 測試還是一樣. 我之前的帳號是有連結商家帳戶的, 但那是多年前 Google Checkout 機制時代我申請的(但此機制本身有整合問題), 後來應該是 Google 換新機制, 自行轉移過了.&lt;br /&gt;
&lt;br /&gt;
我想上面的紅色訊息應該是無解了, 查了 Google (哈~又是你), 有一封同我問題的討論但沒人回, 我想那就寫客服信吧....&lt;br /&gt;
&lt;br /&gt;
但沒想到後面有意外的發展...&lt;br /&gt;
&lt;br /&gt;
我檢視在新的帳號的 &lt;a href=&quot;https://wallet.google.com/&quot;&gt;Google Wallet &lt;/a&gt;( 電子錢包) 裡面, 我發現了舊有的付費時 (US$25 的時候, 公司另外同事付費的) 有個人資料 (在電子錢包設定可以找到), 也有一個姓名欄位 &quot;法定全名&quot;, 名字寫錯成地址, 我不曉得他怎麼填的, 也許是用手機付費時填錯? 於是我就把他修正為公司的中文名字, 嗶~ 又來了 &quot;&lt;span style=&quot;color: red;&quot;&gt;法定全名無效&lt;/span&gt;&quot;, 還好二次我猜到了&lt;b&gt;&lt;span style=&quot;color: #e69138;&quot;&gt;改英文不准中文&lt;/span&gt;&lt;/b&gt;!&lt;br /&gt;
&lt;br /&gt;
A~ 接著我回到 &quot;商家帳戶&quot;(Google Wallet Merchant)申請網頁, 突發靈感, 把名字用同一個名字!&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;b&gt;按&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;&lt;b&gt;資料送出 &lt;/b&gt;&lt;/span&gt;PASS~ &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
以上, 兩個等同的 &quot;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;b&gt;錯誤! 請再猜一次!&lt;/b&gt;&lt;/span&gt;&quot; 錯誤訊息經驗, 提供參考.&lt;br /&gt;
&lt;br /&gt;
p.s. 總結一下, 目前的過關答案&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;1. 聯絡人姓名必須包含姓氏與名字，例如：王小明 UNKNOWN_VALUE&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;--&amp;gt;請填入電子錢包&lt;/span&gt;&lt;span style=&quot;color: #3d85c6;&quot;&gt;個人資料的 &quot;法定全名&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;2. &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;法定全名無效&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;color: #3d85c6;&quot;&gt;--&amp;gt;只接受英文&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/908055456030841794/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2013/12/blog-post_26.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/908055456030841794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/908055456030841794'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2013/12/blog-post_26.html' title='錯誤! 請再猜一次!'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-7060172972817427403</id><published>2013-08-18T19:58:00.001-07:00</published><updated>2013-08-18T20:05:33.895-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Andriod"/><title type='text'>Android facebook 貼文的小插曲</title><content type='html'>前些日子進行的一個 Android App (別人寫好的我進行維護擴充) 連結至 Facebook 貼文分享的新功能, 照往常先拜 Google 碼頭, 猜想了關鍵字 &quot;&lt;a class=&quot;spell&quot; href=&quot;https://www.google.com.tw/search?q=android+facebook+post+to+wall&amp;amp;ie=utf-8&quot;&gt;&lt;i&gt;android&lt;/i&gt; facebook post to wall&lt;/a&gt;&quot;, 很好一堆前人分享了重點方法或提供程式片段範例, 我開始下載了 Facebook SDK, 匯入專案, 並依前人程式片段寫了自己的版本(我第一次寫 android java)...&lt;br /&gt;
&lt;br /&gt;
結果試了一下在我們自己的 App 切到 Facebook 授權成功後執行貼文動作, 卻遇到下面的畫面. &quot;&lt;span style=&quot;color: red;&quot;&gt;無法顯示你所要求的頁面。有可能是暫時無法使用....&lt;/span&gt;&quot; 的錯誤訊息..&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE9IANEE-WyJ-uAuA9BsaNQDxrGnXLjo4ZeZ0xxg6c9n8Bq2qxTYMQMKdcbhyphenhyphennqK43-eUsj7x9V5vikc9Sygx2oEcE-GsmMURzTL69AICzQYglDT24SxlsLd5ZL_G4Ee1SXA9r_i8xe_k2/s1600/2013-08-05_14-58-56.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE9IANEE-WyJ-uAuA9BsaNQDxrGnXLjo4ZeZ0xxg6c9n8Bq2qxTYMQMKdcbhyphenhyphennqK43-eUsj7x9V5vikc9Sygx2oEcE-GsmMURzTL69AICzQYglDT24SxlsLd5ZL_G4Ee1SXA9r_i8xe_k2/s1600/2013-08-05_14-58-56.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaKXu-namf_6QH3YpUuF0cZBQZIJ4sCgp7JKGqXwJMjWu9fB0HEJb5txNsMQJxyghST3CV3M7yKJSRl28IUSvTE8CkKODnhVSxEyO1X9PSFpXBCa65APYLTQfO27ZHeTlYR523Yo6yVXCk/s1600/2013-08-05_14-58-56.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
果然沒有一帆風順, 再拜一次 google 看有人遇到類似問題否, 結果提及相同的訊息都是一般用戶在自身 Facebook 使用上的問題, 並無有用的回覆, 搜了許久無程式人員在開發上提及此問題.&lt;br /&gt;
&lt;br /&gt;
再一次看看&amp;nbsp; Facebook SDK 的文件說明, 是否我有哪裡做錯, 看了一下就放棄, 目前 SDK 是 3.0 版的 API, 原本我用的方法是 2.0 版的 API, 雖可以用但教學都是 3.0 版 API 方式, 3.0 版的方式更複雜些. google 的前人分享文大都是 2.0 版 API 的方式.&lt;br /&gt;
&lt;br /&gt;
不過科學精神是, 試試看官方的範例(3.0)有沒有問題, 如果正常, 那我得考慮換方式寫, 於是花了一點時間 build 官方的 hello sample...結果還是一樣!&lt;br /&gt;
&lt;br /&gt;
這...因為這畫面已經是 Facebook App(or Lib) 的畫面了, 錯誤在對方裡面, 我完全沒有任何更多的資訊, 而且這東西跟手機的 Facebook 登入 cache 有關, 又移除了 Facebook 使用者資料重做授權...&lt;br /&gt;
&lt;br /&gt;
反覆查資料, 踹 (try) 程式, 移除授權, 重測試...整整一天沒任何進展.&lt;br /&gt;
&lt;br /&gt;
第二天 &quot;try&quot; 到中午, 精神感應到...&lt;br /&gt;
&lt;br /&gt;
我的手機 Facebook App 版本是多少? 查一下是 2.0.5, 再查一下目前 Facebook app 發行的版本是...哇是 3.5!!&amp;nbsp; 該不會是新的 SDK 與舊的 Facebook app 相容有問題!?&lt;br /&gt;
&lt;br /&gt;
更新了手機的 Facebook app 版本, 再跑一次 Facebook 官方 Sample 跟我的寫的部分都沒問題了...&lt;br /&gt;
&lt;br /&gt;
以上修電腦前沒先看插頭插好沒的經驗, 分享給偶遇此問題的朋友~&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/7060172972817427403/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2013/08/android-facebook.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/7060172972817427403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/7060172972817427403'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2013/08/android-facebook.html' title='Android facebook 貼文的小插曲'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE9IANEE-WyJ-uAuA9BsaNQDxrGnXLjo4ZeZ0xxg6c9n8Bq2qxTYMQMKdcbhyphenhyphennqK43-eUsj7x9V5vikc9Sygx2oEcE-GsmMURzTL69AICzQYglDT24SxlsLd5ZL_G4Ee1SXA9r_i8xe_k2/s72-c/2013-08-05_14-58-56.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-4032418469817295230</id><published>2013-04-08T23:36:00.000-07:00</published><updated>2013-04-10T19:01:05.702-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GIT"/><category scheme="http://www.blogger.com/atom/ns#" term="專案"/><title type='text'>如何轉移 SVN 專案為 GIT 管控</title><content type='html'>&lt;span style=&quot;color: #93c47d;&quot;&gt;我有一個既有的專案由 SVN 管控(遠端 server 1), 因為(*)我想要以後&lt;span style=&quot;color: red;&quot;&gt;改用&lt;/span&gt; GIT 管控&lt;/span&gt;&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;color: #93c47d;&quot;&gt;(遠端 server 2)&lt;/span&gt;, 但仍希望在 GIT 裡面還能看到舊有 SVN 版本的歷史紀錄.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;NOTE: (*) 任何理由, 我猜大部分是因為有某人堅持 ^^&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
其實這個的需求跟之前我發表的 SVN 與 GIT 協同工作是同一回事, 只是改另外一種 &quot;不回頭&quot; 的說法, 把原有的紀錄搬過來後, 原有的 SVN 庫不要了, 而且會以為一開始就是 GIT 管控...&lt;br /&gt;
&lt;br /&gt;
所以不再詳細寫下步驟, 快速的紀錄一下重點&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Converting a Subversion repository to Git&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;-----------------------------------------&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;by TortoiseGit and TortoiseSVN &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;1. 原有的 SVN 庫, 必須要能用 URL 方式 like svn://xx.xx.xx.xx/oo&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; 或 http://...方式存取, 而不是 file:///x:/xx/oo 這種檔案路徑方式,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; 如果   SVN 庫是放在本電腦用 file:// 方式, 請設置正確的 svn service 並&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; 啟動, 改用 SVN://...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;2. 建立一個新的 folder A, 操作 TortoiseGit clone, URL 填 SVN://...,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; 下面 &#39;From SVN Repository&#39; 勾選, 把整個 SVN clone 至這個 folder,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; 此時 folder A 為  GIT 管控, 但還與 SVN 庫連結著.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; 這個(folder A as GIT)可以查到全部的 SVN 歷史紀錄&lt;br /&gt;&lt;br /&gt;3.   a) GIT 庫仍在本機: 建立另一個新的 folder B, 操作 TortoiseGit 在這裡&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 建立一個新的 bare git 庫&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; b) &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;GIT 庫放在他機: &lt;/span&gt;遠端放 Git 庫的 server, 建立好一個新的 bare git 庫&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; 此 git 庫就是以後你要送交的地方(remote).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;4.  在 folder  A 處開啟 TortoiseGit, settings -&amp;gt; Git -&amp;gt; Remote 新增&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; 一個 remote 為 step 3 的位置.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;5. &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;把 folder A 全部的文件, push 至 step 4 新增 remote 的位置.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;6. (**)&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;建立另一個新的 folder C, &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;操作 TortoiseGit clone 自&lt;/span&gt; &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;step 4 的&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; 位置, 此 folder C&amp;nbsp;就是你最後要的工作路徑.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #76a5af;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; NOTE: (**) 我後來想到, 如果直接在 folder A 裡的 remote 設置&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #76a5af;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (as step 4 處), 把 original 的 SVN 的位置刪去, 不就好了?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #76a5af;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 那就&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;不需要在弄一個 folder C, 需再測試看看此法, 但建立&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #76a5af;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; folder C 新的 clone 也有順便測試以別人角色抓此 GIT 庫的好處.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;7. 砍掉 folder A, 砍掉 SVN 庫....&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;8. 以後就在 folder C 工作, 可以提交本地端也可以 push 至遠端(***)...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; P.S. (***) 對啦, 堅持的人總是說這個理由啦...:) &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
參考: &lt;a href=&quot;http://john.albin.net/git/convert-subversion-to-git&quot;&gt;http://john.albin.net/git/convert-subversion-to-git&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
P.S. 上面參考是用 git 指令操作, 感覺很複雜, 也許我的方法缺陷沒測到, 先這樣以後再說...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/4032418469817295230/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2013/04/svn-git.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/4032418469817295230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/4032418469817295230'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2013/04/svn-git.html' title='如何轉移 SVN 專案為 GIT 管控'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-4358761277966604348</id><published>2013-04-08T02:29:00.004-07:00</published><updated>2015-08-12T01:29:14.308-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GIT"/><category scheme="http://www.blogger.com/atom/ns#" term="專案"/><title type='text'>如何在 (老) Synology NAS 設置 GIT 伺服器 (2/2)</title><content type='html'>&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;b&gt;NOTE: (08/11/2015) 本文是多年前的老機器 DS107 的紀錄, 
這台機器的 DSM 已經停止更新, 當時他是無法透過 DSM 安裝 GIT 套件, 所以只能手動(ipkg)安裝, 最近購入 DS214 
發現新的 DSM 上已經有套件可以直接安裝, 如果你的 DSM 有支援線上安裝 GIT Server 請不要再看本文, 參見 &lt;a href=&quot;https://help.synology.com/dsm/?section=Git&amp;amp;version=2.3&amp;amp;link=git.htm&quot;&gt;Synology Git 套件說明 &lt;/a&gt;&lt;/b&gt;&lt;/span&gt;或新版的 &lt;a href=&quot;http://ob-brew.blogspot.com/2015/08/synology-nas-git.html&quot;&gt;如何在 Synology NAS 設置 GIT 伺服器 (新版) ^^&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
========================================&lt;br /&gt;
接...&lt;a href=&quot;http://ob-brew.blogspot.tw/2013/04/how-to-setup-git-server-on-synology-nas.html&quot;&gt;如何在 Synology NAS 設置 GIT 伺服器 (1/2)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
&lt;span style=&quot;color: #cc0000;&quot;&gt;以上軟體都安裝好了, 接著設置一個共用的 SSH 帳號(*)能在 GIT 專案裡使用...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #cc0000;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;color: #cc0000;&quot;&gt;NOTE: (*) 此採取一個共用的 SSH 帳號登入而已, 但各自能以 GIT client 端設置自己的名字 commit.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;14. 在 NAS 建立新使用者及共享目錄&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; a) 進入 NAS WEB 管理頁面&lt;br /&gt;&amp;nbsp;&amp;nbsp; b) 控制台 -&amp;gt; 共用資料夾, &quot;新增&quot; 一個新共用資料夾, 名稱 &quot;git-repo&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp; c) 控制台 -&amp;gt; 使用者帳號, &quot;新增&quot; 一個新使用者, 名稱 &quot;git.user&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在 &quot;權限設定 - 共用資料夾&quot; 頁面, 在 &quot;git-repo&quot; 的 &quot;可讀寫&quot; 打勾.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; P.S. 以上各名稱可以自訂.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;15. 修改 git.user 登入的家目錄, 跟 shell&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; a) 在 Windows 下執行 SSH client (PuTTY) 以 &#39;root&#39; 登入至 NAS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 要求輸入密碼時請直接鍵入網頁管理頁面(admin)用的密碼.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; b) 編輯 /etc/passwd 文件.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;vi /etc/passwd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; P.S. 1. vi 預設一進入為 command mode, 左下方有一個 &#39;-&#39; 號&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 移動游標 (方向鍵, 或 &#39;h/j/k/l&#39;) 至想要編輯的地方&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;2. 按 &#39;i&#39; (進入 insert mode, 左下方有一個 &#39;I&#39; 號)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. 結束編輯後, 按 &#39;Esc&#39; key 回到 command mode&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &amp;nbsp;&amp;nbsp; 4. 不存檔離開, 輸入 :q! 按 &#39;Enter&#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;存檔離開, 輸入 :wq 按 &#39;Enter&#39; 或直接輸入 ZZ&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; c) 修改 &quot;git.user&quot; 那一行由&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; git.user:x:1029:100:(描述):/var/services/homes/git.user:/sbin/nologin &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; git.user:x:1029:100:(描述):&lt;span style=&quot;color: red;&quot;&gt;/volume1/git-repo&lt;/span&gt;:&lt;span style=&quot;color: red;&quot;&gt;/bin/ash&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;16. 設置 /volume1/git-repo 目錄&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; NOTE: 建議修改 /volume1/git-repo 權限, 只有擁有者可讀寫.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;chmod 700 /volume1/git-repo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; a) 切換至 git.user&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;su - git.user&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; b) 確認此時家目錄已經為剛剛修改的路徑.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;pwd&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /volume1/git-repo&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; c) NOTE: 參考網站此時有做建立 &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;.profile .ssh &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;authorized_keys &lt;/span&gt;的動作, 但我沒做, 目前示每次連線都要輸入密碼, 不確定是否還有其他影響.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;17. 測試建立一個新的 git 庫&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;mkdir test&lt;/span&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;cd test&lt;/span&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;git init --bare&lt;/span&gt;&lt;br /&gt;Initialized empty Git repository in /volume1/git-repo/test/&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;ls&lt;/span&gt;&lt;br /&gt;HEAD         config       hooks        objects&lt;br /&gt;branches     description  info         refs&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;18. 測試連線抓上面的 git 庫&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Windows 端開啟 GIT Bash, 要求輸入密碼的地方(**), 輸入建立 git.user 時的私人密碼.&lt;br /&gt;&lt;br /&gt; $&lt;span style=&quot;color: red;&quot;&gt;git clone ssh://git.user@11.22.33.44/volume1/git-repo/test&lt;/span&gt;&lt;br /&gt;Cloning into &#39;test&#39;...&lt;br /&gt;git.user@11.22.33.44&#39;s password:&lt;br /&gt;warning: You appear to have cloned an empty repository.&lt;br /&gt;$&lt;span style=&quot;color: red;&quot;&gt;ls -a test/ &lt;/span&gt;&lt;br /&gt;.  ..  .git&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;   或用 TortoiseGIT clone 頁面, URL 處輸入 &quot;&lt;span style=&quot;color: red;&quot;&gt;ssh://git.user@11.22.33.44/volume1/git-repo/test&lt;/span&gt;&quot; 後按確定, 會彈出要求輸入密碼, 輸入後按&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;確定.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;NOTE: (**)參考網站有一個步驟我沒有做, 應該可以避免每次連線都要輸入 SSH 密碼...Add public keys of your git users in&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;...authorized_keys&lt;/span&gt;, 等下次有空再來試試看這個設置.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;19. 測試 commit and push (to server)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; (這裡省略了, 就是那些基本的 git 操作...)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;參考&amp;nbsp;&lt;a href=&quot;http://ti57.blogspot.tw/2013/01/how-to-setup-git-server-on-synology-nas.html&quot;&gt;How to setup a git server on a Synology NAS&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/4358761277966604348/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2013/04/synology-nas-git-22.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/4358761277966604348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/4358761277966604348'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2013/04/synology-nas-git-22.html' title='如何在 (老) Synology NAS 設置 GIT 伺服器 (2/2)'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-6222313528632449317</id><published>2013-04-02T02:55:00.000-07:00</published><updated>2015-08-12T01:29:22.738-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GIT"/><category scheme="http://www.blogger.com/atom/ns#" term="專案"/><title type='text'>如何在 (老) Synology NAS 設置 GIT 伺服器 (1/2)</title><content type='html'>&lt;span style=&quot;color: #93c47d;&quot;&gt;&lt;b&gt;NOTE: (08/11/2015) 本文是多年前的老機器 DS107 的紀錄, 這台機器的 DSM 已經停止更新, 當時他是無法透過 DSM 安裝 GIT 套件, 所以只能手動(ipkg)安裝, 最近購入 DS214 發現新的 DSM 上已經有套件可以直接安裝, 如果你的 DSM 有支援線上安裝 GIT Server 請不要再看本文, 參見 &lt;a href=&quot;https://help.synology.com/dsm/?section=Git&amp;amp;version=2.3&amp;amp;link=git.htm&quot;&gt;Synology Git 套件說明 &lt;/a&gt;&lt;/b&gt;&lt;/span&gt;或新版的 &lt;a href=&quot;http://ob-brew.blogspot.com/2015/08/synology-nas-git.html&quot;&gt;如何在 Synology NAS 設置 GIT 伺服器 (新版) ^^&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
========================================&lt;br /&gt;
本來想放棄用 NAS(with Linux) 這樣做, 但 google 了一下 GIT server 架在 Windows 或 Linux 給外網的人使用, 要搭 HTTP 或 SSH 等等, 安裝看來沒有誰比較簡單, 內網不管權限最簡單, 就是一個內部目錄位置就好了, 不然就是得用 FREE 或收費的 GIT HOST 雲端的服務. 所以還是嘗試看看...&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;b&gt;NOTE: 這是我的私人記錄, 不是教學! &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
環境:&lt;br /&gt;
&lt;br /&gt;
1. Synology DS107+ DSM 3.1-1636 版&lt;br /&gt;
2. 有實體 IP 11.22.33.44 (此為亂寫)&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;How to setup a GITserver on a Synology NAS&lt;br /&gt;-------------------------------------------&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;1. 開啟 SSH&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp; a) 用瀏覽器打開 NAS 的網頁管理頁面 &quot;11.22.33.44:5000&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp; b) 打開 &quot;控制台&quot; -&amp;gt; &quot;終端機&quot; 在 &quot;啟動SSH功能&quot; 打勾，按 &quot;確定&quot;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;2. 在 Windows 下執行 SSH client 以 &#39;root&#39; 登入至 NAS&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; NOTE: 1. 要求輸入密碼時請直接鍵入網頁管理頁面(admin)用的密碼.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 可以使用 Cygwin 的 ssh, 或是 &lt;a href=&quot;http://www.chiark.greenend.org.uk/~sgtatham/putty&quot;&gt;PuTTY&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: red;&quot;&gt;$ ssh 11.22.33.44 -l root -p 22&lt;/span&gt;&lt;br /&gt;root@11.22.33.44&#39;s password: xxxx&lt;br /&gt;&lt;br /&gt;BusyBox v1.16.1 (2011-10-23 04:33:17 CST) built-in shell (ash)&lt;br /&gt;Enter &#39;help&#39; for a list of built-in commands.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;NOTE: 一般 SSH 預設 port 為 22 &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;如果沒有改過&lt;/span&gt;, &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;-p 22 可以不用加.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;3.&amp;nbsp; 進入 /volume1/@tmp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;cd /volume1/@tmp&lt;/span&gt;&lt;br /&gt;DiskStation&amp;gt; ls -al&lt;br /&gt;drwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4096 Mar 25 15:25 .&lt;br /&gt;drwxrwxrwx&amp;nbsp;&amp;nbsp; 12 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4096 Apr&amp;nbsp; 2 11:10 ..&lt;br /&gt;drwxrwxrwt&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4096 Mar 25 15:25 php&lt;br /&gt;drwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4096 Apr&amp;nbsp; 1 18:53 webfm&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;4. 抓取 bootstrap&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; NOTE: 1. bootstrap 是安裝 ipkg 的執行劇本, 各 CPU 不一樣, 請先看好機&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 型的 CPU.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have&quot;&gt;What_kind_of_CPU_does_my_NAS_have&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 看好要下載正確的 xsh 文件 URL 位置:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://forum.synology.com/wiki/index.php/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc#Bootstrap&quot;&gt;Modifying_the_Synology_Server,_bootstrap,_ipkg_etc&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 為避免網址輸錯, 建議直接複製 xsh 文件的網址, 下面 wget 後面直&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 接 &quot;貼上&quot;.&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;wget http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh&lt;/span&gt;&lt;br /&gt;--16:47:02--&amp;nbsp; http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; `syno-x07-bootstrap_1.2-7_arm.xsh&#39;&lt;br /&gt;Resolving ipkg.nslu2-linux.org... 140.211.169.161&lt;br /&gt;Connecting to ipkg.nslu2-linux.org|140.211.169.161|:80... connected.&lt;br /&gt;HTTP request sent, awaiting response... 200 OK&lt;br /&gt;Length: 250,349 (244K) [text/plain]&lt;br /&gt;&lt;br /&gt;100%[====================================&amp;gt;] 250,349&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 190.89K/s&lt;br /&gt;&lt;br /&gt;16:47:04 (190.41 KB/s) - `syno-x07-bootstrap_1.2-7_arm.xsh&#39; saved [250349/250349]&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;ls -al&lt;/span&gt;&lt;br /&gt;drwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4096 Apr&amp;nbsp; 2 16:47 .&lt;br /&gt;drwxrwxrwx&amp;nbsp;&amp;nbsp; 12 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4096 Apr&amp;nbsp; 2 11:10 ..&lt;br /&gt;drwxrwxrwt&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4096 Mar 25 15:25 php&lt;br /&gt;-rw-rw-rw-&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 250349 Feb 20&amp;nbsp; 2012 syno-x07-bootstrap_1.2-7_arm.xsh&lt;br /&gt;drwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4096 Apr&amp;nbsp; 1 18:53 webfm&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;5. 改變 script 為可執行屬性&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;chmod +x syno-x07-bootstrap_1.2-7_arm.xsh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;6. 執行 script&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;sh syno-x07-bootstrap_1.2-7_arm.xsh&lt;/span&gt;&lt;br /&gt;Optware Bootstrap for syno-x07.&lt;br /&gt;Extracting archive... please wait&lt;br /&gt;bootstrap/&lt;br /&gt;bootstrap/bootstrap.sh&lt;br /&gt;bootstrap/ipkg-opt.ipk&lt;br /&gt;bootstrap/ipkg.sh&lt;br /&gt;bootstrap/optware-bootstrap.ipk&lt;br /&gt;bootstrap/wget.ipk&lt;br /&gt;1226+1 records in&lt;br /&gt;1226+1 records out&lt;br /&gt;Creating temporary ipkg repository...&lt;br /&gt;Installing optware-bootstrap package...&lt;br /&gt;Unpacking optware-bootstrap.ipk...Done.&lt;br /&gt;Configuring optware-bootstrap.ipk...Setting up ipkg arch-file&lt;br /&gt;Modifying /etc/rc.local&lt;br /&gt;Done.&lt;br /&gt;Installing ipkg...&lt;br /&gt;Unpacking ipkg-opt.ipk...Done.&lt;br /&gt;Configuring ipkg-opt.ipk...WARNING: can&#39;t open config file: /usr/syno/ssl/openssl.cnf&lt;br /&gt;Done.&lt;br /&gt;Removing temporary ipkg repository...&lt;br /&gt;Installing wget...&lt;br /&gt;Installing wget (1.12-2) to root...&lt;br /&gt;Configuring wget&lt;br /&gt;Successfully terminated.&lt;br /&gt;Creating /opt/etc/ipkg/cross-feed.conf...&lt;br /&gt;Setup complete.&lt;br /&gt;&lt;br /&gt;BusyBox v1.16.1 (2011-11-26 14:58:46 CST) built-in shell (ash)&lt;br /&gt;Enter &#39;help&#39; for a list of built-in commands.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;7. 刪除 script&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;rm syno-x07-bootstrap_1.2-7_arm.xsh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;8. 如果是 DSM 4.0 還需要修改 /root/.profile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; (....P.S. 我是 DSM 3.1 所以此處我是跳過)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 請參考下面連結, 第八步驟 NEW: If you have DSM 4.0 there is an additional step...&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://forum.synology.com/wiki/index.php/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc#Bootstrap&quot;&gt;Modifying_the_Synology_Server,_bootstrap,_ipkg_etc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;9. 執行 ipkg update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;ipkg update&lt;/span&gt;&lt;br /&gt;Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/Pa&lt;br /&gt;ckages.gz&lt;br /&gt;Inflating http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/Pack&lt;br /&gt;ages.gz&lt;br /&gt;Updated list of available packages in /opt/lib/ipkg/lists/cross&lt;br /&gt;Successfully terminated.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;10. 執行 ipkg upgrade&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;ipkg upgrade&lt;/span&gt;&lt;br /&gt;Nothing to be done&lt;br /&gt;Successfully terminated.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;11. 安裝 git&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;ipkg install git&lt;/span&gt;&lt;br /&gt;Installing git (1.8.2-2) to root...&lt;br /&gt;Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/git_1.8.2-2_arm.ipk&lt;br /&gt;package git suggests installing git-manpages&lt;br /&gt;Installing zlib (1.2.5-1) to root...&lt;br /&gt;Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/zlib_1.2.5-1_arm.ipk&lt;br /&gt;Installing openssl (0.9.7m-6) to root...&lt;br /&gt;Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/openssl_0.9.7m-6_arm.ipk&lt;br /&gt;Installing libcurl (7.24.0-1) to root...&lt;br /&gt;Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/libcurl_7.24.0-1_arm.ipk&lt;br /&gt;Installing diffutils (3.1-1) to root...&lt;br /&gt;Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/diffutils_3.1-1_arm.ipk&lt;br /&gt;Installing rcs (5.7-2) to root...&lt;br /&gt;Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/rcs_5.7-2_arm.ipk&lt;br /&gt;Installing expat (2.0.1-1) to root...&lt;br /&gt;Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/expat_2.0.1-1_arm.ipk&lt;br /&gt;Configuring diffutils&lt;br /&gt;update-alternatives: Linking //opt/bin/cmp to /opt/bin/diffutils-cmp&lt;br /&gt;update-alternatives: Linking //opt/bin/diff to /opt/bin/diffutils-diff&lt;br /&gt;update-alternatives: Linking //opt/bin/diff3 to /opt/bin/diffutils-diff3&lt;br /&gt;update-alternatives: Linking //opt/bin/sdiff to /opt/bin/diffutils-sdiff&lt;br /&gt;Configuring expat&lt;br /&gt;Configuring git&lt;br /&gt;Configuring libcurl&lt;br /&gt;Configuring openssl&lt;br /&gt;Configuring rcs&lt;br /&gt;Configuring zlib&lt;br /&gt;Successfully terminated.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;13. 設置 git 的各命令可以不帶路徑直接叫用&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; P.S. 這是因為 ipkg 安裝 git 是放在 /opt/bin 下, 非系統的 $PATH 下能找到, 有兩個方法:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a) 最簡單的方式是...建立檔案連結 (&quot;有點&quot; 像 Windows 的捷徑).&lt;br /&gt;&lt;br /&gt;DiskStation&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;for f in `ls /opt/bin/git*`&lt;/span&gt;&lt;br /&gt;&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;do&lt;/span&gt;&lt;br /&gt;&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;ln -s $f /usr/bin&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;gt; &lt;span style=&quot;color: red;&quot;&gt;done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b) 在建立 git user 後修改的 login 環境變數.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (....我是用 a 法, 所以此處我沒試)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 請參考下面連結, 第6步驟 &lt;a href=&quot;http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html&quot;&gt;...&quot;git-upload-pack&quot; on the NAS was not found in the $PATH....&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;color: #ffd966;&quot;&gt;14. 建立 git 帳號及共享目錄 &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
繼續...&lt;a href=&quot;http://ob-brew.blogspot.tw/2013/04/synology-nas-git-22.html&quot;&gt;如何在 Synology NAS 設置 GIT 伺服器 (2/2)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;參考:&lt;br /&gt;&lt;a href=&quot;http://ti57.blogspot.tw/2013/01/how-to-setup-git-server-on-synology-nas.html&quot;&gt;http://ti57.blogspot.tw/2013/01/how-to-setup-git-server-on-synology-nas.html&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html&quot;&gt;http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/6222313528632449317/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2013/04/how-to-setup-git-server-on-synology-nas.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/6222313528632449317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/6222313528632449317'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2013/04/how-to-setup-git-server-on-synology-nas.html' title='如何在 (老) Synology NAS 設置 GIT 伺服器 (1/2)'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-5570772592433481207</id><published>2012-11-08T02:50:00.002-08:00</published><updated>2012-12-12T02:33:59.324-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Unity3D"/><title type='text'>關於 Collider  與 Ragidbody   (碰撞體與剛體) 的碰撞偵測與怎麼做</title><content type='html'>&lt;span style=&quot;color: #e06666;&quot;&gt;(最近開始試用 Unity3D, 寫一下心得筆記, 但先說明不代表我的觀點是完全正確的, 畢竟我才用沒兩小時...)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: orange;&quot;&gt;關於 Collider 與 Ragidbody 的碰撞偵測與怎麼做&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
p.s. 一開始我有些不明白這兩個的差異, &lt;u&gt;我知道 Collider 是用在碰撞偵測, Ragidbody 是用在物理計算的需求, 但為什麼單純兩個有 Collider 的物體相撞沒有任何事件 (&lt;/u&gt;&lt;u&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;OnTriggerEnter)&lt;/span&gt;發生?&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
研究了一下, 此簡要設定&lt;u&gt;碰撞事件&lt;/u&gt;的步驟:&lt;br /&gt;
&lt;br /&gt;
1. 每個能被撞倒的物體(範例是隕石與子彈)都要有一個 Collider 元件 (檢查一下 Collider 元件有被啟動, 並調整好適合的大小/位置)&lt;br /&gt;
&lt;br /&gt;
2. 每個移動(要去撞人家)物體, 除自己也要有 Collider 外, 還需附加 Ragidbody 元件(*)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; a) 先點選要附加元件的 GameObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp; b) Menu-&amp;gt;Component-&amp;gt;Physics-&amp;gt;Ragibody&lt;br /&gt;
&amp;nbsp;&amp;nbsp; c) 暫時不考慮重力加速度, 核銷 Ragibody 參數的 &#39;Use Gravity&#39; checkbox&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
NOTE: (*)&lt;br /&gt;
&lt;span style=&quot;color: #93c47d;&quot;&gt;擁有 Ragidbody 的物體才會即時對場景中的每一個 Colliders 做偵測(要去撞人家), 沒有 Ragidbody 的物體, 儘管也許他能藉由程式碼操作被移動, 但 Unity3D 不考慮對其他的 Colliders 做偵測 (為了加速吧).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
例如: 場景中有 A B C&amp;nbsp; 三個物件, A 為 Ragidbody, B/C 非 Ragidbody,&amp;nbsp; 則 Unity3D 偵測&amp;nbsp; A&amp;lt;-&amp;gt;B, A&amp;lt;-&amp;gt;C 有沒有碰撞, 不偵測 B&amp;lt;-&amp;gt;C&lt;br /&gt;
&lt;br /&gt;
所以下面說法是正確的:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
場景中 &quot;只有&quot; 兩個移動物體(各有 Collider), 只要一個有設 Ragidbody 就足夠發生碰撞了!&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
3. 隕石(有加入 Ragidbody 元件)的 Collider 參數中, 核選 &#39;Is Trigger&#39; checkbox(**) &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; 在 GameObject 物件中加入&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;public class meteor : MonoBehaviour {&lt;br /&gt;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp; void OnTriggerEnter(Collider other) &lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (other.tag == &quot;bullet&quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 物件參數裡有指定 Tag&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (other.name == &quot;Bullet(Clone)&quot;)&amp;nbsp; // 用類別的名字&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(&quot;hit by bullet&quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 處理被碰撞時做什麼事, 注意: OnTriggerEnter 兩個相撞物件各自都會呼叫&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;public class bullet : MonoBehaviour {&lt;br /&gt;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp; void OnTriggerEnter(Collider other) &lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(&quot;OnTriggerEnter: &quot; + other.name + &quot; tag=&quot; + other.tag);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: (**)&lt;br /&gt;
這表示此碰撞體為一個觸發器, 產生碰撞事件, OnTriggerEnter/Exit/Stay(&lt;span style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;color: #6fa8dc;&quot;&gt;Collider&lt;/span&gt; &lt;/span&gt;other) 會被呼叫, 時此 Ragidbody 物件&lt;span style=&quot;color: red;&quot;&gt;不會&lt;/span&gt;加入物理引擎做運算(彈跳 etc).(***)&lt;br /&gt;
&lt;br /&gt;
4. 移動中隕石與子彈如果發生碰撞各自 OnTriggerEnter &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;就被&lt;/span&gt;呼叫了.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; (實際只要選擇其中一個處理即可 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: (***)&lt;br /&gt;
如果 &#39;Is Trigger&#39; 不用, 則會 Ragidbody 有物理作用, 此時碰撞改用 OnCollisionEnter/Exit/Stay(&lt;span style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;color: #6fa8dc;&quot;&gt;Collision&lt;/span&gt; &lt;/span&gt;collision)&lt;br /&gt;
&lt;pre class=&quot;code&quot; style=&quot;display: block;&quot;&gt;&lt;span style=&quot;color: #93c47d;&quot;&gt;注意此處傳遞的是 Collision 不是 Collider!&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code&quot; style=&quot;display: block;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class=&quot;code&quot; style=&quot;display: block;&quot;&gt;以上這樣子就明瞭了, Collider 的 &#39;Is Trigger&#39; 主要的用途了, 他一般是使用在類&lt;/pre&gt;
&lt;pre class=&quot;code&quot; style=&quot;display: block;&quot;&gt;似進入/離開/停留一個區域要&#39;觸發&#39;事件, 在那種不需要有物理推擠的時機.&lt;/pre&gt;
&lt;pre class=&quot;code&quot; style=&quot;display: block;&quot;&gt;&lt;/pre&gt;
&lt;pre class=&quot;code&quot; style=&quot;display: block;&quot;&gt;P.S. 一個 GameObject 可以附加好幾個 Collider, 所以可以按需求不同的作用一起發&lt;/pre&gt;
&lt;pre class=&quot;code&quot; style=&quot;display: block;&quot;&gt;生.&lt;/pre&gt;
&lt;pre class=&quot;code&quot; style=&quot;display: block;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/5570772592433481207/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/11/collider-ragidbody.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/5570772592433481207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/5570772592433481207'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/11/collider-ragidbody.html' title='關於 Collider  與 Ragidbody   (碰撞體與剛體) 的碰撞偵測與怎麼做'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-1473436056249580439</id><published>2012-08-30T22:10:00.003-07:00</published><updated>2014-02-18T21:10:07.194-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Andriod"/><title type='text'>用 Eclipse 每次編譯 (build) 時自動執行 bash &amp; ndk-build 命令</title><content type='html'>這裡是之前的的紀錄 &lt;a href=&quot;http://ob-brew.blogspot.tw/2012/06/eclipseandroid-sdkndk-22.html&quot;&gt;Eclipse+Android SDK/NDK 開發環境的過程 (2/2)&lt;/a&gt; 步驟 58~62 的附圖詳細說明, 今天 (離上次搞 andriod 有一段時間) 要弄一個別人的案子, 他沒有設置自動編譯 JNI, 對於要改 C 的我頗不方便, 我是少用 Eclipse 的人, 只想到可自動編譯阿, 但又忘了這些步驟, 而且是徹底沒印象怎麼做 :_ 還要回來找老文章 (還好我有留練習紀錄), 那...這次就將過程截圖下來吧, 並加上註解 ;-)&lt;br /&gt;
&lt;br /&gt;
前提:&lt;br /&gt;
&lt;br /&gt;
1. 你已經安裝好 cygwin + NDK 等環境了&lt;br /&gt;
2. 你已經做好手動建立 JNI 的 makefile 了 (或是拿別人的專案要改自動化NDK)&lt;br /&gt;
&lt;br /&gt;
如非上述, 請忽略本文吧. 還是從我之前的 Eclipse+Android SDK/NDK 開發環境的過程 1 &amp;amp; 2 開始練起.&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
58. (2) (用 Eclipse 每次編譯 (build) 時自動建立 libhello.so)&lt;br /&gt;
&lt;br /&gt;
59. menu -&amp;gt; &#39;Project&#39; -&amp;gt; &#39;Properties&#39;, 開啟 Properties for xx 對話盒&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
註: 如果在 Project Explorer 裡有多個專案, 請確認哪一個需要做自動執行 ndk-build, 先選好其中的一個 project, 也可以在其名字上按滑鼠右鍵彈出選單後, 選 &#39;Properties&#39;. 如果多個專案都需要自動執行 ndk-build, 那 &quot;各自&quot; 都要做下面的步驟!&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM9n3xaJ60UeMGMExzK_eIVY01R_2nCqSn9Bq3PYvtadzGUbvC1BpfDZL214OlsX135sWaGzTweU5Nr8eCdwwLOzL-BGHOO4hY7jChHp8Hiza2ZVkRgzvAA2fxmBT_masCoFaFX1W60yFG/s1600/%E5%9C%96%E7%89%87+000.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM9n3xaJ60UeMGMExzK_eIVY01R_2nCqSn9Bq3PYvtadzGUbvC1BpfDZL214OlsX135sWaGzTweU5Nr8eCdwwLOzL-BGHOO4hY7jChHp8Hiza2ZVkRgzvAA2fxmBT_masCoFaFX1W60yFG/s1600/%E5%9C%96%E7%89%87+000.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
60. 點選 Builders 項目, 按下 &#39;New...&#39;, 開啟 Choose configuration type&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 對話盒&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbGv4wLdqRF9gDsXIvTUy1_8mhwBgrHIiNaOeGUh_XIDxSDxi829P7ZaemqCawiedOBEf4bF8jxax1EftxOdENFWIMWARUplckGfe594saiKaikvzUsMvhARJQNtmvR5wn1RugheSqhSxs/s1600/%E5%9C%96%E7%89%87+002.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbGv4wLdqRF9gDsXIvTUy1_8mhwBgrHIiNaOeGUh_XIDxSDxi829P7ZaemqCawiedOBEf4bF8jxax1EftxOdENFWIMWARUplckGfe594saiKaikvzUsMvhARJQNtmvR5wn1RugheSqhSxs/s1600/%E5%9C%96%E7%89%87+002.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
61. 點選 Program 項目, 按下 &#39;OK&#39;, 開啟 Edit launch configuration&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; properties 對話盒&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Name: 隨你高興&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (建議取有意義的字, 我都用 &#39;NDK Builder&#39;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Main 標籤頁下 (如下圖):&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Location: &lt;b&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;C:\cygwin\bin\bash.exe&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Working Directory: (留白)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Arguments: &lt;b&gt;--login -c &quot;&lt;span style=&quot;color: #6aa84f;&quot;&gt;/cygdrive/c/android-ndk/ndk-build&lt;/span&gt; -C `cygpath -u &#39;${build_project}&#39; `&quot;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #cc0000;&quot;&gt; NOTE: 1. 以上 cygwin 及 android-ndk 路徑, 請依真實情況修改&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 另外一種 &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #e06666;&quot;&gt;&lt;span style=&quot;color: #cc0000;&quot;&gt;Arguments 寫法:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;--login -c &quot;cd &#39;${project_loc}&#39; &amp;amp;&amp;amp; &lt;span style=&quot;color: #6aa84f;&quot;&gt;/cygdrive/c/android-ndk/ndk-build&lt;/span&gt;&quot;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
註: 這裡非常重要, 就是實際手動執行 bash, ndk-build 的方式在此輸入好.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHe1mItvgcgEqD0UlwSbOrLTiYBO62GFnkP_S2RGRiLWmypb3s35fGk_pNZB9HudiXZFGNagy-K_oq_PeYR-gH6EM-ajpPmMjEEBof1qW8EXdV00oEMcyI4vg1LEMqluuERyii-DAbAwrW/s1600/%25E5%259C%2596%25E7%2589%2587+003.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHe1mItvgcgEqD0UlwSbOrLTiYBO62GFnkP_S2RGRiLWmypb3s35fGk_pNZB9HudiXZFGNagy-K_oq_PeYR-gH6EM-ajpPmMjEEBof1qW8EXdV00oEMcyI4vg1LEMqluuERyii-DAbAwrW/s1600/%25E5%259C%2596%25E7%2589%2587+003.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Refresh 標籤頁下 (如下圖):&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Refresh resources upon completion&amp;nbsp;&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
註:告知當 ndk-build 執行完畢後, 要接著刷新專案的哪些資源, 一般我們只選因為 ndk-build 執行後所影響(變更)的文件 (如 libs...), 這樣專案其他不相關的文件不會重新又編譯一次.&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; 選取下方的&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The Entire workspace&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 或&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Specific resources 項目&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 按 &#39;Specify Resources...&#39; 按鈕, 將專案中的 libs 目錄(*)&amp;nbsp; 打勾&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e69138;&quot;&gt;&amp;nbsp;註: (*) 第一次建立時, 若沒有編譯 jni 過, 可能沒有 libs 目錄, 建議編譯過 jni 後改選這個.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Recursive include sub-folders&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGI7wUszkssom1GGjXpFCh6PDqZMnaZ5J38Z1kdjOCQ7hpfjnFjCpJ8sCuJyISLXhZ5H2XhOfqozMdoAR18pS-ZxHuHr9TVSN64uxNFNaaLjqm-aRnR5g6rpZrmz0_ARR1d0ULG7UEIfDh/s1600/%25E5%259C%2596%25E7%2589%2587+004.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGI7wUszkssom1GGjXpFCh6PDqZMnaZ5J38Z1kdjOCQ7hpfjnFjCpJ8sCuJyISLXhZ5H2XhOfqozMdoAR18pS-ZxHuHr9TVSN64uxNFNaaLjqm-aRnR5g6rpZrmz0_ARR1d0ULG7UEIfDh/s1600/%25E5%259C%2596%25E7%2589%2587+004.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Environment 標籤頁下 (如下圖):&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (留白) &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwD9Eg7TBJbORPBme10dXYeRs_D6q66NhiwPt-3SGAjsJLKSPzYISqVlYJNjAlsfZRmVWfMDF1XnKNxurUXMXwf-zNGUa-3WMezUPf6jQzrp04k6855MYiKxDG0SF-ebfgJGV-APmcZQJT/s1600/%25E5%259C%2596%25E7%2589%2587+005.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwD9Eg7TBJbORPBme10dXYeRs_D6q66NhiwPt-3SGAjsJLKSPzYISqVlYJNjAlsfZRmVWfMDF1XnKNxurUXMXwf-zNGUa-3WMezUPf6jQzrp04k6855MYiKxDG0SF-ebfgJGV-APmcZQJT/s1600/%25E5%259C%2596%25E7%2589%2587+005.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Build Options 標籤頁下 (如上圖):&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allocate Console&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不勾&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Launch in background&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; After a &quot;Clean&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打勾 (或不勾看你習慣)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; During manual builds&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; During auto builds&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打勾 (或不勾看你習慣)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; During a &quot;Clean&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不勾 (或勾看你習慣)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Specify working set of relevant resources&amp;nbsp; 打勾&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e69138;&quot;&gt;&amp;nbsp;註: Eclipse help 裡說鑑於效能考量, 不建議 During auto builds 打勾, 我是覺得還好啦. 看你習不習慣 Eclipse 自動(暗自)啟動 ndk-build 囉.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfwkubAN1rpczd9ldHPG31auPAj2KxFRXbKLIVT2HOmX6uTWjze-94a7lNhfGGo4Mos5ofaamuecdWVCWE6NulwOUNp4I7u-s6HdNeh8hgnjfyM-l86MMFhaXXTVtehy91sONziyHx0-uF/s1600/%25E5%259C%2596%25E7%2589%2587+006.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfwkubAN1rpczd9ldHPG31auPAj2KxFRXbKLIVT2HOmX6uTWjze-94a7lNhfGGo4Mos5ofaamuecdWVCWE6NulwOUNp4I7u-s6HdNeh8hgnjfyM-l86MMFhaXXTVtehy91sONziyHx0-uF/s1600/%25E5%259C%2596%25E7%2589%2587+006.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 按 &#39;Specify Resources...&#39; 按鈕, 將專案中的 jni 目錄打勾&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #e69138;&quot;&gt;註: 這樣子只有 jni 資源目錄下的文件有變更時才會啟動自動編譯, 或是依你需求可以加選擇其他的資源目錄. (例如把 C/C++ source files 放在另外一個目錄, 如果不選 Specify working set of relevant resources 則專案內任一資源變動都會啟動自動編譯)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZJpKorJqDHd6aO6Ncwy9np8xjqS1OnNit_V8OOZxbn_Wwurvj9b_O56tlJqBh1o11uM2B566fHYCAs6IZQKj-3JF5QxXY5b64Au0M8se0IJeAbV7oaDkt8rVx9eHqLJPZQqxnWbNo42Ox/s1600/%25E5%259C%2596%25E7%2589%2587+008.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZJpKorJqDHd6aO6Ncwy9np8xjqS1OnNit_V8OOZxbn_Wwurvj9b_O56tlJqBh1o11uM2B566fHYCAs6IZQKj-3JF5QxXY5b64Au0M8se0IJeAbV7oaDkt8rVx9eHqLJPZQqxnWbNo42Ox/s1600/%25E5%259C%2596%25E7%2589%2587+008.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 設置好後, 按 &#39;Finish&#39; 回到上一層對話盒, 再按 &#39;OK&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy8j6ctxqolwQ9Ddxss01IgHC3KGzI68xwo7O-KZhFOjO3WkR9LnnntgL0gbxuFK6qkjKRJu9e0wMv3MGx_71ltsXMlm1GwMvsNpsWIyMJfbBRAN_C1_1bxxU-vhWVautR97etNeD2QvAD/s1600/%25E5%259C%2596%25E7%2589%2587+009.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy8j6ctxqolwQ9Ddxss01IgHC3KGzI68xwo7O-KZhFOjO3WkR9LnnntgL0gbxuFK6qkjKRJu9e0wMv3MGx_71ltsXMlm1GwMvsNpsWIyMJfbBRAN_C1_1bxxU-vhWVautR97etNeD2QvAD/s1600/%25E5%259C%2596%25E7%2589%2587+009.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
62. 此時, 你的 makefile 會依 Run the builder 的指定時機自動編譯, 或手動在選單-&amp;gt;Project-&amp;gt;Clean + Build Project&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 注意 NDK Builder 編譯的時候, Eclipse 的 Console 視窗會同手動一樣顯示 ndk-build 結果,下圖, Console 顯示 bash 執行  NDK Builder... &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7d-6RBtXah9zvlSGYcr-s4Hdd8b_qtJiT36ffTEAuIIKgcmcnuQ_Hl7IqgHqQ0QTbgwDzTDQSs6r9E6SSb0QSC4-vZ7axBcclXHGhJcjZ26S019Gj24ZEnSGDx2D9s6HQjPdTJBL9Wo5U/s1600/%25E5%259C%2596%25E7%2589%2587+010.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7d-6RBtXah9zvlSGYcr-s4Hdd8b_qtJiT36ffTEAuIIKgcmcnuQ_Hl7IqgHqQ0QTbgwDzTDQSs6r9E6SSb0QSC4-vZ7axBcclXHGhJcjZ26S019Gj24ZEnSGDx2D9s6HQjPdTJBL9Wo5U/s1600/%25E5%259C%2596%25E7%2589%2587+010.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #f6b26b;&quot;&gt;
註: 我經驗上, 以上是設置好了, 但 console 視窗卻沒有出現上圖執行過程...原因&lt;/div&gt;
&lt;div style=&quot;color: #f6b26b;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;color: #f6b26b;&quot;&gt;
1. 確認步驟 61 的 bash ndk-build 路徑有沒有正確...&lt;/div&gt;
&lt;div style=&quot;color: #f6b26b;&quot;&gt;
2. Eclipse 認定不需要執行 NDK Builder (也許因為你已經手動執行過一次了, 之後沒有再修改 C sources 或 makefile), 試著強制從選單-&amp;gt; clean project 看看...&lt;br /&gt;
P.S. 我都是修改一下 jni 的 makefile 內容, 多加一個空白按儲存, 就 (或按 F5 Refresh) 判定需要重新編譯了~&lt;/div&gt;
&lt;div style=&quot;color: #f6b26b;&quot;&gt;
3. C sources 的檔案應該要放到 Project Explorer 裡得 jni folder (或 working set of relevant resources 之處) 才能有相依關連.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
後記:&lt;br /&gt;
以上的設置 Eclipse 會放在 .externalToolBuilders 下 (NAME).launch, 我的是 NDK_Builder.launch, 這個文件可以直接編輯, 我把此文件隨著專案檔案控管, 當專案其他的成員 check out 時也能直接使用(或修改一下路徑)而不是重複以上的 NDK 環境設置.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&amp;gt;&lt;br /&gt;&amp;lt;launchConfiguration&lt;br /&gt;
..略... &lt;br /&gt;
&amp;lt;stringAttribute key=&quot;org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS&quot; value=&lt;span style=&quot;color: red;&quot;&gt;&quot;--login -c &amp;amp;quot;/cygdrive/c/android-ndk/ndk-build -C `cygpath -u &#39;${build_project}&#39; `&amp;amp;quot;&quot;&lt;/span&gt;/&amp;gt;&lt;br /&gt;..略... &lt;br /&gt;&amp;lt;/launchConfiguration&amp;gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/1473436056249580439/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/08/eclipse-refresh-ndk-build.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/1473436056249580439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/1473436056249580439'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/08/eclipse-refresh-ndk-build.html' title='用 Eclipse 每次編譯 (build) 時自動執行 bash &amp; ndk-build 命令'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM9n3xaJ60UeMGMExzK_eIVY01R_2nCqSn9Bq3PYvtadzGUbvC1BpfDZL214OlsX135sWaGzTweU5Nr8eCdwwLOzL-BGHOO4hY7jChHp8Hiza2ZVkRgzvAA2fxmBT_masCoFaFX1W60yFG/s72-c/%E5%9C%96%E7%89%87+000.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-835066946062383624</id><published>2012-08-21T19:15:00.000-07:00</published><updated>2012-08-21T19:30:51.499-07:00</updated><title type='text'>Visual Studio (as C/C++) 20xx 問題與解決 1</title><content type='html'>在我使用 VC6 至今(*) VS2010 已經數十年頭, 有些問題常常遇到但很多不知所以然....&lt;br /&gt;
&lt;br /&gt;
(*) sorry, 其實 m$ 在 vs200x 的時候我都還堅守 VC6 啦, 最近才開始混用 VC6 and VS2010&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
問題1：編譯時遇到下面訊息&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: red;&quot;&gt;
xx.lib(oo.obj) : warning LNK4204: &#39;C:\..\Debug\vc100.pdb&#39; is missing debugging information for referencing module; linking object as if no debug info&lt;/div&gt;
&lt;br /&gt;
原因：&lt;br /&gt;
Reason:&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
這警告是因為要去建立除錯版本時, 使用到外部的某一個程式庫卻沒有該庫對應的 xx.pdb (program database) 檔案, 這檔案包含了一些除錯需要的型別及符號的資訊.&lt;br /&gt;
&lt;br /&gt;
像是你編譯除錯版 (Debug) 的應用程式, 但你引用程式庫全都是發行 (Release) 版, 這樣你無法取得這些庫的偵錯資訊.&lt;br /&gt;
&lt;br /&gt;
It was warning about debugging with particular external lib but without its xx.pdb ( program database) file which contains the type and symbolic debugging information.&lt;br /&gt;
&lt;br /&gt;
It would appear that you&#39;re compiling your application in a Debug configuration, but the libraries you referenced are all Release builds, meaning there is no debug information for them.&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
另外一個可能性是... 該程式庫跟另外一個程式庫用的 .pdb 名字相同 (大多發生在採用預設的 vcx0.pdb), 但在拷貝中檔案被覆蓋過去了.&lt;br /&gt;
&lt;br /&gt;
or in the same name (default as vcx0.pdb) with another .pdb file and been overwrote while copying into.&lt;br /&gt;
&lt;br /&gt;
3)&lt;br /&gt;
這也發生在一個 &#39;rebuild solution&#39; 之後, 如果有兩個以上 .vcproj 檔案, 他共享相同的暫時輸出 (intermediate-output) 目錄, 而發生存取相同名字的 &#39;Program Database File Name&#39; (vcx0.pdb) 衝突.&lt;br /&gt;
&lt;br /&gt;
It is also seen after a &#39;rebuild solution&#39;, if two .vcproj files share the same intermediate-output directory and there is a conflict in accessing the same &#39;Program Database File Name&#39; (vcx0.pdb).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
解決 1 和 2:&lt;br /&gt;
Solution for 1 and 2:&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
就忽略這些警告吧 (大家都這樣吧...)&lt;br /&gt;
&lt;br /&gt;
just ignored these warnings (you should already now...)&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
建立一個程式庫, 把偵錯訊息嵌入進去 (也就是不用 .pdb)&lt;br /&gt;
&lt;br /&gt;
在 Visual Studio 2005/2008/2010 你可以在設定裡這樣做:&lt;br /&gt;
&lt;br /&gt;
Project Properties -&amp;gt; C++ -&amp;gt; General -&amp;gt; Debug Information Format 改成 “/Z7″&lt;br /&gt;
&lt;br /&gt;
一般這選項是預設為 “/ZI” 這樣把偵錯訊息產生在另外的檔案.&lt;br /&gt;
&lt;br /&gt;
make the library to embed the debug information (aka without .pdb)&lt;br /&gt;
&lt;br /&gt;
In Visual Studio 2005/2008/2010 one can do that by setting:&lt;br /&gt;
&lt;br /&gt;
Project Properties -&amp;gt; C++ -&amp;gt; General -&amp;gt; Debug Information Format to “/Z7″&lt;br /&gt;
&lt;br /&gt;
usually this option was set to “/ZI” which generates debug info to external file.&lt;br /&gt;
&lt;br /&gt;
3)&lt;br /&gt;
否則找到該 &#39;pdb&#39; (含偵錯訊息) 檔案, 必須放置在跟程式庫相同的目錄下.&lt;br /&gt;
&lt;br /&gt;
otherwise find the &#39;PDB&#39; file (with debug info) must be placed in the same folder as the libaray.&lt;br /&gt;
&lt;br /&gt;
more info: http://msdn.microsoft.com/en-us/library/958x11bc%28v=VS.100%29.aspx&lt;br /&gt;
&lt;br /&gt;
4)&lt;br /&gt;
在 Visual Studio 2005 之前...&lt;br /&gt;
&lt;br /&gt;
避免這個警告,試著按下面步驟建立自己的除錯模式的程式庫：&lt;br /&gt;
&lt;br /&gt;
a) 把 &quot;Debug Information Format&quot; 從 /ZI 改成 Disabled &amp;lt;-- 注意:只有在 vs2005 更早的版本才有&lt;br /&gt;
b) 把 &quot;Enable Minimal Rebuild&quot; 從 /Gm 改成 Disabled&lt;br /&gt;
c) 改 &quot;Basic Runtime Checks&quot; 為 Default&lt;br /&gt;
&lt;br /&gt;
這基本跟預設的發行磨是設定差不多,少了最佳化. 使用這些設定,你可以移除全部的 OBJ, PDB, 和 IDB 檔案並且使用這些程式庫不會有連結的警告.&lt;br /&gt;
&lt;br /&gt;
before Visual Studio 2005...&lt;br /&gt;
&lt;br /&gt;
To prevent these warnings, try the following to debug mode for my lib:&lt;br /&gt;
&lt;br /&gt;
a) Switched the &quot;Debug Information Format&quot; from /ZI to Disabled &amp;lt;-- note: only available before vs2005&lt;br /&gt;
b) Switched the &quot;Enable Minimal Rebuild&quot; from /Gm to Disabled&lt;br /&gt;
c) Changed &quot;Basic Runtime Checks&quot; to Default&lt;br /&gt;
&lt;br /&gt;
This is basically the same setup as the default release mode settings, minus the optimization. Using these settings, you can remove all of the OBJ, PDB, and IDB files from compilation and just use the LIB file with no linker warnings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
解決 3:&lt;br /&gt;
Solution for 3:&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
為每一個 .vcproj 修改 Intermediate Output 目錄名字&lt;br /&gt;
(在 &#39;Configuration Properties &amp;gt; General &amp;gt; Intermediate Directory&#39; 之下)&lt;br /&gt;
&lt;br /&gt;
change the Intermediate Output dir for one .vcproj &lt;br /&gt;
(under &#39;Configuration Properties &amp;gt; General &amp;gt; Intermediate Directory&#39;)&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
修改 &#39;Program Database File Name&#39; 為另外一個非 VC70.pdb 的名字&lt;br /&gt;
(在 &#39;Configuration Properties &amp;gt; C/C++ &amp;gt; Output Files &amp;gt; Program Database File Name&#39; 之下)&lt;br /&gt;
&lt;br /&gt;
change the name of the &#39;Program Database File Name&#39; to something different than vc70.pdb.&lt;br /&gt;
(under &#39;Configuration Properties &amp;gt; C/C++ &amp;gt; Output Files &amp;gt; Program Database File Name&#39;)</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/835066946062383624/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/08/visual-studio-as-cc-20xx-1.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/835066946062383624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/835066946062383624'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/08/visual-studio-as-cc-20xx-1.html' title='Visual Studio (as C/C++) 20xx 問題與解決 1'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-1544133952038028131</id><published>2012-07-01T20:33:00.002-07:00</published><updated>2012-07-02T00:13:23.318-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="程式設計的藝術"/><title type='text'>如何在 Vistual Studio C++ 6 用其他的顯示字體</title><content type='html'>Visual Stdio C++ 6 算是有點老但是又常常在戰場上不退的編譯器. 因為相較他的繼承者, 她更小, 穩, 對於只寫 C/C++ MFC/Win32 的程式師, 她沒有過多的無用的功能, 是非常好用的. 我到現在還是繼續使用 (推薦加 Visual Assist X 的外掛).&lt;br /&gt;
&lt;br /&gt;
跟大多數的編輯器一樣, 在程式碼編輯器上, 她永許你自訂使用不同的字體. 但不知道為什麼她的字體的設置, 不是把全部的系統安裝的字體全都列出來可供挑選. 我不知道她的選法, 就少少十幾種左右. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFdpdpEj8TiDwI0Ym7loeAU-Dd7luPyMMYJaZd8xIIBkFmi7JR2daU65YGHWtwGSEf475kzkFKaJmq6WloSoGN-GjxcaKHEgAoDJ6X0HEkUiFzbXk-qeVNoXtosCBwm8-MzA7vD-upw9h9/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFdpdpEj8TiDwI0Ym7loeAU-Dd7luPyMMYJaZd8xIIBkFmi7JR2daU65YGHWtwGSEf475kzkFKaJmq6WloSoGN-GjxcaKHEgAoDJ6X0HEkUiFzbXk-qeVNoXtosCBwm8-MzA7vD-upw9h9/s1600/1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
這些字體換了反而顯示效果更差, 把網路有很多漂亮的程式設計用的字體(稍後我會分享介紹) 安裝到系統, 但這裡的列表還是不會列出, 那要怎麼突破這個限制呢!&lt;br /&gt;
&lt;br /&gt;
多年前我發現了一個方法, 這個方法我不曾在網路哪裡看過, 也許有人也知道, 秘而不宣, 或在網海中也很難搜尋到...今天就把他分享出來, 算是 &quot;程式設計的藝術&quot; 專題的 &quot;前篇&quot; 吧!&lt;br /&gt;
&lt;br /&gt;
方法是利用修改 VC6 存在系統的 Register 表的設定值&lt;br /&gt;
&lt;br /&gt;
詳細步驟如下:&lt;br /&gt;
&lt;br /&gt;
首先我們要他在 Register 登錄表裡面產生一個自訂字體的項目&lt;br /&gt;
&lt;br /&gt;
1. 在 VC6 選單 -&amp;gt; &#39;Tools&#39; -&amp;gt; &#39;Option&#39;&lt;br /&gt;
&lt;br /&gt;
2. 選 &#39;Format&#39; 頁&lt;br /&gt;
&lt;br /&gt;
3. 改變 &#39;Category:&#39; 到你想要自訂字體的項目 (如: Source Windows 或其他)&lt;br /&gt;
&lt;br /&gt;
4. 改變 &#39;Font:&#39; 選擇列表裡面任何一個非預設的字體 (如: 細明體)&lt;br /&gt;
&lt;br /&gt;
5. 以上 3,4 如果有不同視窗, 請各自都挑一個字體, 完成後, 按 &#39;OK&#39; 離開, 離開 VC6&lt;br /&gt;
&lt;br /&gt;
接著我們要開始修改 Register 登錄表.&lt;br /&gt;
&lt;br /&gt;
6. 在命令列(或 &#39;開始&#39; -&amp;gt;&#39;執行&#39;)裡, 執行登錄編輯程式 regedit&lt;br /&gt;
&lt;br /&gt;
7. 找到下面項目&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;color: orange;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HKEY_CURRENT_USER\Software\Microsoft\Devstudio\6.0\Format&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 打開, 在其下你會看到出現, 你剛剛修改(step 3)的 Source Windows 或其他視窗&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
8. 點上面的機碼, 修改下面的鍵值&lt;br /&gt;
&lt;br /&gt;
&lt;b style=&quot;color: orange;&quot;&gt;&amp;nbsp;&amp;nbsp; FontFace&lt;br /&gt;&amp;nbsp;&amp;nbsp; FontSize&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 為你想到的字體與大小&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQmA_P8nphQJTXG0zTmqk_z8yBw9Z1TkW6nosPPIWtMhD60hdyFMlncvyydRcG1jAqk4zziz6QcY6E6Y-soy-AX5cAXxs_5d-97Uzp9OC1Dvak_oRJB4kOcEj3WGkQePOTisqeDHLK8BD9/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQmA_P8nphQJTXG0zTmqk_z8yBw9Z1TkW6nosPPIWtMhD60hdyFMlncvyydRcG1jAqk4zziz6QcY6E6Y-soy-AX5cAXxs_5d-97Uzp9OC1Dvak_oRJB4kOcEj3WGkQePOTisqeDHLK8BD9/s1600/2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; p.s. 字體的名字需要是已經安裝在系統字體的 &quot;顯示名字&quot;, 很簡單你在其他的可以選擇字體的應用程式列出的名字&lt;br /&gt;
&lt;br /&gt;
9. 重開 VS6  ^^&lt;br /&gt;
&lt;br /&gt;
有圖有真相, 改用 Dina 字體 :-)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQS7V8IpVIgdsccnyQzDCySxmx2yTXo-zik3hctXHQF8-Leq_WI1f1N1qDDtGEHYwpNe3G7IGFG1XgzWnJoxtDb6uZ2LBgt24WU-O2-uzx0KdlXC1_2NWd9BlonzZERR7KPNMzk0pJ3nCu/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQS7V8IpVIgdsccnyQzDCySxmx2yTXo-zik3hctXHQF8-Leq_WI1f1N1qDDtGEHYwpNe3G7IGFG1XgzWnJoxtDb6uZ2LBgt24WU-O2-uzx0KdlXC1_2NWd9BlonzZERR7KPNMzk0pJ3nCu/s1600/3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
附未修改前的採預設字體的樣子&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg60MCeDRb4Q3Pew5fVhcnwFmlq9Pn2oJdzRbuzDOl-TtWOzMiA47d3u30-KtzdZ18mSCNL5lAs098ch5ylctl8EsPRV14GXVU04oobF7gmLHwi69M15XH6QvzFtaJhkFkTGLMU4ITTUrSC/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg60MCeDRb4Q3Pew5fVhcnwFmlq9Pn2oJdzRbuzDOl-TtWOzMiA47d3u30-KtzdZ18mSCNL5lAs098ch5ylctl8EsPRV14GXVU04oobF7gmLHwi69M15XH6QvzFtaJhkFkTGLMU4ITTUrSC/s1600/4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
P.S. 我後來就把鍵值直接輸出為一個文件, 下次就直接點選改入~ 如果你懶惰的話....&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;-------------------------------------&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Windows Registry Editor Version 5.00&lt;br /&gt;&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Format]&lt;br /&gt;&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Format\Output Window]&lt;br /&gt;&quot;FontFace&quot;=&quot;Dina&quot;&lt;br /&gt;&quot;FontSize&quot;=dword:0000000c&lt;br /&gt;&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Format\Source Browser]&lt;br /&gt;&quot;FontFace&quot;=&quot;Dina&quot;&lt;br /&gt;&quot;FontSize&quot;=dword:0000000a&lt;br /&gt;&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Format\Source Window]&lt;br /&gt;&quot;FontFace&quot;=&quot;Dina&quot;&lt;br /&gt;&quot;FontSize&quot;=dword:0000000c&lt;br /&gt;&lt;br /&gt;[HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Format\Workspace Window]&lt;br /&gt;&quot;FontFace&quot;=&quot;Dina&quot;&lt;br /&gt;&quot;FontSize&quot;=dword:0000000a&lt;/span&gt;&lt;/div&gt;
&amp;nbsp;-------------------------------------</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/1544133952038028131/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/07/vistual-studio-c-6.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/1544133952038028131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/1544133952038028131'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/07/vistual-studio-c-6.html' title='如何在 Vistual Studio C++ 6 用其他的顯示字體'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFdpdpEj8TiDwI0Ym7loeAU-Dd7luPyMMYJaZd8xIIBkFmi7JR2daU65YGHWtwGSEf475kzkFKaJmq6WloSoGN-GjxcaKHEgAoDJ6X0HEkUiFzbXk-qeVNoXtosCBwm8-MzA7vD-upw9h9/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-9153517025777128325</id><published>2012-06-25T22:18:00.000-07:00</published><updated>2013-04-08T03:21:20.724-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Andriod"/><title type='text'>Eclipse+Android SDK/NDK 開發環境的過程 (2/2)</title><content type='html'>接...&lt;a href=&quot;http://ob-brew.blogspot.tw/2012/03/eclipseandroid-sdkndk.html&quot; target=&quot;_blank&quot;&gt;Eclipse+Android SDK/NDK 開發環境的過程 (1/2)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
接著要整合 NDK 產生的 lib (as xx.so) 能在 Eclipse 專案裡使用...&lt;/div&gt;
&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
46. 測試 NDK 與 Eclipse 整合 (僅開發 C/C++ libraries 需要)&lt;br /&gt;
&lt;br /&gt;
47. 執行 Eclipse.exe&lt;br /&gt;
&lt;br /&gt;
48. 開啟 step 25~31 的專案為基礎, 如果沒有請重做&lt;br /&gt;
&lt;br /&gt;
49. 在 Package Explorer 下新增一個目錄 &#39;jni&#39;&lt;br /&gt;
&lt;br /&gt;
50. 在 &#39;jni&#39; 目錄下新增一個 &#39;File&#39; 命名為 Andriod.mk, 編輯內容如下&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCAL_PATH := $(call my-dir)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; include $(CLEAR_VARS)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Here we give our module name and source file(s)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCAL_MODULE&amp;nbsp;&amp;nbsp;&amp;nbsp; := hello&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCAL_SRC_FILES := hello.c&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; include $(BUILD_SHARED_LIBRARY)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; P.S. 如果 C 文件不只一個可以在 LOCAL_SRC_FILES 裡面列出&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
51. 在 &#39;jni&#39; 目錄下新增一個 &#39;File&#39; 命名為 hello.c, 編輯內容如下&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; #include &amp;lt;jni.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; jstring &lt;b style=&quot;color: #f1c232;&quot;&gt;Java_com_xx_hello_HelloActivity_stringFromJNI&lt;/b&gt;(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; JNIEnv* env, jobject javaThis)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return (*env)-&amp;gt;NewStringUTF(env, &quot;Hello from native C code!&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: &lt;span style=&quot;color: #e06666;&quot;&gt;以上函數命名的方式, 不能隨便取, 必須符合 java 的規範&lt;/span&gt;, 規則是:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在呼叫 C 的 Java 程式中是&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; package &lt;b&gt;com.xx.hello&lt;/b&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class &lt;b&gt;HelloActivity&lt;/b&gt; extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 所以函數命名開頭是:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) package &lt;b&gt;com.xx.hello&lt;/b&gt; -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Java_&lt;b&gt;com_xx_hello&lt;/b&gt;_...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 接者&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2) public class &lt;b&gt;HelloActivity&lt;/b&gt; extends Activity -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;HelloActivity&lt;/b&gt;_...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最後&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3) &lt;b&gt;stringFromJNI &lt;/b&gt;是在 java 中實際要呼叫的函數名稱&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 以上 Java_&lt;b&gt;com_xx_hello&lt;/b&gt;_ + &lt;b&gt;HelloActivity&lt;/b&gt;_ + &lt;b&gt;stringFromJNI &lt;/b&gt;三個&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 組合起來, 請依真實情況修改函數名字&lt;br /&gt;
&lt;br /&gt;
52. 修改 HelloActivity.java, 如下參見 1,2,3,4,5&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 1. need to use AlertDialog later (just for verifying)&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; import android.app.AlertDialog;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public class HelloActivity extends Activity {&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 2. load the library - name matches jni/Android.mk&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.loadLibrary(&quot;&lt;b&gt;hello&lt;/b&gt;&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 3. declare the native code function - must match hello.c&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private native String &lt;b&gt;stringFromJNI&lt;/b&gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 4. this is where we call the native code&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String hello = &lt;b&gt;stringFromJNI&lt;/b&gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 5. show this string (just for verifying)&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new AlertDialog.Builder(this).setMessage(hello).show();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
53. (1)(用手動建立 libhello.so) 或 (2)&lt;/div&gt;
&lt;br /&gt;
54. 執行 cygwin.bat (step 35 安裝目錄下)&lt;br /&gt;
&lt;br /&gt;
55. 切換當前目錄到 project 所在的目錄下, 如 C:\oo\workspace\hello\&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 請依真實情況修改路徑名&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 命令列提示字元 $ 下, 請輸入 cd /cygdrive/c/oo/workspace\hello&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 後, 按 Enter 鍵執行&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果正確, 當前目錄提示會改為以上路徑&lt;br /&gt;
&lt;br /&gt;
56. 執行 ndk-build&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 命令列提示字元 $ 下, 請輸入 /cygdrive/c/xx/android-ndk/ndk-build&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 後, 按 Enter 鍵執行&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 請依真實情況修改路徑名&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果正確, 此時 NDK 開始編譯 c 並做出 so (為 library)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; P.S. 檢查 C:\oo\workspace\hello\libs\armeabi\ 下有沒有做出&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; libhello.so&lt;br /&gt;
&lt;br /&gt;
57. 結束 cygwin 視窗, 回到 Eclipse, menu-&amp;gt; &#39;Run&#39; -&amp;gt; &#39;Run&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果一切順利, AVD 上面會有正確的結果 (彈出 AlertDialog 顯示 C 程式&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 庫的指定的字串), 如果不正常結束, 可能是 Library 沒有正確連結, 請檢&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 查一下執行時期的 log 訊息,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; menu -&amp;gt; &#39;Window&#39; -&amp;gt; &#39;Show View&#39; -&amp;gt; &#39;LogCat&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; AndroidRuntime: Caused by: java.lang.UnsatisfiedLinkError: Library&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; hello not found&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
58. (2) (用 Eclipse 每次編譯(refresh)時自動建立 libhello.so)&lt;/div&gt;
&lt;br /&gt;
59. menu -&amp;gt; &#39;Project&#39; -&amp;gt; &#39;Properties&#39;, 開啟 Properties for xx 對話盒&lt;br /&gt;
&lt;br /&gt;
60. 點選 Builders 項目, 按下 &#39;New...&#39;, 開啟 Choose configuration type&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 對話盒&lt;br /&gt;
&lt;br /&gt;
61. 點選 Program 項目, 按下 &#39;OK&#39;, 開啟 Edit launch configuration&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; properties 對話盒&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Name: 隨你高興&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (建議取有意義的字, NDK Builder likes)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Main 標籤頁下:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Location: C:\cygwin\bin\bash.exe&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Working Directory: (留白)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Arguments:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --login -c &quot;cd &#39;${project_loc}&#39; &amp;amp;&amp;amp; /cygdrive/c/android-ndk/ndk-build&quot;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 以上 cygwin 及 android-ndk 路徑, 請依真實情況修改&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Refresh 標籤頁下:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Refresh resources upon completion&amp;nbsp;&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ??&amp;nbsp; 選取下方的&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The Entire workspace&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 或&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Specific resources 項目&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 按 &#39;Specify Resources...&#39; 按鈕, 將專案中的 libs 目錄(*)打勾&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; P.S. (*) 第一次建立 jni 時還沒編譯過可能沒有 libs 目錄&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Recursive include sub-folders&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打勾&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Environment 標籤頁下:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (留白) &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Build Options 標籤頁下:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allocate Console&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不勾&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Launch in background&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; After a &quot;Clean&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打勾 (或不勾看你習慣)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; During manual builds&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; During auto builds&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打勾&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; During a &quot;Clean&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不勾 (或勾看你習慣)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Specify working set of relevant resources&amp;nbsp; 打勾&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 按 &#39;Specify Resources...&#39; 按鈕, 將專案中的 jni 目錄打勾&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 設置好後, 按 &#39;OK&#39; 回到上一層對話盒, 再按 &#39;OK&#39;&lt;br /&gt;
&lt;br /&gt;
62. 此時, 你的 hello.c 會依 Run the builder 指定時機自動編譯, 或修改一&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 下 hello.c 內容, 按 F5 Refresh&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Eclipse 的 Console 視窗會同手動一樣顯示 ndk-build 結果&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
最後: 有圖有真相&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibtfadZ0Cfcc3mN4inpz59QIxRcnRm_-A50ABxDQpxNflJgLHuvbuYU3_gpmhNzBWgXovuSXXBCUxDFEMy_1Kd8DJbCbPiP_L3z71jSbEy8kuekzDP-xujoGIkufvveQ4D4Cyppih6D9lu/s1600/%25E5%259C%2596%25E7%2589%2587+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibtfadZ0Cfcc3mN4inpz59QIxRcnRm_-A50ABxDQpxNflJgLHuvbuYU3_gpmhNzBWgXovuSXXBCUxDFEMy_1Kd8DJbCbPiP_L3z71jSbEy8kuekzDP-xujoGIkufvveQ4D4Cyppih6D9lu/s320/%25E5%259C%2596%25E7%2589%2587+1.png&quot; width=&quot;196&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
Q&amp;amp;A:&lt;/div&gt;
---------------------------------------------------------------------&lt;br /&gt;
Q1: It appeared &quot;Android requires compiler compliance level 5.0 or 6.0.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Found &#39;1.7&#39; instead. Please use Android Tools &amp;gt; Fix Project&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Properties&quot; message&lt;br /&gt;
&lt;br /&gt;
A:&amp;nbsp; (from &lt;a href=&quot;http://stackoverflow.com/questions/7637144/android-requires-compiler-compliance-level-5-0-or-6-0-found-1-7-instead-plea&quot; target=&quot;_blank&quot;&gt;stackoverflow&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; That isn&#39;t the problem, Android SDK isn&#39;t x64, but works ok with&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; x64 jvm (and x64 eclipse IDE).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; As it said, you must set project compatibility to Java 5.0 or &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Java 6.0.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Right-click on your project and select &quot;Properties&quot;, pick &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Java Compiler&quot;, check &quot;Enable project specific settings&quot; and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; select 1.5 or 1.6 from &quot;Compiler compliance settings&quot; select box&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; and click Apply.&lt;br /&gt;
&lt;br /&gt;
Q2: After apk compiled can&#39;t run, it said &quot;This selection cannot be&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; launched and there are no recent launches&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
A:&amp;nbsp; Use &#39;Run As&quot; &#39;Andriod application&#39;&lt;br /&gt;
&lt;br /&gt;
Q3: After run as it said &quot;Android library projects cannot be launched&quot;&lt;br /&gt;
&lt;br /&gt;
A:&amp;nbsp; Please don&#39;t run as library.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Right-click on your project and select &quot;Properties&quot;, pick &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Andriod&quot;, unselect the &quot;is Library&quot; checkbox and click Apply.</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/9153517025777128325/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/06/eclipseandroid-sdkndk-22.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/9153517025777128325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/9153517025777128325'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/06/eclipseandroid-sdkndk-22.html' title='Eclipse+Android SDK/NDK 開發環境的過程 (2/2)'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibtfadZ0Cfcc3mN4inpz59QIxRcnRm_-A50ABxDQpxNflJgLHuvbuYU3_gpmhNzBWgXovuSXXBCUxDFEMy_1Kd8DJbCbPiP_L3z71jSbEy8kuekzDP-xujoGIkufvveQ4D4Cyppih6D9lu/s72-c/%25E5%259C%2596%25E7%2589%2587+1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-3237454075190943452</id><published>2012-06-20T00:36:00.003-07:00</published><updated>2012-06-25T23:38:04.130-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App Server"/><title type='text'>4. Install the phpMyadmin 3.x</title><content type='html'>Install the phpMyadmin 3.x&lt;br /&gt;
&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
(v3.5.1 tested)&lt;br /&gt;
&lt;br /&gt;
STEP1: Apache, PHP and MySQL must be installed first...&lt;br /&gt;
&lt;br /&gt;
STEP2: download and unzip the phpMyAdmin-3.x-all-languages.zip to&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; your&amp;nbsp; Apache web doc folder like [Apache-folder]\htdocs&lt;br /&gt;
&lt;br /&gt;
STEP3: copy config.sample.inc.php and rename it to config.inc.php&lt;br /&gt;
&lt;br /&gt;
STEP4: edit config.inc.php to use http authentication&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $cfg[&#39;Servers&#39;][$i][&#39;auth_type&#39;] = &#39;http&#39;;&lt;br /&gt;
&lt;br /&gt;
STEP5: open url http://127.0.0.1/[phpMyAdmin-folder]/index.php&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enter user name &#39;root&#39; and password set in MySQL&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FAQ&lt;br /&gt;
&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
After open url http://127.0.0.1/[phpMyAdmin-folder]/index.php&lt;br /&gt;
&lt;br /&gt;
Q1: met &quot;#1045 - Access denied for user &#39;root&#39;@&#39;localhost&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; (using password: NO)&quot;&lt;br /&gt;
&lt;br /&gt;
A: make sure the auth configure was set correctly&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; default in libraries/config.default.php was set as &#39;config&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; it means you need to specify the user/password in config&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; rename the config.sample.inc.php to config.inc.php&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; And check your config.inc.php file to see what type of&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; authentication is used.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; look for $cfg[&#39;Servers&#39;][$i][&#39;auth_type&#39;] you have three to choose&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; from, HTTP, cookie or config.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Because if you use HTTP or cookie authentication you don&#39;t need to&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; put your user/password in the config.inc.php file. you enter it&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; when you start up phpMyadmin.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; If you use the config method you only need to enter your user/pass&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; into the following two fields&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $cfg[&#39;Servers&#39;][$i][&#39;user&#39;]= &#39;&#39;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $cfg[&#39;Servers&#39;][$i][&#39;password&#39;] = &#39;&#39;;&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Q2: met &quot;Wrong permissions on configuration file, should not be world&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; writable!&quot;&lt;br /&gt;
&lt;br /&gt;
A: make sure the config.inc.php must not be writable&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; use:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; chmod a-w config.inc.php</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/3237454075190943452/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/06/install-phpmyadmin-3x.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/3237454075190943452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/3237454075190943452'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/06/install-phpmyadmin-3x.html' title='4. Install the phpMyadmin 3.x'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-6290144411406387746</id><published>2012-06-20T00:35:00.004-07:00</published><updated>2012-06-25T23:39:10.354-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App Server"/><title type='text'>3. Install the MySQL 5.5.X w/ Apache+PHP</title><content type='html'>Install the MySQL 5.5.X w/ Apache+PHP&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
(v5.5.25 tested)&lt;br /&gt;
&lt;br /&gt;
STEP1:&amp;nbsp; Apache and PHP must be installed first...&lt;br /&gt;
&lt;br /&gt;
STEP2:&amp;nbsp; download MySQL Community Server and execute the&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mysql-5.5.x-win32.msi&lt;br /&gt;
&lt;br /&gt;
STEP3:&amp;nbsp; must be &#39;I accept the terms...&#39;&lt;br /&gt;
&lt;br /&gt;
STEP4:&amp;nbsp; recommend to use Custom setup so it can change to install to&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\MySQL&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; just for easy accessing&lt;br /&gt;
&lt;br /&gt;
STEP5:&amp;nbsp; use default features as options and install&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
STEP6:&amp;nbsp; launch the configuration wizard to configure the MySQL server&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; most you can use default instance setting (just click next!)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 2 and 7...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. should be &#39;Detailed configuration&#39;, click &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. recommend to use &#39;Server Machine&#39; when ask server type if&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; it is alone&amp;nbsp; server machine otherwise should be&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Developer Machine&#39;, click &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. should be &#39;Multifunctional Database&#39;, click &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4. in InnoDB settings, it depends by you, click &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5. should be &#39;Decision Support&#39;, click &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6. in networking options, should be both enabled, click &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7. recommend to use &#39;Best Support for Multilingualism&#39; when&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as character set&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8. should be &#39;Install As Windows Service&#39;, click &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9. enter a root password for accessing the MySQL server&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10. run execute in last step&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To test if worked&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
STEP7:&amp;nbsp; cut below (w/o separate line) as a simple PHP file into&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Apache folder]\htdocs\sql.php&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the &quot;password&quot; must change to your MySQL root password&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------------------------------------&lt;br /&gt;
&lt;div style=&quot;color: #6fa8dc;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $link = mysql_connect (&quot;localhost&quot;, &quot;root&quot;, &quot;password&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or die (&quot;Error: Could not connect!&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; print (&quot;Connected successfully!&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; mysql_close ($link);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?&amp;gt;&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------------------------------------&lt;br /&gt;
&lt;br /&gt;
STEP8:&amp;nbsp; open url http://127.0.0.1/sql.php in http browser to see if&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MySQL work&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVO-N3fJcLGOnQqv7kQaWCTA1zDbsHwN-Bq_lBB-hBX8hRXKBw5aPOV3S6cpyvr7nQ7MveAQfH2Ny8uZd2RjsAM70TMnkEPAdHnRCxrNjAPrtvAZ7z9tG1kPldEpqg4c9W8cSxez72E-SL/s1600/%E5%9C%96%E7%89%87+4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVO-N3fJcLGOnQqv7kQaWCTA1zDbsHwN-Bq_lBB-hBX8hRXKBw5aPOV3S6cpyvr7nQ7MveAQfH2Ny8uZd2RjsAM70TMnkEPAdHnRCxrNjAPrtvAZ7z9tG1kPldEpqg4c9W8cSxez72E-SL/s1600/%E5%9C%96%E7%89%87+4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FAQ&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
After open url http://127.0.0.1/sql.php&lt;br /&gt;
&lt;br /&gt;
Q1: got the &#39;Fatal error Call to undefined function mysql_connect()&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; message&lt;br /&gt;
&lt;br /&gt;
A1: it is because the PHP don&#39;t setup correctly, please check if PHP&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; installed first&lt;br /&gt;
&lt;br /&gt;
A2: also see Q2.A1/A2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
Q2: if it appeared as an empty page&lt;br /&gt;
&lt;br /&gt;
A1: it is because the PHP don&#39;t load the MySQL extension, look STEP7&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; in PHP section also check the php.ini in PHP installed folder,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if the extension=php_mysql.dll uncommented&lt;br /&gt;
&lt;br /&gt;
A2: the php.ini not loaded?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; check the [Apache folder]\conf\httpd.conf in the last lines if it&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; appears&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PHPIniDir &quot;C:\PHP\&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LoadModule php5_module &quot;C:\PHP\php5apache2_2.dll&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; then this is strange! if it removes the last &#39;\&#39; of PHP folder in&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PHPIniDir, like PHPIniDir &quot;C:\PHP&quot;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; and RESTART the Apache service and the MySQL module loaded!</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/6290144411406387746/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/06/install-mysql-55x-w-apachephp.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/6290144411406387746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/6290144411406387746'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/06/install-mysql-55x-w-apachephp.html' title='3. Install the MySQL 5.5.X w/ Apache+PHP'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVO-N3fJcLGOnQqv7kQaWCTA1zDbsHwN-Bq_lBB-hBX8hRXKBw5aPOV3S6cpyvr7nQ7MveAQfH2Ny8uZd2RjsAM70TMnkEPAdHnRCxrNjAPrtvAZ7z9tG1kPldEpqg4c9W8cSxez72E-SL/s72-c/%E5%9C%96%E7%89%87+4.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-5816861398869106881</id><published>2012-06-20T00:35:00.000-07:00</published><updated>2012-06-25T23:39:35.905-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App Server"/><title type='text'>2. Install PHP 5.2.x/5.3.x with MySQL extentions</title><content type='html'>Which version do I choose?&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
If you are using PHP with Apache 1 or Apache2 from apache.org you&lt;br /&gt;
&lt;br /&gt;
need to use the VC6 versions of PHP&lt;br /&gt;
&lt;br /&gt;
VC6 Versions are compiled with the legacy Visual Studio 6 compiler&lt;br /&gt;
&lt;br /&gt;
If you are using PHP with IIS you should use the VC10 versions of PHP&lt;br /&gt;
&lt;br /&gt;
VC10 Versions are compiled with the Visual Studio 2010 compiler and&lt;br /&gt;
&lt;br /&gt;
have improvements in performance and stability. The VC10 versions&lt;br /&gt;
&lt;br /&gt;
require you to have the Microsoft 2010 C++ runtime installed&lt;br /&gt;
&lt;br /&gt;
*** Do NOT use VC10 version with offical apache.org binaries ***&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install PHP 5.2.x/5.3.x with MySQL extensions&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
(v5.3.14-VC9 tested)&lt;br /&gt;
&lt;br /&gt;
STEP1:&amp;nbsp; Apache must be installed first!&lt;br /&gt;
&lt;br /&gt;
STEP2:&amp;nbsp; download and execute php-5.2.x-win32-installer.msi with&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default setting&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: if you had installed the Apache from ASF build,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use php-5.2.x-Win32-VC6-x86.msi&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if you had installed the Apache from Apache Lounge build,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use php-5.3.x-Win32-VC10-x86.msi&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
STEP3:&amp;nbsp; must be &#39;I accept the terms...&#39;&lt;br /&gt;
&lt;br /&gt;
STEP4:&amp;nbsp; when ask dest folder, recommend change to C:\PHP just for&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; easy accessing&lt;br /&gt;
&lt;br /&gt;
STEP5:&amp;nbsp; when ask in Web Server Setup, click &#39;Apache 2.2.x Module&#39;&lt;br /&gt;
&lt;br /&gt;
STEP6:&amp;nbsp; when ask Apache Configuration Directory, browser to your&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Apache folder installed, C:\Apache2 likes&lt;br /&gt;
&lt;br /&gt;
STEP7:&amp;nbsp; in &#39;Choose Items to Install&#39;, open extensions tree, make sure&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the MySQL item was selected, click &#39;Next&#39; button and install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To test if worked&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
STEP8:&amp;nbsp; RESTART the httpd service through the Apache Monitor in task&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bar or run from [Apache folder]\bin\httpd.exe&lt;br /&gt;
&lt;br /&gt;
STEP9:&amp;nbsp; cut below(w/o separate line) as a simple PHP file into&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Apache folder]\htdocs\hello.php&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6fa8dc;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;html&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;PHP Test&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php echo &#39;&amp;lt;p&amp;gt;Hello World&amp;lt;/p&amp;gt;&#39;; ?&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/html&amp;gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------------------------------------&lt;br /&gt;
&lt;br /&gt;
STEP9:&amp;nbsp;&amp;nbsp; open url http://127.0.0.1/hello.php in web browser to see if&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PHP work&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbH7YR6S66WUgMgrEDa-uAP5bX5HPYNpFXaYMSOF7r9RSQ4RcP1CmLx7ISiM5Rh0n5jE_Jhh0JgrOnSSxiziOeCf11r-V0cSfYXmOHraXaTVv5NanUFR1QQEq-XkVo_-in9GET5gQS9V2M/s1600/%E5%9C%96%E7%89%87+3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbH7YR6S66WUgMgrEDa-uAP5bX5HPYNpFXaYMSOF7r9RSQ4RcP1CmLx7ISiM5Rh0n5jE_Jhh0JgrOnSSxiziOeCf11r-V0cSfYXmOHraXaTVv5NanUFR1QQEq-XkVo_-in9GET5gQS9V2M/s1600/%E5%9C%96%E7%89%87+3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FAQ&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
After open url http://127.0.0.1/hello.php&lt;br /&gt;
&lt;br /&gt;
Q1: parsing PHP.ini error&lt;br /&gt;
&lt;br /&gt;
A: try re-install in C:\PHP with &#39;short&#39; name folder&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; it is PHP installer bug, in the later version has been fixed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
Q2: PHP.ini can&#39;t be loaded, the Apache fail to load MySQL extension&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; for PHP module&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; NOTE: later version apache 2.2.17 + php 5.2.14, apache 2.2.19 +&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; php 5.3.6 has no above problem...&lt;br /&gt;
&lt;br /&gt;
A: this occurred in apache 2.2.4 + php 5.2.2&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; check the ..\Apache folder\conf\httpd.conf in the last lines if it&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; appears&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PHPIniDir &quot;C:\PHP\&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LoadModule php5_module &quot;C:\PHP\\php5apache2_2.dll&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; then this is strange error! the PHP folder text has a&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; unnecessary &#39;/&#39;&amp;nbsp; end, you must modify the PHPIniDir&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; without &#39;\&#39; end and also modify LoadModule php5_module setting&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; to &quot;C:\PHP\php5apache2_2.dll&quot; although this line doesn&#39;t matter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
Q3: failed to find the libmysql.dll while httpd restarting&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; NOTE: later version apache 2.2.17 + php 5.2.14, apache 2.2.19 +&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; php 5.3.6 has no above problem...&lt;br /&gt;
&lt;br /&gt;
A: this occurred in apache 2.2.4 + php 5.2.2&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; check the Environment Variables of system, the PATH must has&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; C:\PHP (or where PHP installed), it may need to restart system to&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; let Apache get new PATH setting&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; else you can just copy PHP/libmysql.dll to your Windows\system32&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; folder, it need restart the httpd again</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/5816861398869106881/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/06/install-php-52x53x-with-mysql.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/5816861398869106881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/5816861398869106881'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/06/install-php-52x53x-with-mysql.html' title='2. Install PHP 5.2.x/5.3.x with MySQL extentions'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbH7YR6S66WUgMgrEDa-uAP5bX5HPYNpFXaYMSOF7r9RSQ4RcP1CmLx7ISiM5Rh0n5jE_Jhh0JgrOnSSxiziOeCf11r-V0cSfYXmOHraXaTVv5NanUFR1QQEq-XkVo_-in9GET5gQS9V2M/s72-c/%E5%9C%96%E7%89%87+3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-5683488238158194688</id><published>2012-06-20T00:34:00.001-07:00</published><updated>2012-06-25T23:39:48.928-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App Server"/><title type='text'>1. Install the Apache 2.2.X</title><content type='html'>Install the Apache 2.2.X&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
A) from Official ASF build from http://httpd.apache.org/&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
(v2.2.22 tested)&lt;br /&gt;
&lt;br /&gt;
STEP1:&amp;nbsp; download and execute apache_2.2.x-win32-x86-no_ssl.msi most&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with default setting&lt;br /&gt;
&lt;br /&gt;
STEP1:&amp;nbsp; must be &#39;I accept the terms...&#39;, click &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
STEP2:&amp;nbsp; in Server Information,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enter your &#39;Network Domain&#39; &amp;amp; &#39;Server Name&#39; and you don&#39;t&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; have one just enter &#39;localhost&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE:&amp;nbsp;&amp;nbsp; you can still edit lines below in the&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Apache-folder]\conf\httpd.conf&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; after installed...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Listen 80&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerAdmin admin@example.com&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerName www.example.com:80&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enter a email address&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pick &#39;for All Users, on Port 80, as a Service&#39;, click &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
STEP3:&amp;nbsp; when ask&amp;nbsp; setup type, pick &#39;Typical&#39;, click &#39;Next&#39; button&lt;br /&gt;
&lt;br /&gt;
STEP4:&amp;nbsp; when ask dest folder, recommend change to C:\Apache2.2 just&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for easy accessing, click &#39;Next&#39; and install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To test if worked&lt;br /&gt;
----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
STEP5:&amp;nbsp; open url http://127.0.0.1 or http://localhost in web browser&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to see if httpd work&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcp77U_reG50xMvWqC8NdkE_8RqXeATimqQQQjSiaAiGdfPdF4ANKTU_iL_k9b5Rm5PD7WXoE1nQ2ZXbpCcHwEbyhaku-QRWjKkNRtP97gtjBFsra2jeTe3jmv2r9fnya-aD8U4u8ZnLsH/s1600/%E5%9C%96%E7%89%87+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcp77U_reG50xMvWqC8NdkE_8RqXeATimqQQQjSiaAiGdfPdF4ANKTU_iL_k9b5Rm5PD7WXoE1nQ2ZXbpCcHwEbyhaku-QRWjKkNRtP97gtjBFsra2jeTe3jmv2r9fnya-aD8U4u8ZnLsH/s1600/%E5%9C%96%E7%89%87+1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
B) from Apache Lounge Build from http://www.apachelounge.com/&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
(v2.2.22 tested)&lt;br /&gt;
&lt;br /&gt;
STEP1:&amp;nbsp; must first install (not needed for Win7) the Visual C++ 2010&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SP1 Redist Package&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://www.microsoft.com/download/en/details.aspx?id=8328&lt;br /&gt;
&lt;br /&gt;
STEP2:&amp;nbsp; download and unzip (it has a Apache2 folder inside)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpd-2.2.x-win32-x86-ssl.zip&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to C:\ so you see C:\Apache2\bin...&lt;br /&gt;
&lt;br /&gt;
STEP3:&amp;nbsp; edit the [Apache-folder]\conf\httpd.conf&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. if you change the root folder name from C:\Apache2, please&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edit all &#39;C:/Apache2&#39; inside to meet the right folder&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: Please use slash &#39;/&#39; as folder dividing&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. you need to replace all &#39;www.example.com&#39; with your own&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server name&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: if you don&#39;t has one and want to run just in local&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; computer, then replace with &#39;localhost&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. edit ServerAdmin for the right email address&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4. you may need to edit below lines&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Listen 80&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerName www.example.com:80&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for port 80 conflicted/reassigned&lt;br /&gt;
&lt;br /&gt;
STEP3:&amp;nbsp; from C:\Apache2\bin,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A) run directly in a DOS box&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;httpd.exe&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B) or install httpd as a service&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;httpd.exe -k install&lt;br /&gt;
&lt;br /&gt;
STEP4:&amp;nbsp; run Apache Monitor (use when httpd as a service)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double click ApacheMonitor.exe, or put it in your startup&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; folder&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pick in task bar to see if httpd service started or you can&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop/restart it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To test if worked&lt;br /&gt;
---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
STEP5:&amp;nbsp; open url http://127.0.0.1 or http://localhost in web browser&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to see if httpd work&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcp77U_reG50xMvWqC8NdkE_8RqXeATimqQQQjSiaAiGdfPdF4ANKTU_iL_k9b5Rm5PD7WXoE1nQ2ZXbpCcHwEbyhaku-QRWjKkNRtP97gtjBFsra2jeTe3jmv2r9fnya-aD8U4u8ZnLsH/s1600/%25E5%259C%2596%25E7%2589%2587+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcp77U_reG50xMvWqC8NdkE_8RqXeATimqQQQjSiaAiGdfPdF4ANKTU_iL_k9b5Rm5PD7WXoE1nQ2ZXbpCcHwEbyhaku-QRWjKkNRtP97gtjBFsra2jeTe3jmv2r9fnya-aD8U4u8ZnLsH/s1600/%25E5%259C%2596%25E7%2589%2587+1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FAQ&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
Q: Windows could not start the Apache2 on local computer&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Errors reported: &quot;httpd.exe could not reliably determine the&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; server&#39;s fully qualified domain name...&quot;&lt;br /&gt;
&lt;br /&gt;
A1: ServerName automatic determiation has failed...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; check the &#39;ServerName&#39; setting in the&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; [Apache-folder]\conf\httpd.conf&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; if it has a comment mark it means to determind the domain name&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; automatically seems it don&#39;t succeed, just remove the comment mark&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; and assign a right one&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #ServerName www.example.com:80&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerName www.example.com:80&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if you don&#39;t has one and want to run just in local&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; computer then change to&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerName localhost:80&lt;br /&gt;
&lt;br /&gt;
A2: Port 80 conflicted...&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; There is some other program listening on port 80, usual suspects&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; are Skype, NOD32, TeamViewer,...Some others&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Way to correct it is either shutting down the program that&#39;s using&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; the port 80 or configure it to use a different port. Finally you&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; still can configure the Apache to listen on a different port.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1) Way to diagnose which app, if any, has bound to port 80 is run&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; the netstat with those options&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;gt;netstat -a -p tcp&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; look for :80 next to the local IP address (second column)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; and find the PID (last column). Then, on the task manager you can&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; find which process has the PID you got in the previous step. (You&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; might need to add the PID column on the task manager)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2) To reconfigure the port for httpd.exe please edit the&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; httpd.conf as follows&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Listen 8080&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerName www.example.com:8080&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or in local computer&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerName localhost:8080&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; restart the Apache server after changing the port number</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/5683488238158194688/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/06/install-apache-22x.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/5683488238158194688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/5683488238158194688'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/06/install-apache-22x.html' title='1. Install the Apache 2.2.X'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcp77U_reG50xMvWqC8NdkE_8RqXeATimqQQQjSiaAiGdfPdF4ANKTU_iL_k9b5Rm5PD7WXoE1nQ2ZXbpCcHwEbyhaku-QRWjKkNRtP97gtjBFsra2jeTe3jmv2r9fnya-aD8U4u8ZnLsH/s72-c/%E5%9C%96%E7%89%87+1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-6914116450235574343</id><published>2012-06-20T00:33:00.000-07:00</published><updated>2012-06-24T19:28:12.637-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App Server"/><title type='text'>Web App 應用需要四個基礎套件</title><content type='html'>很多 Web App 應用大多需要四個基礎套件安裝&lt;br /&gt;
&lt;br /&gt;
1. Apache&lt;br /&gt;
2. PHP&lt;br /&gt;
3. MySQL&lt;br /&gt;
4. phpMyadmin&lt;br /&gt;
&lt;br /&gt;
我已知有一個 AppServ 組織作了一條龍的套件, 但我沒試過, 因為我總是自己一個一個安裝.&lt;br /&gt;
其實每一個安裝過程大部分都很簡單, 只是偶而會遇到怪事.我現在養成習慣記錄下來.&lt;br /&gt;
&lt;br /&gt;
下面我想就分成四篇筆記心得分享一下囉. 抱歉目前是用破英文寫的心得. 不是我耍屌, 只是安裝當時就直接記錄, 輸入英文比較快, 如果有人看不懂, 我想你也不適合自己 &quot;親手&quot; 用這些東西吧. 有空我會改中文. 中文字畢竟漂亮阿.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/6914116450235574343/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/06/web-app-1.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/6914116450235574343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/6914116450235574343'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/06/web-app-1.html' title='Web App 應用需要四個基礎套件'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-7985711784723077130</id><published>2012-05-01T19:18:00.000-07:00</published><updated>2012-06-25T23:41:04.615-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="程式設計筆記"/><title type='text'>OpenGL 貼圖錯誤!?</title><content type='html'>最近開始進行用 OpenGL 實作 2D 圖形庫, 在開發過程出現了一個困擾的錯誤:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;連續兩個四邊型(由兩三角形組成)物件各使用各自不同的貼圖, 但顯示後卻都是同一張圖!!&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
我花了很多時間想要找出哪裡作錯, 是我 glBindTexture 用錯導致? 是我不熟悉 OpenGL 的 pipeline 流程?&lt;br /&gt;
&lt;br /&gt;
後來我換了電腦測試, 同一個 exe 在公司裡的電腦執行是正確的!&lt;br /&gt;
&lt;br /&gt;
我越發奇怪,想真的是我不懂 OpenGL 了, 我開始找了網路最簡單的 texture 範例 (NeHe網站), 人家可是 OpenGL 高手可以了吧, 我改了一下把他的範例原是一張貼圖, 弄成貼兩張不同圖, 結果在家裡的電腦跑還是一樣出錯!&lt;br /&gt;
&lt;br /&gt;
我又把該修改範例的 exe 丟給我朋友測試, 他說他那邊正常!&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
這兩天除了拜 goolge 外, 我反覆修改我的程式碼, 終於試出了兩個方法了, 兩張圖之間先開關一次 texture 功能或 unbind 一次 texture 如下&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnable (texture 2d)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gBindTexture (1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texture by glDrawArray ( )&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---&amp;gt;glDiable (texture 2d)&lt;/div&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---&amp;gt;glEnable (texture 2d)&lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gBindTexture (2)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; texture by glDrawArray ( )&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 或是&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;br /&gt;
&lt;div style=&quot;color: #e69138;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; glBindTexture ( 0 ) &lt;/div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gBindTexture (2)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .... &lt;br /&gt;
&lt;br /&gt;
兩張圖就可以各自顯示了, 可以我個性, 這是&lt;u&gt;沒有道理的解法&lt;/u&gt;. 接受沒道理的解法就是向 BUG 認輸. &lt;br /&gt;
&lt;br /&gt;
旋即我想到了一件事. 是不是我的顯示卡 driver 有問題? 我家理的電腦是用最新的 Win7, 安裝OS 時沒出現有 Driver不相容的警告阿, Windows 都上全彩高解析顯示正常了!?&lt;br /&gt;
&lt;br /&gt;
回到家, 還是查了一下我的 win7, 發現裝置那邊一直都用 OS 內建的顯示卡 driver, oh~ 該不會....&lt;br /&gt;
&lt;br /&gt;
下載 OpenGL info 小工具程式, 用他去查...&lt;br /&gt;
&lt;br /&gt;
廠商: microsoft&lt;br /&gt;
Renderer: GDI renderer&lt;br /&gt;
version 1.1 &lt;br /&gt;
幾乎全部的 entension 都不支持&lt;br /&gt;
&lt;br /&gt;
抓了幾個 OpenGL test 跑, 有幾個一跑就當機,&amp;nbsp; 有的說需要 OpenGL 1.2 才給跑, 有的跑起來有錯誤, 有一個能跑, 他是貼圖人頭自轉, 但 FPS 7!!! &lt;br /&gt;
&lt;br /&gt;
所以我上了 nvidai 抓了最新的版本安裝, 再跑一次 OpenGL info...&lt;br /&gt;
&lt;br /&gt;
廠商: NVidia&lt;br /&gt;
Renderer: Geforce 7300GT &lt;br /&gt;
version 2.2&lt;br /&gt;
幾乎全部的 entension 都支持了&lt;br /&gt;
&lt;br /&gt;
測試剛剛那個貼圖人頭自轉 FPS 230!!!&lt;br /&gt;
&lt;br /&gt;
把我程式&quot;沒道理的解法&quot;移除, 再跑一次也正常了!&lt;br /&gt;
&lt;br /&gt;
所以估計是 GDI opengl renderer 的&amp;nbsp; bug..&lt;br /&gt;
&lt;br /&gt;
反正真正要玩遊戲本來就安裝最新顯卡來的 driver, 不會有人用 GDI renderer 那麼差的效能, 所以 bug 微軟根本不管. (對啦, 我是好幾年沒玩商業 3D 遊戲了)&lt;br /&gt;
&lt;br /&gt;
所以經驗是: Opengl 程式一開始需要檢查 version 和 vendor, 看到 vendor = Microsoft 就發出警告!</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/7985711784723077130/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/06/opengl.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/7985711784723077130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/7985711784723077130'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/06/opengl.html' title='OpenGL 貼圖錯誤!?'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-296940553090947970.post-1926575321641017861</id><published>2012-03-21T02:10:00.000-07:00</published><updated>2014-02-18T20:57:02.391-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Andriod"/><title type='text'>Eclipse+Android SDK/NDK 開發環境的過程 (1/2)</title><content type='html'>&lt;div style=&quot;color: #6aa84f;&quot;&gt;
&lt;span style=&quot;color: red;&quot;&gt;後記:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;02/11/2014, 我重灌電腦, 再度安裝 andriod 開發環境, 發現 andriod 官網已經把下述之 &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;Eclipse IDE 跟 SDK (step 7~21) 整合成一個 adt-bundle 了, 下載該包後,&lt;b&gt; &lt;/b&gt;解壓縮到硬碟任何地方即可以. (但前提 JRE 還是要先裝), 我沒有再新建專案, 去測試剩餘的步驟的有無差異.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;參見&lt;/span&gt;&lt;a href=&quot;http://ob-brew.blogspot.tw/2014/02/andriod.html&quot;&gt;再度安裝 andriod 開發環境&lt;/a&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-------------------&lt;br /&gt;
Eclipse+Android SDK/NDK 開發環境的過程&lt;/div&gt;
&lt;br /&gt;
以下為我記錄第一次就搞定 Eclipse + Android SDK/NDK 開發環境的過程&lt;br /&gt;
&lt;br /&gt;
時間為 2012/3/21 當時下載的最新版軟體及 SDK&lt;br /&gt;
&lt;br /&gt;
其實在參照人家分享的過程中, 我發現 &lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
1. Cygwin 根本不用裝到 devel 整個套件 &lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
2. 不必修改任何 Cygwin 的 bash profile 檔案, 就可以讓 ndk 正常運作, 可&lt;/div&gt;
&lt;div style=&quot;color: #e06666;&quot;&gt;
&amp;nbsp;&amp;nbsp; 能是我習慣 &quot;不用多做的事情盡量不要做&quot; 吧, 所以試著少做一些看看...&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
以下:&lt;br /&gt;
p.s. 這是記錄日誌, 不是教學~&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
1. 下載 Java SE(Standard Edition) Development Kit&lt;br /&gt;
&amp;nbsp;&amp;nbsp; url: http://www.oracle.com/technetwork/java/javase/downloads/&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ref: jdk-7u3-windows-i586.exe (84.1MB)&lt;br /&gt;
&lt;br /&gt;
2. 下載 Eclipse IDE for Java Developers&lt;br /&gt;
&amp;nbsp;&amp;nbsp; url: http://www.eclipse.org/downloads/&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ref: eclipse-java-indigo-SR2-win32.zip (128MB)&lt;br /&gt;
&lt;br /&gt;
3. 下載 Android SDK&lt;br /&gt;
&amp;nbsp;&amp;nbsp; url: http://developer.android.com/sdk/&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ref: android-sdk_r16-windows.zip (28.1MB)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; installer_r16-windows.exe (28.1MB)&lt;br /&gt;
&lt;br /&gt;
4. 下載 Android NDK &lt;br /&gt;
&amp;nbsp;&amp;nbsp; (*** only needed for developing C/C++ native code libraries ***)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; url: http://developer.android.com/sdk/ndk/&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ref: android-ndk-r7b-windows.zip (76.6MB)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; NOTE: 開發 NDK 還需要有 GNU 的 bash 和 make 工具, Windows 下可以安&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 裝 Cygwin 環境&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 下載 Cygwin (only needed for NDK)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; url: http://cygwin.com/install.html&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ref: setup.exe (681KB)&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
5. 安裝 JDK&lt;/div&gt;
&amp;nbsp;&amp;nbsp; ref: jdk-7u3-windows-i586.exe&lt;br /&gt;
&lt;br /&gt;
6. 可以使用預設路徑, 在安裝提示步驟下, 選 &#39;Next&#39; 或 &#39;Continue&#39;...,&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 直到, 當詢問安裝 JavaFX SDK, 選 &#39;Cancel&#39;, 當跳到 JDK 註冊網頁, 直接&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 關閉瀏覽器&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; P.S. 安裝完成之後，可以在檢查 JDK 是否安裝成功&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1) 執行命令列 cmd&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2) javac HelloWorld.java&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3) java HelloWorld&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
7. 安裝 Eclipse&lt;/div&gt;
&amp;nbsp;&amp;nbsp; ref: eclipse-java-indigo-SR2-win32.zip&lt;br /&gt;
&lt;br /&gt;
8. 免安裝, 直接解開到硬碟的一個固定地方&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
9. 安裝 Android SDK&lt;/div&gt;
&amp;nbsp;&amp;nbsp; ref: android-sdk_r16-windows.zip as (1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; installer_r16-windows.exe&amp;nbsp;&amp;nbsp; as (2)&lt;br /&gt;
&lt;br /&gt;
10. 用 (1) 免安裝, 直接解開到硬碟的一個固定地方&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 用 (2) 可以使用預設路徑, 在安裝提示步驟下, 選 &#39;Next&#39; 或 &#39;Continue&#39;&lt;br /&gt;
&lt;br /&gt;
11. 執行 Andriod SDK manager&lt;br /&gt;
&lt;br /&gt;
12. 可以在預設選項(lastest platform)下, 再勾選下面的 packages&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Tools\Andriod SDK Platform-tools (for more tools for application&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; development)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Andriod 2.3.3 (API 10)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (for 市佔率高的 andriod 版本)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Andriod 2.2 (API 8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (for 市佔率高的 andriod 版本)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; p.s. 1. 在 Andriod x.x (AP xx) 裡面, 基本上標配有&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SDK platform&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Samples for SDK&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Google APIs by Google Inc. (for accessing to the Google Maps)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 除 xxx by Google 外, 各手機/硬體公司訂製的(非標準) packages&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 可以不選, 如 xxx by HTC, xxx by Motorola, xxx by LGE etcs&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://developer.android.com/sdk/installing.html#which&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 可以事後再執行 Andriod SDK manager, 新增或更新 packages&lt;br /&gt;
&lt;br /&gt;
13. 點 &#39;Install xx packages...&#39; 按鈕, 下一個畫面選 &#39;Accept All&#39; (授權)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 後, 按 &#39;Install&#39;, 開始下載/安裝&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
14. 安裝 ADT (Android Development Tool) for Eclipse IDE&lt;/div&gt;
&lt;br /&gt;
15. 執行 Eclipse.exe (在 step 8 的目錄下)&lt;br /&gt;
&lt;br /&gt;
16. 會詢問 Workspace 路徑, 建議選擇一個非 user 文件夾的一個固定位置,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 並勾選下次不要再詢問&lt;br /&gt;
&lt;br /&gt;
17. 打開 menu -&amp;gt; &#39;Help&#39; -&amp;gt; &#39;Install New Software&#39; 對話盒&lt;br /&gt;
&lt;br /&gt;
18. 按 &#39;Add...&#39; 按鈕, 在 Add Repository 對話盒下&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Name: 隨你高興&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Location: http://dl-ssl.google.com/android/eclipse&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 按 OK, 離開回到 Install 對話盒, 其狀態列顯示 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Fetching children...(xx%)&lt;br /&gt;
&lt;br /&gt;
19. 下載完成後, tree list 會有 Developer Tools 節點出現, 打開節點, 下&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 面有四個 Andriod xx 項目, 全選, 然後按 &#39;Next&#39;...&#39;Finish&#39; 後, 開始&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 下載/安裝&lt;br /&gt;
&lt;br /&gt;
20. 完成後, Eclipse 會重新開啟, 開啟後提示設置 Andriod SDK&lt;br /&gt;
&lt;br /&gt;
21. 選擇 &#39;Use existing SDKs&#39;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Existing Location: 選 step 10 安裝目錄下的 android-sdk, 如&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\Program Files\Android\android-sdk&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 按 &#39;Next&#39;...&#39;Finish&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; p.s. 如果 step 20 沒有提示或事後, 也可以&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 打開 menu -&amp;gt; &#39;Window&#39; -&amp;gt; &#39;Preferences&#39; 對話盒, 左側 tree list&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;選擇 Android, 設置 SDK Location&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
22. 設置 Android Virtual Device (AVD) 也就是 Andriod 模擬器&lt;/div&gt;
&lt;br /&gt;
23. 用 (1) 執行 Eclipse.exe (在 step 8 的目錄下) - menu -&amp;gt; &#39;Window&#39; -&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;ADV manager&#39;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 用 (2) 執行 AVD Manager.exe (在 step 10 安裝目錄下)&lt;br /&gt;
&lt;br /&gt;
24. 按 &#39;New...&#39; 按鈕, 出現 Create new AVD 對話盒&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Name:&amp;nbsp;&amp;nbsp;&amp;nbsp; 隨你高興 (建議名字後面加上 Andriod 作業系統的版本代號)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Target:&amp;nbsp; 選一個 (建議用當前市場上最普及的 Android 手機版本, 或手上&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 開發實機的版本)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://developer.android.com/resources/dashboard/platform-versions.html&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SD Card:&amp;nbsp; 依需求&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Snapshot:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Skin:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 預設或依需求&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Hardware: 預設或依需求&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
(step 25~31 是測試編譯執行一個 hello app, 可省略)&lt;/div&gt;
&lt;br /&gt;
25. 測試 Hello World&lt;br /&gt;
&lt;br /&gt;
26. 執行 Eclipse.exe&lt;br /&gt;
&lt;br /&gt;
27. menu -&amp;gt; &#39;File&#39; -&amp;gt; &#39;New&#39; -&amp;gt; &#39;Project...&#39; 出現 New Project 對話盒,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 點開 &#39;Android&#39; 節點, 選中之下的 &#39;Android Project&#39; 子選項, 按 &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
28. Create Andriod Project:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Project Name: 隨你高興 (為程式的顯示名字)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 選 &#39;Create new project in workspace&#39;, 按 &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
29. Select Build Target:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 勾選適當的平台, 按 &#39;Next&#39;&lt;br /&gt;
&lt;br /&gt;
30. Application Info:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 修改 Package Name: com.你的組織單位英文名稱.你的專案英文名稱&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 其他依需求, 填好後, 按 &#39;Finish&#39; 會產生專案檔案&lt;br /&gt;
&lt;br /&gt;
31. menu -&amp;gt; &#39;Run&#39; -&amp;gt; &#39;Run&#39;, 開始編譯, 成功後會呼起 AVD, AVD 啟動後&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 該程式(名字為 Project Name) 會直接執行&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 畫面如下:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
32. 安裝 Android NDK (僅開發 C/C++ libraries 需要)&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *****&lt;br /&gt;
&lt;br /&gt;
33. (Windows only) 設置 Android NDK 需要的環境 Cygwin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ref: cygwin&#39;s setup.exe&lt;br /&gt;
&lt;br /&gt;
34. 執行後, 選 &#39;Install from Internet&#39;&lt;br /&gt;
&lt;br /&gt;
35. Root Directory 可以使用預設路徑&lt;br /&gt;
&lt;br /&gt;
36. Local Package Directory 選擇一個地方放下載的東西&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 如果此次完成後, 那下次可以 &#39;Install from Local Directory&#39;&lt;br /&gt;
&lt;br /&gt;
37. Choose A download Site 選擇最近的網站&lt;br /&gt;
&lt;br /&gt;
38. Select Packages:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 找尋下面的 packages&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Base/bash or Shells/bash&amp;nbsp;&amp;nbsp;&amp;nbsp; (預設此 package 是要安裝的版號)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Devel/make&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (預設此 package 是不安裝的)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 點該 package &#39;Skip&#39; 前面 refresh 圖示, 讓 &#39;Skip&#39; 變成一個要安裝的&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 版號, 點 &#39;Next&#39; 按鈕&lt;br /&gt;
&lt;br /&gt;
39. 當詢問 Resolving Depencies, 確認一下 Select required packages 有勾&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 選後, 點 &#39;Next&#39; 按鈕, 開始下載/安裝...&lt;br /&gt;
&lt;br /&gt;
40. 安裝完成後, 執行 Cygwin, 在命令列下輸入 make -v 看看是否 make 安裝&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 正確&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *****&lt;br /&gt;
&lt;br /&gt;
41. 直接解開 android-ndk-xx-windows.zip 到硬碟的一個固定地方&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;div style=&quot;color: #6aa84f;&quot;&gt;
(step 42~45 是測試編譯一個 libhello-jni.so, 可省略)&lt;/div&gt;
&lt;br /&gt;
42. 測試編譯 hello-jni 的 C library&lt;br /&gt;
&lt;br /&gt;
43. 執行 cygwin.bat (step 35 安裝目錄下)&lt;br /&gt;
&lt;br /&gt;
44. 切換當前目錄到 C:\xx\android-ndk\samples\hello-jni&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: 以上 C:\xx\android-ndk 為 step 41 的位置, 以下皆假設為&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c:\xx\android-ndk, 請依真實情況修改路徑名&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 命令列提示字元 $ 下, 請輸入&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cd /cygdrive/c/xx/android-ndk/samples/hello-jni&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 後, 按 Enter 鍵執行&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果正確, 當前目錄提示會改為以上路徑&lt;br /&gt;
&lt;br /&gt;
45. 執行 ndk-build&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 命令列提示字元 $ 下, 請輸入 /cygdrive/c/xx/android-ndk/ndk-build&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 後, 按 Enter 鍵執行&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果正確, 此時 NDK 開始編譯 c 並做出 so (為 library), 輸出訊息如下&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Gdbserver&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : [arm-linux-androideabi-x.x] libs/armeabi/gdbserver&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Gdbsetup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : libs/armeabi/gdb.setup&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Compile thumb : hello-jni &amp;lt;= hello-jni.c&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SharedLibrary : libhello-jni.so&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Install&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : libhello-jni.so =&amp;gt; libs/armeabi/libhello-jni.so&lt;br /&gt;
&lt;br /&gt;
以上到目前為止, Andriod SDK + NDK 環境已經安裝並測試編譯內部的範例.&lt;br /&gt;
&lt;br /&gt;
繼續...&lt;a href=&quot;http://ob-brew.blogspot.tw/2012/06/eclipseandroid-sdkndk-22.html&quot;&gt;Eclipse+Android SDK/NDK 開發環境的過程 (2/2)&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://ob-brew.blogspot.com/feeds/1926575321641017861/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://ob-brew.blogspot.com/2012/03/eclipseandroid-sdkndk.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/1926575321641017861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/296940553090947970/posts/default/1926575321641017861'/><link rel='alternate' type='text/html' href='http://ob-brew.blogspot.com/2012/03/eclipseandroid-sdkndk.html' title='Eclipse+Android SDK/NDK 開發環境的過程 (1/2)'/><author><name>ob</name><uri>http://www.blogger.com/profile/10776583112846818551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>