整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          Instant App 常見問題官方指南

          / Google Play 谷歌開發(fā)者

          我們被大家的熱情驚到了 —— 事實上我們發(fā)出上一篇 Instant App 的文章沒幾天就收到了一大堆問題。由于涉及到的類目太多,我們這里簡單歸納了一下,方便大家查看。如果還有更多問題也請隨時通過留言的方式與我們?nèi)〉寐?lián)系。

          1. 基礎(chǔ)類問題

          Q: 哪些設(shè)備兼容 Android Instant App?

          A: Android Instant App 在運行 Android 6.0(API 級別 23)或更高版本的設(shè)備上可用,此外還計劃為 Android 5.0(API 級別 21)添加額外的支持。例如,現(xiàn)在您可以在 Google Pixel、Google Nexus、Samsung Galaxy S7 等人氣設(shè)備上開發(fā) Instant App。

          Q: 哪些國家和地區(qū)支持 Android Instant App?

          A: 您可以在支持頁面中找到完整的支持國家和地區(qū)列表:

          (https://support.google.com/googleplay/android-developer/answer/7381861#production)

          Q: 開發(fā)者現(xiàn)在需要構(gòu)建兩套不同的 Android 應(yīng)用嗎?

          A: 正相反,開發(fā)者只需使用一個源代碼樹維護一個項目即可。通過對項目進行配置,創(chuàng)造出兩套架構(gòu)工件:可安裝版本和免安裝版本。在可安裝應(yīng)用基礎(chǔ)上添加免安裝支持需要的工作量大小取決于可安裝應(yīng)用的當(dāng)前架構(gòu)。

          * 請注意,免安裝應(yīng)用的版本號必須等于或小于上次發(fā)布的可安裝應(yīng)用版本。

          Q: Instant App 都能使用什么 Android API 和功能?

          A: Android Instant App 設(shè)計的目的是擴展現(xiàn)存 App 的使用場景,而非取代它們。所以Android Instant App 使用同樣的 Android API,同樣的項目,同樣的源代碼。當(dāng)然,由于Android Instant App 的 “免安裝” 特性,可能會無法符合用戶針對 “已安裝” 應(yīng)用所抱有的一些期待。例如,免安裝應(yīng)用無法使用后臺服務(wù),無法激活后臺通知,也無法使用設(shè)備唯一標(biāo)識符。

          Q: 用戶可以選擇永久安裝應(yīng)用嗎?

          A: 當(dāng)然!開發(fā)者可以允許用戶從 Google Play 安裝應(yīng)用。在安裝完成后,當(dāng)用戶離開應(yīng)用時,它仍會留在用戶的手機上 —— 就和現(xiàn)在大家正在做的事情一樣。

          Q: Android Instant App 的權(quán)限需求是怎樣的?

          A: Android Instant App 使用自 Android 6.0 (API 級別 23)以來采用的運行時權(quán)限。

          Q: 免安裝應(yīng)用可以獲取哪些權(quán)限?

          A:免安裝應(yīng)用可以使用下列 Android 權(quán)限。沒有出現(xiàn)在下方列表中的權(quán)限將無法在免安裝應(yīng)用中使用。

          • BILLING

          • ACCESS_COARSE_LOCATION

          • ACCESS_FINE_LOCATION

          • ACCESS_NETWORK_STATE

          • CAMERA

          • INSTANT_APP_FOREGROUND_SERVICE 僅限 Android O

          • INTERNET

          • READ_PHONE_NUMBERS 僅限 Android O

          • RECORD_AUDIO

          • VIBRATE

          Q:免安裝應(yīng)用對網(wǎng)絡(luò)訪問有哪些限制?

          A:來自免安裝應(yīng)用的一切網(wǎng)絡(luò)流量均必須使用 HTTPS,不支持 HTTP。

          Q:開發(fā)者要如何發(fā)布這些應(yīng)用?

          A:開發(fā)者需要經(jīng)由 Google Play Console 發(fā)布免安裝應(yīng)用,這一點與現(xiàn)有的 Android 應(yīng)用并無兩樣。想要了解更多信息,請參閱 “發(fā)布您的免安裝應(yīng)用” :

          (https://support.google.com/googleplay/android-developer/answer/7381861)

          Q:免安裝應(yīng)用必須使用 Smart Lock 么?

          A:是的,我們規(guī)定在免安裝中的登錄體驗必須使用 Smart Lock。想要進一步了解如何在應(yīng)用中使用 Smart Lock,請參閱 “為您的 Android 密碼使用 Smart Lock” :

          (https://developers.google.cn/identity/smartlock-passwords/android/)

          Q:我能不能在沒有可安裝版本 Android 應(yīng)用的情況下實現(xiàn)一個免安裝應(yīng)用?

          A:不能。您必須首先在 Google Play 中擁有一個該 App 的可安裝版本。

          Q:我們能在里面使用 WebP 圖片格式嗎?

          A:當(dāng)然可以,我們推薦使用 WebP 格式的圖片。想要了解更多信息,請參閱 “如何縮減下載圖片的大小” :

          (https://developer.android.google.cn/topic/performance/network-xfer.html#webp)

          Q:免安裝應(yīng)用在 Google 網(wǎng)頁搜索中將會如何呈現(xiàn)?

          A:免安裝應(yīng)用與可安裝應(yīng)用的搜索顯示結(jié)果并無不同。在搜索結(jié)果中,免安裝應(yīng)用會顯示出應(yīng)用圖標(biāo),如果該 URL 已與免安裝應(yīng)用相關(guān)聯(lián),則還會顯示 “Instant” 標(biāo)簽,正如搜索結(jié)果中的可安裝應(yīng)用會在圖標(biāo)上顯示 “Installed” 標(biāo)簽一樣。

          Q:我能使用 Android Instant App 的形式來承載我的游戲嗎?

          A:游戲是極為特別的一類應(yīng)用,它們通常擁有獨特的工具庫和龐大的資產(chǎn)庫,對性能表現(xiàn)的要求也很高。即使如此,我們對探索游戲用戶的使用案例也充滿興趣。請前往 StackOverflow 瀏覽有關(guān) Android Instant App 的帖子,不少人也在討論這個話題。

          2. 項目結(jié)構(gòu)、功能和架構(gòu)

          Q:免安裝應(yīng)用和可安裝應(yīng)用是否擁有不同的 build.gradle 文件?

          A:如果您的可安裝應(yīng)用和免安裝應(yīng)用來自同一個 Android Studio 項目,那么答案是肯定的,兩種應(yīng)用需要不同的 build.gradle 文件。您必須使用符合 com.android.application 構(gòu)建規(guī)則的模塊來構(gòu)建您的可安裝應(yīng)用,而當(dāng)您構(gòu)建免安裝應(yīng)用時則需要使用符合 com.android.instantapp 構(gòu)建規(guī)則的模塊。想要了解更多信息,請參閱 “項目結(jié)構(gòu)” :

          (https://developer.android.google.cn/topic/instant-apps/getting-started/structure.html#structure_of_a_basic_instant_app)

          Q:我能獨立編譯可安裝與免安裝應(yīng)用嗎?

          A:正如上面 “項目結(jié)構(gòu)” 中所展示的那樣,我們推薦采用的工程結(jié)構(gòu)應(yīng)該優(yōu)先將獨立的功能封裝成模塊,這樣可安裝應(yīng)用和免安裝應(yīng)用都可以依賴這些庫模塊。如果您遵循我們推薦的工程結(jié)構(gòu),您就可以獨立編譯每個功能而不涉及其他。

          Q:我應(yīng)該如何在免安裝應(yīng)用中的不同頁面之間進行導(dǎo)航?

          A:您可以通過進入一條目標(biāo)頁面的 URL 來導(dǎo)航過去。由于這個原因,免安裝應(yīng)用中的頁面均需滿足這個條件:可被 URL 尋址。想要了解更多如何讓app頁面可被 URL 尋址的內(nèi)容,請參閱 “如何從 Google Play 請求功能” :

          (https://developer.android.google.cn/topic/instant-apps/overview.html#play_store)

          和 “實現(xiàn)應(yīng)用鏈接” :

          (https://developer.android.google.cn/topic/instant-apps/getting-started/index.html#app-links)

          Q:我能在我的主應(yīng)用里處理深度鏈接(Deep Link),然后再調(diào)用其他免安裝應(yīng)用的頁面嗎?

          A:免安裝應(yīng)用需要在功能上實現(xiàn)模塊化,通過主應(yīng)用集中處理與此相矛盾。使用 App Link 即可進行您需要的鏈接跳轉(zhuǎn)功能,同時保持免安裝應(yīng)用的模塊化特性。

          Q:我能在一個功能內(nèi)包含多個頁面嗎?

          A:您可以在一個功能內(nèi)包含多個頁面。但您需要留意的是,免安裝應(yīng)用下載有 4MB 的大小限制。同時,每個功能都需要用一個頁面作為入口。

          Q:我能在不同功能之間共享資源嗎?

          A:可以,基本功能(Base Feature)內(nèi)的資源可以被所有功能分享。包含在附加功能之內(nèi)的資源則只能被這個功能所使用。想要了解更多關(guān)于如何搭建您的項目資源,以及如何在不同功能之間共享資源,請參閱上面提到的 “項目結(jié)構(gòu)”。

          額外再說一點,您必須把位于附加功能和基本功能之間的資源 ID 區(qū)分開來。例如,如果您的基本功能提供了一個名為 R.id.feature_layout 的資源 ID,但您的附加功能卻定義了另一個同 ID 資源,那么免安裝應(yīng)用就會使用來自基本功能的資源,而不會使用來自附加功能的資源。

          此外,所有隨著功能模塊的產(chǎn)生而被引用的資源都必須在基本功能模塊內(nèi)出現(xiàn)。

          Q:如果應(yīng)用內(nèi)有兩個功能,它們是否會共享存儲?

          A:會,多個功能會在同一進程中運行,并共享應(yīng)用上下文,只要它們屬于同一個免安裝應(yīng)用。但是,免安裝應(yīng)用相較于可安裝 APK 而言擁有一些限制。想要了解更多信息,請參閱 “了解受限和不受支持的功能” :

          (https://developer.android.google.cn/topic/instant-apps/prepare.html#restricted)

          Q:我能在同一頁面內(nèi)的 view-pager 中擁有多個分段(Fragment)嗎?

          A:可以,您能在單一頁面中擁有多個分段,并在功能內(nèi)定義與頁面相關(guān)的分段。但請記住分段不能與深鏈接相關(guān),并且不能獨立于頁面啟動。

          Q:免安裝應(yīng)用應(yīng)該擁有獨立的應(yīng)用圖標(biāo)嗎?

          A:不,免安裝應(yīng)用和可安裝應(yīng)用應(yīng)該使用同一個圖標(biāo)。可安裝應(yīng)用和免安裝應(yīng)用應(yīng)該為用戶提供一致的體驗,因此它們應(yīng)該使用同樣的視覺元素(如圖標(biāo))。

          想要了解更多關(guān)于如何關(guān)聯(lián)免安裝應(yīng)用和可安裝應(yīng)用的信息,請參閱 “同一個應(yīng)用,安裝前與安裝后”:

          (https://developer.android.google.cn/topic/instant-apps/ux-best-practices.html#instant-v-installed)

          Q:我如何才能分辨出我的應(yīng)用正在以可安裝模式還是免安裝模式運行?

          A:您可以使用靜態(tài)的 InstantApps.isInstantApp ( ) 方法。如果接受測試的進程屬于一個免安裝應(yīng)用,這個方法的返回值將為 True 。

          Q:我要如何鼓勵用戶從免安裝應(yīng)用中安裝我的應(yīng)用?

          A:您可以使用靜態(tài)的 InstantApps.showInstallPrompt ( ) 方法。這種方法會鼓勵用戶安裝常規(guī) APK 版本的應(yīng)用。

          Q:為各種功能使用的不同的 APK 會不會在 Google Play 里顯示為不同的產(chǎn)品?

          A:不會,免安裝應(yīng)用與可安裝應(yīng)用共享相同的包裝名和產(chǎn)品列表。

          Q:我在免安裝應(yīng)用內(nèi)為功能命名時,會不會受到限制?

          A:功能模塊遵循 Java 命名規(guī)則。例如,您不能在功能名稱中使用連字符。想要了解更多關(guān)于 Java 命名規(guī)則的內(nèi)容,請參閱對應(yīng)的 Java 文獻:

          (https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html)

          3. Google 分析、Google Play 與部署

          Q:我能讓我的免安裝應(yīng)用只在限定的幾個國家內(nèi)發(fā)布嗎?

          A:免安裝應(yīng)用的使用范圍限定于相應(yīng)的可安裝應(yīng)用所在的國家和地區(qū)。在這些國家和地區(qū)的范圍內(nèi),開發(fā)者可以選擇在特定地區(qū)內(nèi)發(fā)布自己的免安裝應(yīng)用。

          Q:如果我想要通過 Google Play 在發(fā)布前測試我的免安裝應(yīng)用,我還需要首先發(fā)布可安裝應(yīng)用的 APK 嗎?

          A:想要通過 Google Play 在開發(fā)階段測試您的免安裝應(yīng)用的部署情況,您就必須在 Google Play Console 中擁有 “草稿” 形式的可安裝版本應(yīng)用。

          想要了解更多關(guān)于對您的免安裝應(yīng)用的進行部署,以及對其部署情況進行測試的信息,請參閱上面提到的 “發(fā)布您的免安裝應(yīng)用”。

          4. 應(yīng)用大小

          Q:4MB 的總下載限制是什么意思?

          A:免安裝應(yīng)用的大小(基本功能加上任何附帶的附加功能)應(yīng)該越小越好。您的應(yīng)用越小,用戶下載使用起來就越容易。但是,當(dāng)您的免安裝應(yīng)用已經(jīng)運行在用戶的設(shè)備上時,您就可以使用用戶的設(shè)備來下載并儲存額外的數(shù)據(jù)。如果是用這種方式在用戶的設(shè)備上使用數(shù)據(jù),則不存在 4MB 的硬限制。

          想要計算應(yīng)用大小的話,只需解壓免安裝應(yīng)用的 APK 并檢查 APK 文件。您可以使用 APK 文件的磁盤容量,或是打開 APK Analyzer 并觀察 Raw File Size 值。

          對于那些擁有多個功能的免安裝應(yīng)用,您必須把基本功能 APK 的大小與單一功能 APK 合并計算。基本功能與單一功能 APK 文件大小之和必須小于 4MB

          Q:用戶每次下載同一個免安裝應(yīng)用時都需要下載基本功能 APK 和附加功能 APK 嗎?

          A:當(dāng)用戶首次下載免安裝應(yīng)用時,他們會下載基本功能和附加功能兩個 APK。當(dāng)用戶請求其他功能的 APK 時,用戶只會收到與所請求功能的 APK。在這種情況下,基本功能 APK 不需要被重復(fù)下載。

          * 注意:系統(tǒng)會在垃圾整理期間根據(jù)需要清理免安裝應(yīng)用的緩存。如果手機重啟,緩存會清空。如果免安裝應(yīng)用的緩存被清空,用戶就必須重新下載基本功能的 APK。

          Q:何時會觸發(fā) 4MB 驗證?

          A:當(dāng)您在制作階段將免安裝應(yīng)用上傳到 Google Play Console 時就會觸發(fā)驗證。

          5. 應(yīng)用鏈接、深鏈接與 URL 處理

          Q:用戶從一些應(yīng)用點擊鏈接時,鏈接并沒有打開我的免安裝應(yīng)用,而是在應(yīng)用內(nèi)瀏覽器中打開了。有沒有辦法能保證用戶被帶到免安裝應(yīng)用里面去?

          A:App Link 只是普通的 URL,所以應(yīng)用可以強迫它們在應(yīng)用內(nèi)瀏覽器中打開。請考慮使用 Firebase Dynamic Links 來包裝您的 URL,確保用戶在點擊您的鏈接時總能被帶到您的免安裝應(yīng)用里去。

          Q:我的主應(yīng)用 manifest 里包括其他 URL 和其他 URL 域名,但我并不擁有這些域名。這樣會產(chǎn)生什么后果?

          A:很遺憾,如果一個 URL 的域名所有權(quán)未經(jīng)確認(rèn),則會導(dǎo)致免安裝應(yīng)用發(fā)布失敗。

          6. 在設(shè)備上運行免安裝應(yīng)用

          Q:用戶能否放棄使用 Android Instant App?

          A:能。用戶在首次啟動免安裝應(yīng)用時可以選擇放棄。用戶還可以選擇打開 Settings 并點擊 Google > Instant Apps 進行設(shè)置。

          Q:兩個免安裝應(yīng)用可以同時運行嗎?

          A:可以。免安裝應(yīng)用可以同時運行,用戶可以在多個應(yīng)用之間切換。只有位于前臺的免安裝應(yīng)用會在通知欄內(nèi)顯示圖標(biāo)。

          Q:用戶能否在 “最近使用” 欄和設(shè)備主屏上結(jié)束和重啟免安裝應(yīng)用的進程?

          A:免安裝應(yīng)用可以從 “最近使用” 欄重啟,用戶還可以點擊之前運行過的啟動 URL 來重啟應(yīng)用。

          當(dāng)用戶停止與免安裝應(yīng)用互動時,免安裝應(yīng)用的進程即被終止。但是,應(yīng)用的內(nèi)部存儲,如 SQLite DB 還有共享偏好會保留下來。如果設(shè)備存儲空間告急,免安裝應(yīng)用可能會被刪除,它的內(nèi)部存儲也會一同被刪除。雖然這種情況不太可能出現(xiàn),但當(dāng)它出現(xiàn)的時候還想恢復(fù)用戶的使用狀態(tài)和偏好信息的話,開發(fā)者需要從服務(wù)端解決。

          Q:免安裝應(yīng)用能不能啟動用戶設(shè)備上安裝的其他應(yīng)用?

          A:免安裝應(yīng)用可以通過發(fā)出隱式意圖 (implicit intent) 來啟動一個可安裝應(yīng)用,但無法使用顯式意圖 (explicit intent) 來啟動大多數(shù)可安裝應(yīng)用。但可安裝應(yīng)用可選擇對那些發(fā)出顯式意圖的免安裝應(yīng)用開放。

          Q:如果用戶安裝了較舊版本的應(yīng)用,并點擊了與較新版本免安裝應(yīng)用相關(guān)聯(lián)的 URL,會打開哪個應(yīng)用?

          A:可安裝應(yīng)用永遠優(yōu)先于免安裝應(yīng)用打開。

          Q:用戶如何接收我的免安裝應(yīng)用的最新版本? Google 會不會在用戶的設(shè)備上自動對它進行更新?

          A:最新版本的免安裝應(yīng)用將提供給新用戶使用,現(xiàn)有用戶的免安裝應(yīng)用緩存過期時,也會獲取最新版本的應(yīng)用。

          看個錨點定位的例子

          發(fā)現(xiàn)頁面唰的一些就到頂部了,快到我們懵逼了。。。

          開始解決

          scroll-behavior

          CSS屬性 scroll-behavior 為一個滾動框指定滾動行為,其他任何的滾動,例如那些由于用戶行為而產(chǎn)生的滾動,不受這個屬性的影響。在根元素中指定這個屬性時,它反而適用于視窗。

          scroll-behavior:smooth 寫在滾動容器元素上,可以讓容器的滾動變得平滑。

          在網(wǎng)頁默認(rèn)滾動是在<html>標(biāo)簽上,移動端大多數(shù)在<body>標(biāo)簽上。

          我們可以這樣加:

          html, 
          body { scroll-behavior:smooth; }
          

          加了以后的效果如下:

          這是錄制的GIF圖,效果沒那么好。 大家可以動手試一下,滑動體驗非常不錯。

          缺點

          兼容性不夠好

          當(dāng)然我們可以通過js來做個類似

          Element.scrollIntoView() 方法

          DOM元素的scrollIntoView() 方法讓當(dāng)前的元素滾動到瀏覽器窗口的可視區(qū)域內(nèi),通過觸發(fā)滾動容器的定位實現(xiàn)。

          DOM元素的scrollIntoView()方法 是原生JS 兼容到IE6,兼容性非常好。

          參數(shù)如下

          {
           behavior: "auto" | "instant" | "smooth", // 默認(rèn) auto
           block: "start" | "center" | "end" | "nearest", // 默認(rèn) center
           inline: "start" | "center" | "end" | "nearest", // 默認(rèn) nearest
          }
          

          解釋一下這三個參數(shù):

          1. behavior 表示滾動方式。auto 表示使用當(dāng)前元素的 scroll-behavior 樣式。instant 和 smooth 表示 直接滾到底 和 使用平滑滾動。
          2. block 表示塊級元素排列方向要滾動到的位置。對于默認(rèn)的 writing-mode: horizontal-tb 來說,就是豎直方向。start 表示將視口的頂部和元素頂部對齊;center 表示將視口的中間和元素的中間對齊;end 表示將視口的底部和元素底部對齊;nearest 表示就近對齊。
          3. inline 表示行內(nèi)元素排列方向要滾動到的位置。對于默認(rèn)的 writing-mode: horizontal-tb 來說,就是水平方向。其值與 block 類似。

          用法:

          html:

          <div class="wrap">
           <div onClick="onScrollIntoView()">點擊讓黑色塊到頂部</div>
           <ul class="body">
           <li>1</li>
           <li>2</li>
           <li id="box">我是黑色</li>
           <li>3</li>
           <li>4</li>
           </ul>
          </div>
          

          js:

          function onScrollIntoView () {
           var element = document.getElementById("box");
           element.scrollIntoView({behavior: "smooth"});
          }
          

          效果:

          這回大家再也不用害怕做錨點定位啦。

          最后我們在說一個關(guān)于頁面滾動問題吧,那就是 返回頂部 功能實現(xiàn)

          返回頂部 功能實現(xiàn)

          我們常用定時器 setInterval 來不斷減去高度。

          如:當(dāng)前距離頂部 1000, 我們每10毫秒減50,

          var timer = setInterval(function() { // 定時器 每10毫秒執(zhí)行一次
           // 頂部距離 document.body.scrollTop = 1000 
           var speed = 50 // 返回頂部速度 
           document.body.scrollTop = document.body.scrollTop - speed
           if (document.body.scrollTop === 0) { // 返回到達頂部后, 銷毀定時器
           clearInterval(timer)
           }
          }, 10)
          

          效果:

          大家會發(fā)現(xiàn),頁面返回是滾動起來很干。 沒10毫秒減50. 很平均,在交互上效果并不好。

          借鑒上面 scroll-behavior:smooth 的交互效果。 緩動的返回頂部。

          改一下計算方式:1000/2 = 500, 500/2 =250, 250/2 = ...... 這樣滑動起來是不是就平滑了呢?

          換算成公式:開始位置 = 開始位置 + (結(jié)束位置 - 開始位置) / 速度

          document.body.scrollTop = 1000 + (0 - 1000) / 2

          公式太煩了還是上代碼吧:

          var onTop = function (a, b, c, d) {
           if (a == b || typeof a != 'number') {
           return
           }
           b = b || 0
           c = c || 2
           
           var speed = function () {
           a = a + (b - b) / c
           
           if (a < 1) {
           d(b, true)
           return
           }
           d(a, false)
           requestAnimationFrame(speed)
           }
           speed()
          }
          
          • a 開始位置
          • b 結(jié)束位置
          • c 速度
          • d 位置回調(diào),d(當(dāng)前的位置值, 否動畫結(jié)束)


          調(diào)用:

          var target = document.body.scrollTop ? document.body : document.documentElement
          onTop(target.scrollTop, 0, 4, function (value) {
           target.scrollTop = value
          })
          

          效果:

          Ps: gif錄制效果不好,大家可以動手寫一下DEMO

          、目錄

          1:centos 環(huán)境準(zhǔn)備

          2:instant client 下載

          3:instant client 安裝

          4:instant client 配置

          5:測試連接

          二、安裝步驟

          1:zip,unzip命令安裝,等待centos安裝完成

          yum install -y unzip zip

          2:下載instant client并上傳到centos系統(tǒng)某個目錄下

          一般都是上傳/opt/instantclient目錄下

          下載地址:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

          下載 instanct client zip包:

          instantcient-basic-linux.x64-11.2.0.4.0.zip required(必須下載)

          instantcient-sqlplus-linux.x64-11.2.0.4.0.zip (可選,主要是使用sqlplus命令)

          instantcient-sdk-linux.x64-11.2.0.4.0.zip (可選,主要是oracle頭文件)

          3:安裝instant client

          a. 進入/opt/instantclient目錄中,執(zhí)行如下命令:

          unzip instantclient-basic-linux-11.2.0.4.0.zip
          unzip instantclient-sqlplus-linux-11.2.0.4.0.zip
          unzip instantclient-sdk-linux-11.2.0.4.0.zip

          執(zhí)行上面三個命令完成后,所有文件默認(rèn)都放在當(dāng)前目錄instantclient_11_2目錄下

          b. 進入instantclient_11_2目錄,創(chuàng)建libclntsh.so.11.1的鏈接文件,防止報錯:找不到libclntsh.so文件。命令如下:

          ln -s libclntsh.so.11.1 libclntsh.so

          c. 建立相關(guān)目錄,在instantclient_11_2目錄下建立network/admin目錄,執(zhí)行如下命令:

          mkdir -p network/admin

          d. 配置環(huán)境變量

          使用vi命令打開當(dāng)前用戶配置文件:

          vi ~/.bash_profile

          在配置文件中增加下面信息:

          export ORACLE_HOME=/opt/instantclient/instantclient_11_2
          if [ "$LD_LIBRARY_PATH" = "" ]; then
              export LD_LIBRARY_PATH=$ORACLE_HOME
          else
              export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
          fi
          export PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/sdk
          export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
          export TNS_ADMIN=$ORACLE_HOME/network/admin
          

          保存退出vi編輯配置文件

          e. 使用環(huán)境變更生效

          source ~/.bash_profile

          f. 配置數(shù)據(jù)庫連接串

          進行network/admin目錄,創(chuàng)建tnsnames.ora文件。

          vi tnsnames.ora

          輸入oracle數(shù)據(jù)庫連接串:

          客戶端服務(wù)名 = //連接別名,隨便定義
                          (DESCRIPTION =
                              (ADDRESS_LIST =
                                  (ADDRESS = (PROTOCOL = TCP)(HOST = 數(shù)據(jù)庫IP地址)(PORT = 數(shù)據(jù)庫端口號))
                              )   
                              (CONNECT_DATA =
                                  (SERVER = DEDICATED)
                                  (SERVICE_NAME = 數(shù)據(jù)庫連接服務(wù)名)
                              )   
                          )

          保存退出。

          4:連接測試

          sqlplus 用戶名/密碼@客戶端服務(wù)名

          出現(xiàn)SQL> 提示符,即登錄數(shù)據(jù)庫成功


          主站蜘蛛池模板: 国产精品亚洲午夜一区二区三区| 99精品一区二区三区| 国产在线观看精品一区二区三区91 | 夜精品a一区二区三区| 日韩人妻无码一区二区三区综合部 | 国产在线精品一区二区在线看 | 在线精品亚洲一区二区三区 | 91精品一区二区综合在线| 国产一区二区三区播放| 日韩免费无码一区二区三区| 97久久精品午夜一区二区| 日韩精品无码人妻一区二区三区| 亚洲综合在线成人一区| 久久一区二区三区免费播放| 中文字幕一区二区三区视频在线| 国产一国产一区秋霞在线观看| 大香伊人久久精品一区二区| 色妞色视频一区二区三区四区 | 久久久久人妻一区精品色| 精品一区二区三区高清免费观看| av一区二区三区人妻少妇| 亚洲国产AV一区二区三区四区| 色窝窝无码一区二区三区 | 亚洲综合色自拍一区| а天堂中文最新一区二区三区| 国产三级一区二区三区 | 精品人妻少妇一区二区| 狠狠色婷婷久久一区二区三区| 爆乳熟妇一区二区三区霸乳 | 亚洲一区二区三区久久| 日韩AV无码久久一区二区| 精品无码一区在线观看| AV鲁丝一区鲁丝二区鲁丝三区| 91亚洲一区二区在线观看不卡| 精品无码一区二区三区在线| 蜜臀AV无码一区二区三区| 精品一区二区ww| 福利视频一区二区牛牛 | 91在线看片一区国产| 中文字幕一区二区三匹| 天天综合色一区二区三区|