csv文件如何识别双引号中内容当成一个值_基于视觉识别的推荐系统

读者完成此操作后,他们将了解如何:

  • 使用移动应用程序连接到Mobile First Foundation。
  • 从移动应用程序获取输入,并在IBM Cloud上进行所需的处理。
  • 通过移动应用程序使用Watson Visual Recognition。
  • 部署和使用Cloud Foundry应用程序。
  • 使用移动应用程序从Cloud Object Storage访问图像。
  • 连接并访问Cloud上的Db2。
4e5bf277f687a5a84628c56626635a46.png

参考步骤:

  1. 从用户的手机获取输入。
  2. 输入是通过Mobile First Foundation传递的。
  3. Mobile First Foundation将用户的输入传递给视觉识别应用程序。
  4. 视觉识别应用程序与Watson视觉识别服务进行交互,该服务返回适当的输出。
  5. 然后将输出(用户的年龄和性别)发送到用户的移动应用程序。
  6. 用户单击“获取建议”按钮。
  7. 请求推荐引擎基于视觉识别应用程序输出返回适当的推荐。
  8. 推荐引擎与IBM Db2交互以获取推荐产品的必要产品详细信息。
  9. 从Cloud Object Storage中检索推荐产品的图像。
  10. 推荐引擎检索推荐产品的图像和详细信息。
  11. 推荐引擎将推荐产品的图像和详细信息返回给用户的移动应用程序。
  12. 用户现在可以将物品添加到购物车并查看它们。

先决条件

  • IBM Cloud帐户:创建一个IBM Cloud帐户。
  • Python 3:安装python 3。
  • Java 1.8.x:确保您具有所需的版本(Java 1.8.x)。

Steps

请按照以下步骤进行设置并运行此代码模式。

  1. 克隆仓库
  2. 推荐引擎设置
  3. Watson视觉识别设置
  4. 移动应用程序设置

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,如下所示。
f601c8cd8006cc223bb9a9fc8ba986ea.png
  • 点击browse files并上传data.csv,如下所示。data.csv可以在的根文件夹中找到ProductDetailsDB2。
70851397018e387f4c6cd9a9df4dd251.png
  • 选择默认架构并创建一个表PRODUCTS,如下所示。
7757a41a5f61e4f387f71be2ccb9ca27.png
  • 点击Next,如下所示。
14515298495c08ea94d63349abcf68fa.png
  • 点击Next。
  • 点击Begin Load,如下所示。
072cd89db268aa99119edae38b5e4132.png
  • 加载数据后,您可以查看如下图所示的表格。
80c9c4a751ba7f35f4c35a71da9c8c2b.png

注意:确保记下表名称。在我的情况下,表名称为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,主机名,端口号和数据库凭据。

2a6394f0b33c1364b2baa925c7d80628.png

2.6。将python应用程序部署到Cloud Foundry

  • 创建一个Cloud Foundry实例IBM Cloud Foundry Service,并遵循将python应用程序部署到IBM Cloud Foundry的一组说明。
1a5a494450ed9f03b94dd0ab3080ded9.png

注意:确保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 example@in.ibm.com -o example@in.ibm.com -s dev

注意:如果您使用的是联合ID,请使用该-sso选项。

$ ibmcloud login -o example@in.ibm.com -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显示在下面的快照中所示。
c59669db64a7706843eb77940714dcb2.png

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的一组说明。
3280a762fa878dd6209114fe920cfd79.png

注意:确保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 example@in.ibm.com -o example@in.ibm.com -s dev

注意:如果您使用的是联合ID,请使用该-sso选项。

$ ibmcloud login -o example@in.ibm.com -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 cordova@8.1.2

$ cordova --version

8.1.2

注意:请参阅MFP文档以获取Cordova的兼容版本-https: //mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/application-development/sdk/cordova/

  • 安装离子

$ sudo npm install -g ionic@4.12.0

$ 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 npm@3.10.10

  • 从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如下所示进行验证。

80439a27669b0a6afac6db3ce8ae6bfd.png

注意:如果当前帐户类型不提供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,如下所示。
56e4b0ddae91495bf9caaa0447669a1e.png
  • 的GET API /recommendationEngine应该返回一个JSON对象,其中包含recommendationEngineApi如下所示。

例: https://mobilefoundation-xxxx-xxxxxx.xx-xx.mybluemix.net/mfp/api/adapters/ImagesFetch/resource/recommendationEngine

9e44fb1564312dc3a1ece2afb0b8a4bd.png
  • 的GET API /visualRecognition应该返回一个JSON对象,其中包含VisualRecognitionApi如下所示。

例: https://mobilefoundation-xxxx-xxxxxx.xx-xx.mybluemix.net/mfp/api/adapters/ImagesFetch/resource/visualRecognition

e7d22ef92b7f43bd30d881123cb55713.png

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

7a3aa4c282d5c7482a17f7803979622d.png
2b3716fa91eb0a3924c0aaa4150df941.png
  • 出现提示时,请允许“ 摄像机权限”和“ 存储权限”。没有此功能,虚拟镜像将无法工作。 注意:仅当您选择从相机中选择照片时,才会询问存储许可。注意:如果您的移动设备中没有相机提示,请按照步骤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进行分发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值