讀者完成此操作後,他們將瞭解如何:
- 使用移動應用程序連接到Mobile First Foundation。
- 從移動應用程序獲取輸入,並在IBM Cloud上進行所需的處理。
- 通過移動應用程序使用Watson Visual Recognition。
- 部署和使用Cloud Foundry應用程序。
- 使用移動應用程序從Cloud Object Storage訪問圖像。
- 連接並訪問Cloud上的Db2。
參考步驟:
- 從用戶的手機獲取輸入。
- 輸入是通過Mobile First Foundation傳遞的。
- Mobile First Foundation將用戶的輸入傳遞給視覺識別應用程序。
- 視覺識別應用程序與Watson視覺識別服務進行交互,該服務返回適當的輸出。
- 然後將輸出(用戶的年齡和性別)發送到用戶的移動應用程序。
- 用戶單擊“獲取建議”按鈕。
- 請求推薦引擎基於視覺識別應用程序輸出返回適當的推薦。
- 推薦引擎與IBM Db2交互以獲取推薦產品的必要產品詳細信息。
- 從Cloud Object Storage中檢索推薦產品的圖像。
- 推薦引擎檢索推薦產品的圖像和詳細信息。
- 推薦引擎將推薦產品的圖像和詳細信息返回給用戶的移動應用程序。
- 用戶現在可以將物品添加到購物車並查看它們。
先決條件
- IBM Cloud帳戶:創建一個IBM Cloud帳戶。
- Python 3:安裝python 3。
- Java 1.8.x:確保您具有所需的版本(Java 1.8.x)。
Steps
請按照以下步驟進行設置並運行此代碼模式。
- 克隆倉庫
- 推薦引擎設置
- Watson視覺識別設置
- 移動應用程序設置
1.克隆倉庫
克隆此git repo。否則,在終端中運行:
$ git clone https://github.com/IBM/recommender-with-watson-visual-recognition.git
2.推薦引擎設置
在此步驟中,我們將構建一個建議引擎,該引擎將用戶的年齡和性別作為輸入,並相應地給出建議。
2.1。註冊IBM Cloud Object Storage
我們使用IBM Cloud Object Storage存儲推薦所需的珠寶圖像和數據集。
2.1.1創建IBM Cloud對象存儲
- 在中IBM Cloud Dashboard,單擊Catalog並Object Storage在Infrastructure-> 下選擇服務Storage。單擊Create,如下所示。
- 將顯示IBM Cloud Object Storage儀表板。在Buckets標籤中,點擊Create bucket。為存儲桶指定一個唯一的名稱。設置彈性(Cross Region),位置(us-geo)和存儲類別(Standard)的選擇,然後單擊Create,如下所示。
注意:記下“ Bucket Name重要”,將在步驟4.4.2中使用
2.1.2創建用於訪問對象的服務ID和API密鑰
- 創建服務ID
- 在單獨的瀏覽器選項卡/窗口中,使用URL https://cloud.ibm.com/iam/啟動IBM Cloud Identity&Access Management儀表板。 如果您有多個IBM Cloud帳戶,請選擇目標帳戶,區域,組織和空間。在Identity & Access(在頁面左側)下,選擇Service IDs並單擊Create頁面的右上角。輸入名稱和描述,然後單擊創建。記下服務ID的名稱,如下所示。
注意:請記下nameService ID,因為它很重要,將在步驟4.4.2中使用
- 將Cloud Object Storage Writer角色添加到該服務ID
- 早在IBM的雲對象存儲儀表盤,選擇Bucket permissions下Buckets點擊policies。點擊Service IDs標籤。在下Select a service ID,選擇在上一步中創建的服務ID。在下Assign a role to this service ID for this bucket,選擇Writer。單擊創建策略,如下所示。
您將看到一個確認對話框,顯示“已創建服務權限”。
- 創建API密鑰
- 返回IBM Cloud Identity&Access Management儀表板中的Service IDs,單擊之前創建的服務ID。在下Access policies,您應該看到Writer您的存儲桶的角色。單擊API keys選項卡,然後單擊Create按鈕。在Create API key對話框中,輸入API密鑰的名稱和說明,然後單擊Create。您將看到一個確認對話框API key successfully created,如下所示。單擊Download並保存API密鑰,如下所示。注意:這是您唯一看到密鑰的時間。您以後無法檢索。您現在可以關閉選項卡。
注意:記下“ API Key重要”,將在步驟4.4.2中使用
2.2。將IBM Cloud Object Storage憑證添加到python應用程序
要以編程方式訪問Cloud Object Storage服務,您需要複製憑證,您可以在IBM Cloud的IBM Cloud Object Storage服務憑證中找到這些憑證。
- 打開您的IBM Cloud Data Resource列表。將顯示您已調配資源的列表。
- 在選項卡下找到您的Cloud Object Storage實例Storage,然後單擊。
- 打開Service Credentials頁面右側的選項卡,單擊new credential並命名。
- 選擇“包括HMAC憑據”,如下所示。
- 單擊以查看您的憑據View Credentials。
- 複製您的憑據。創建一個文件credentials1.json並將複製的憑據粘貼到此文件中。將該文件放在目錄中JewelleryRecommendation,也放在目錄中UploadProductsCOS。
- 將xxxxxx佔位符替換bucket_name為文件中您相應的存儲桶名稱KMeans_200.py。
2.2.1將圖像上傳到雲對象存儲
- 將xxxxxx佔位符替換bucket_name為文件中您相應的存儲桶名稱upload.py。
- 在upload.py本地運行文件以將圖像和數據集上傳到Cloud Object Storage。
$ python3 upload.py
2.3。在雲服務上註冊IBM Db2
- 創建一個IBM Db2實例IBM db2。
2.4。將產品詳細信息加載到Db2中
- 將您的Db2放到雲上,然後單擊load,如下所示。
- 點擊browse files並上傳data.csv,如下所示。data.csv可以在的根文件夾中找到ProductDetailsDB2。
- 選擇默認架構並創建一個表PRODUCTS,如下所示。
- 點擊Next,如下所示。
- 點擊Next。
- 點擊Begin Load,如下所示。
- 加載數據後,您可以查看如下圖所示的表格。
注意:確保記下表名稱。在我的情況下,表名稱為ZJN44169.PRODUCTS。
2.5。將IBM db2憑證添加到python應用程序
- 替換佔位符username,password,sg_service_url,database,host,port在credentials_1該文件中KMeans_200.py。
- 將XXXX.YYYY佔位符替換insert為文件中相應的表名KMeans_200.py。
注意:您可以通過在雲上的Db2服務實例中創建/單擊“新建憑據”來獲取用戶名,密碼,sg_service_url,主機名,端口號和數據庫憑據。
2.6。將python應用程序部署到Cloud Foundry
- 創建一個Cloud Foundry實例IBM Cloud Foundry Service,並遵循將python應用程序部署到IBM Cloud Foundry的一組說明。
注意:確保Cloud Foundry App至少256MB獲得內存。您可以轉到進行驗證IBM Cloud Dashboard > Resources > Cloud Foundry Apps > YOUR_APP_NAME。
- 使用IBM Cloud命令行界面下載,修改和重新部署Cloud Foundry應用程序和服務實例。
- 在開始之前,請下載並安裝IBM Cloud CLI。
- 安裝命令行界面後,即可開始使用。
- 轉到目錄。
$ cd JewelleryRecommendation
注:確保KMeans_200.py,credentials1.json,requirements.txt,manifest.yml和Procfile出現在目錄中JewelleryRecommendation。
- 連接並登錄到IBM Cloud。
$ ibmcloud api https://api.eu-gb.bluemix.net
$ ibmcloud login -u [email protected] -o [email protected] -s dev
注意:如果您使用的是聯合ID,請使用該-sso選項。
$ ibmcloud login -o [email protected] -s dev -sso
注意:您必須在username,周圍加上單引號或雙引號org_name,並且space_name如果值包含空格,例如-o "my org"。
- 最後,通過以下命令部署應用程序。
$ ibmcloud cf push YOUR-APP-NAME
示例:ibmcloud cf推送推薦引擎
- 部署完應用程序URL後,通過右鍵單擊Visit app URL並複製鏈接來記下實例的。
注意:這URL很重要,因為它將在步驟4.4.2中使用
2.7。測試您的部署
要測試部署,請使用任何REST客戶端(如Postman)。安裝郵遞員後,鍵入 https:// YOUR-APP-URL /?age = 40&name = Kavya&gender = F以測試推薦引擎是否正常工作。
- 現在單擊Send按鈕運行GET /API。API響應應Response Body顯示在下面的快照中所示。
3. Watson視覺識別設置
Watson Visual Recognition服務將用戶的圖像作為輸入,並預測用戶的年齡和性別。
3.1創建視覺識別服務
- 在IBM Cloud中創建視覺識別服務。
- 如下所示,從視覺識別儀表板上覆制Api密鑰。
- 進入VisualRecognition目錄。
$ cd VisualRecognition
- 在credentials.json文件中,對於密鑰,vrapi將複製的Api密鑰值粘貼到YOUR-API-KEY-HERE如下所示的位置。
{
"vrapi": "YOUR-API-KEY-HERE"
}
3.2創建Cloud Foundry實例並部署
- 創建一個Cloud Foundry實例IBM Cloud Foundry Service並遵循將JavaScript應用程序部署到IBM Cloud Foundry的一組說明。
注意:確保Cloud Foundry App至少256MB獲得內存。您可以轉到進行驗證IBM Cloud Dashboard > Resources > Cloud Foundry Apps > YOUR_APP_NAME。
- 使用IBM Cloud命令行界面下載,修改和重新部署Cloud Foundry應用程序和服務實例。
- 在開始之前,請下載並安裝IBM Cloud CLI。
- 安裝命令行界面後,即可開始使用。
- 進入VisualRecognition目錄。
$ cd VisualRecognition
- 連接並登錄到IBM Cloud。
$ ibmcloud api https://api.eu-gb.bluemix.net
$ ibmcloud login -u [email protected] -o [email protected] -s dev
注意:如果您使用的是聯合ID,請使用該-sso選項。
$ ibmcloud login -o [email protected] -s dev -sso
注意:您必須在username,周圍加上單引號或雙引號org_name,並且space_name如果值包含空格,例如-o "my org"。
- 最後,通過以下命令部署應用程序。
$ ibmcloud cf push YOUR_APP_NAME
示例:ibmcloud cf推送watsonvr
- 部署完應用程序URL後,通過右鍵單擊Visit app URL並複製鏈接來記下實例的。
注意:此URL很重要,因為它將在步驟4.4.2中使用。
4.移動應用程序設置
移動應用程序是連接虛擬鏡像和推薦引擎的組件。
4.1設置Ionic和MFP CLI
- Node.js通過從https://nodejs.org/en/(Node.js 8.x或更高版本)下載安裝程序進行安裝
$ node --version
v10.15.0
- 安裝Cordova
$ sudo npm install -g [email protected]
$ cordova --version
8.1.2
注意:請參閱MFP文檔以獲取Cordova的兼容版本-https: //mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/application-development/sdk/cordova/
- 安裝離子
$ sudo npm install -g [email protected]
$ ionic --version
4.12.0
- 安裝IBM MobileFirst Platform CLI
$ sudo npm install -g mfpdev-cli
$ mfpdev --version
8.0.0-2018121711
注意:如果您使用的是Windows,而不是使用sudo,請運行上述命令,而不要sudo在管理模式下打開命令提示符。
注意:在安裝MFP CLI時,如果出現錯誤提示npm ERR! package.json npm can't find a package.json file in your current directory.,則很可能是由於npm版本不支持MFP CLI所致。在這種情況下,請按照以下說明降級您的npm,然後安裝MFP CLI。 $ sudo npm install -g [email protected]
- 從https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html安裝Java SDK 8。
$ java -version
java version "1.8.0_101"
注意:1.8.xcordova編譯apk需要Java版本。不要下載Java版本11.x。如果您已經擁有上述Java版本,1.8.x則可以按照指南進行操作,TROUBLESHOOTING.md以卸載Java並重新安裝1.8.x。
- 安裝Maven:在Mac上,可以brew install如下所示用於安裝Maven:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install maven
$ mvn --version
Apache Maven 3.6.0 ...
在Windows上,您可以按照此教程來安裝Maven。
- 安裝Gradle:在Mac上,可以brew install如下所示用於安裝Maven:
$ brew install gradle
$ gradle --version
Gradle 5.1.1 ...
在Windows上,您可以按照此教程來安裝Gradle。
4.2創建Mobile Foundation服務並配置MFP CLI
- 在IBM Cloud Dashboard中,單擊Catalog並在-> 下選擇Mobile Foundation服務。單擊,如下所示。PlatformMobileCreate
- 在顯示的Mobile Foundation服務概述頁面中,單擊Service credentials。擴展View credentials並記的url,user並且password,如下圖所示。
注:user,password並且url是重要的,因為它會在後續步驟中使用。
注意:確保用於Mobile Foundation-Server的Cloud Foundry App至少768MB獲得內存。(建議為1GB)您可以通過IBM Cloud Dashboard > Resources > Cloud Foundry Apps > MobileFoundation-Server如下所示進行驗證。
注意:如果當前帳戶類型不提供Mobile Foundation服務,則您可以:
升級您的帳戶,並使用Mobile Foundation服務的免費開發人員計劃,該計劃允許免費使用多達十個每日客戶端設備的服務進行開發和測試活動,或者
- 返回本地計算機,通過在控制檯中運行以下命令,將MFP CLI配置為與Mobile Foundation服務器一起使用。
注意:對於Enter the fully qualified URL of this server:,請輸入url憑據中提到的,然後輸入:443(默認HTTPS端口)。
$ mfpdev server add
- 按照說明進行操作。
? Enter the name of the new server profile: MyServer
? Enter the fully qualified URL of this server: https://mobilefoundation-xxxx-xxxxx.xx-xx.mybluemix.net:443
? Enter the MobileFirst Server administrator login ID: admin
? Enter the MobileFirst Server administrator password: **********
? Save the administrator password for this server?: Yes
? Enter the context root of the MobileFirst administration services: mfpadmin
? Enter the MobileFirst Server connection timeout in seconds: 30
? Make this server the default?: Yes
Verifying server configuration...
The following runtimes are currently installed on this server: mfp
Server profile 'MyServer' added successfully.
- 下一步驗證是否添加了服務器。
$ mfpdev server info
Name URL
---------------------------------------------------------------------------------------
MyServer https://mobilefoundation-xxxx-xxxxxx.xx-xx.mybluemix.net:443 [Default]
---------------------------------------------------------------------------------------
注意:如果此步驟失敗,請檢查TROUBLESHOOTING.md以修復常見錯誤。
注意:此URL很重要,因為在後續步驟中將需要使用該URL。
4.3自定義應用程序(可選)
- 進入JewelleryStoreApp目錄。
$ cd JewelleryStoreApp
- 如下更新應用ID,名稱和描述JewelleryStoreApp/config.xml。變化id,name,description和author細節波紋管所示。
The Jewellery Store
A virtual mirror integration into ecommerce products with the help of mobilefirst foundation.
Code Patterns Team
...Specify Cloud Object Storage credentials in MFP Adapter
Recommendation Engine API & Virtual Mirror API in MFP Adapter
4.4部署並測試MFP適配器
4.4.1構建和部署MFP適配器
- 轉到MobileFoundationAdapter目錄內的JewelleryStoreApp目錄。
$ cd MobileFoundationAdapter
$ cd ImagesFetch
- 在目錄中以show bellow形式添加,URL以及:443附加了的端口號/mfpadmin,User以及Password該pom.xml文件ImagesFetch。
...
https://mobilefoundation-xxxx-xxxxxx.xx-xx.mybluemix.net:443/mfpadmin
admin
********
mfp
...
- ImagesFetch如下所示構建適配器。
$ mfpdev adapter build
Building adapter...
Successfully built adapter
- 如下所示部署適配器。
$ mfpdev adapter deploy
Verifying server configuration...
Deploying adapter to runtime mfp on https://mobilefoundation-xxxx-xxxxxx.xx-xx.mybluemix.net:443/mfpadmin...
Successfully deployed adapter
注:在[步驟4.2],如果你指定No要Make this server the default?,那麼你需要指定服務器配置文件的名稱(MyServer在結束在我們的例子),mfpdev adapter deploy命令如下圖所示。
$ mfpdev adapter deploy MyServer
4.4.2啟動MFP儀表板並更新適配器配置
啟動MFP儀表板,如下所示:
- 在IBM Cloud儀表板的下Cloud Foundry Services,單擊Mobile Foundation您在[步驟4.2]中創建的服務。顯示的服務概述頁面將嵌入MFP儀表板。您還可以通過附加/mfpconsole到url 在單獨的瀏覽器選項卡中打開MFP儀表板https://mobilefoundation-xxxx-xxxxx.xx-xx.mybluemix.net。
例: https://mobilefoundation-xxxx-xxxxx.xx-xx.mybluemix.net/mfpconsole
注意:username&password可以Service credentials在步驟4.2中找到。
- 在MFP儀表板內部,在左側列表中,您將看到VisualRecognition列出的適配器。
如下更新MFP適配器配置:
- 在MFP儀表板內部,單擊ImagesFetch適配器。在Configurations選項卡下,您應該看到用於訪問雲對象存儲的各種屬性,建議引擎Api和視覺識別Api,如下所示。
- 本Cloud Object Storage Bucket Name可以在步驟2.1.1中找到,Cloud Object Storage API Key可以在步驟2.1.2中找到,Cloud Object Storage Endpoint可以通過將被發現IBM Cloud Dashboard > Resources > Storage > Cloud Object Storage並點擊Endpoint和公眾鏈接,永續性和位置步驟2.1.1選擇並且Cloud Object Storage Service ID可以在步驟2.1中找到.2。
- 該Recommendation Engine API URL是你的Python應用程序的網址,並且可以在步驟2.7中找到,Visual Recognition API URL是您的應用程序的NodeJS URL和可以在步驟4.2中找到。
- 通過單擊保存更改Save。
- 點擊Resources標籤。您應該看到VisualRecognition適配器公開的各種REST API ,如下所示。
4.4.3測試ImagesFetch適配器
要測試適配器,請使用任何REST客戶端(如Postman)。安裝郵遞員後,鍵入url[步驟4.2]中創建的,然後將其附加到/mfp/api/adapters/ImagesFetch/resource和/objectStorage以測試適配器是否正在與Cloud Object Storage建立連接。
例: https://mobilefoundation-xxxx-xxxxxx.xx-xx.mybluemix.net/mfp/api/adapters/ImagesFetch/resource/objectStorage
- 現在單擊Send按鈕運行GET /API。API響應應顯示在,Response Body如下面的快照所示。
- 的GET API /objectStorage應該返回一個JSON對象,其中包含baseUrl和authorizationHeader,如下所示。
- 的GET API /recommendationEngine應該返回一個JSON對象,其中包含recommendationEngineApi如下所示。
例: https://mobilefoundation-xxxx-xxxxxx.xx-xx.mybluemix.net/mfp/api/adapters/ImagesFetch/resource/recommendationEngine
- 的GET API /visualRecognition應該返回一個JSON對象,其中包含VisualRecognitionApi如下所示。
例: https://mobilefoundation-xxxx-xxxxxx.xx-xx.mybluemix.net/mfp/api/adapters/ImagesFetch/resource/visualRecognition
4.5在Android手機上運行應用程序
4.5.1安裝Android Studio和Android SDK平臺
- 從https://developer.android.com/studio/下載並安裝Android Studio。
- 如下安裝Android SDK Platform 23(或更高版本):
- 啟動Android Studio。點擊Configure->SDK Manager記下Android SDK Location。在下SDK Platforms,選擇Android 6.0 (Marshmallow) API Level 23或更高。單擊Apply,然後單擊確定OK。這將在您的計算機上安裝Android SDK Platform。
4.5.2在Android手機上啟用開發人員選項和USB調試
- 按照https://developer.android.com/studio/debug/dev-options中的步驟在Android手機上啟用USB調試
- 在手機上啟動“設置”應用。選擇About Device-> Software Info。點按Build number7次以啟用開發人員選項。 返回設置列表。選擇Developer options並啟用USB debugging。
- 如果您是在Windows上進行開發,則需要按照https://developer.android.com/studio/run/oem-usb中的說明安裝適當的USB驅動程序。
- 通過USB電纜將Android手機連接到您的開發機,您將看到提示,顯示需要進行adb訪問,allow即訪問。
注意:如果您有android adb工具,則可以輸入來檢查設備是否已連接adb devices。
4.5.3將虛擬鏡像應用程序註冊到MFP服務器
- 返回JewelleryStoreApp目錄。
$ cd ../JewelleryStoreApp
- 將應用程序註冊為“顯示如下”。
$ mfpdev app register
Verifying server configuration...
Registering to server:'https://mobilefoundation-xxxx-xxxxxx.xx-xx.mybluemix.net:443' runtime:'mfp'
Updated config.xml file located at: .../Ionic-MFP-App/IonicMobileApp/config.xml
Run 'cordova prepare' to propagate changes.
Registered app for platform: android
注:在[步驟4.2],如果你指定No要Make this server the default?,那麼你需要指定服務器配置文件的名稱(MyServer在結束在我們的例子),mfpdev app deploy命令如下圖所示。 $ mfpdev app register MyServer
注意:通過運行傳播更改 cordova prepare
4.5.5在Android手機上構建/運行Ionic應用程序
- 編譯Android應用
$ ionic cordova build android
注意:build&run命令應在JewelleryStoreApp目錄中執行,而不要在其他目錄中執行。
注意:請確保您通過USB電纜將Android手機連接到開發計算機,並接受adb訪問權限。
- 在Android設備上運行應用程序
$ ionic cordova run android
- 出現提示時,請允許“ 攝像機權限”和“ 存儲權限”。沒有此功能,虛擬鏡像將無法工作。 注意:僅當您選擇從相機中選擇照片時,才會詢問存儲許可。注意:如果您的移動設備中沒有相機提示,請按照步驟4 TROUBLESHOOTING.md進行修復。
- 要獲取您的年齡和性別,請單擊圖片或選擇現有圖片。
- 根據您的年齡和性別,將推薦珠寶清單。
- 您可以將任何珠寶添加到購物車。
4.5.6更新應用程序徽標和啟動(可選)
參考:自動化圖標和啟動畫面https://blog.ionicframework.com/automating-icons-and-splash-screens/
將所需的應用程序圖標複製到,JewelleryStoreApp/resources/icon.png並將應用程序初始內容複製到JewelleryStoreApp/resources/splash.png。
$ ionic cordova resources
對於運行ionic cordova resources命令,您需要在ionicframework.com上註冊並在命令行上指定憑據。
4.6構建APK以上傳到Google Play商店(可選)
參考:https://ionicframework.com/docs/intro/deploying/
- 在以下內容的末尾添加以下行JewelleryStoreApp/platforms/android/app/src/main/proguard-project-mfp.txt:
-dontwarn okhttp3.internal.huc.**
- 創建發佈版本,如下所示:
$ cd ../JewelleryStoreApp
$ ionic cordova build android --prod --release
- ANDROID_HOME按照[步驟xx]中的說明設置環境變量。在Mac上,通常是:
export ANDROID_HOME=/Users//Library/Android/sdk
- zip align發佈版本如下:
$ cd ./platforms/android/build/outputs/apk/
$ ls
android-release-unsigned.apk
$ $ANDROID_HOME/build-tools/28.0.3/zipalign -v -p 4 android-release-unsigned.apk android-release-unsigned-aligned.apk
$ ls
android-release-unsigned-aligned.apk android-release-unsigned.apk
- 創建如下的自簽名證書:
記下Keystore password您設置的。您需要使用它來簽名APK。
$ keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: xxxxx xxxxxxxxx
What is the name of your organizational unit?
[Unknown]: XXX
What is the name of your organization?
[Unknown]: XXX
What is the name of your City or Locality?
[Unknown]: Xxxxxxxxxx
What is the name of your State or Province?
[Unknown]: Xxxxxxxxx
What is the two-letter country code for this unit?
[Unknown]: XX
Is CN=xxxxx xxxxxxxxx, OU=XXX, O=XXX, L=Xxxxxxxxxx, ST=Xxxxxxxxx, C=XX correct?
[no]: yes
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,000 days
for: CN=xxxx xxxxxxxxx, OU=XXX, O=XXX, L=Xxxxxxxxxx, ST=Xxxxxxxxx, C=XX
Enter key password for
(RETURN if same as keystore password):
[Storing my-release-key.jks]
$ ls
android-release-unsigned-aligned.apk android-release-unsigned.apk my-release-key.jks
- 自我簽名APK如下:
$ $ANDROID_HOME/build-tools/28.0.3/apksigner sign --ks my-release-key.jks --out thejewellerystore.apk android-release-unsigned-aligned.apk
Keystore password for signer #1:
$ ls
android-release-unsigned-aligned.apk my-release-key.jks
android-release-unsigned.apk thejewellerystore.apk
$
- thejewellerystore.apk通過上傳到Google Play商店或公司內部的App Store進行分發。
故障排除
使用Chrome開發者工具調試Android混合應用
請參閱故障排除指南以獲取一些常見問題的解決方案。
- 安裝谷歌瀏覽器
- 打開谷歌瀏覽器。開啟網址chrome://inspect/#devices
- 通過USB電纜將手機連接到部署設備,您應該在頁面上看到列出的設備名稱,如圖所示。
- 在下方Devices,單擊所inspect連接設備下方的。
- 您可以在此處查看該應用程序執行的每個操作的控制檯日誌。
執照
阿帕奇2.0