草庐IT

uni-app项目打包成apk(本地打包篇)

欧根老婆的狗 2023-04-14 原文

        最近可能要接一个uni-app的项目,之前没有接触过,因此学习了一下,好在uni-app基本算是vue和微信小程序的结合体,所以写代码方面问题不是太多,不懂的百度一下基本都能处理。写完demo之后,demo的内容应该能告诉客户我可以做,但我一开始是先用手机录制视频,然后把录制的视频给客户看的。但这样不够好,因为不知道打包成apk后会遇到什么问题,因此还是自己摸索着去打包成可安装的apk,直接让客户试用。

        下面的步骤,不要跳步,一步步看,肯定是可以成功的。     

1. 本次用到的工具:

        1. 代码开发工具:HBuilder X

        2. apk打包工具:Android Studio

        3. apk打包SDK:Android离线SDK  (下载地址:Android离线SDK

        3. 生成签名证书的工具:jdk1.8(网上说只要装jre就行,但jdk里包含jre,所以直接装jdk吧,jdk装完要配置环境变量,jdk环境变量的配置可以看这个:jdk环境变量配置

        4. 生成appkey的网站:DCLOUD的开发者中心(网址:开发者中心) 

2. 导出前的配置

        在 HBuilder X 中打开uni-app项目中的 mainifest.json 文件,会弹出来一些可配置的内容,这次我们简单一点,只配置基础配置。其中 uni-app应用标识(AppID) 如果默认没有的话,点后面的 重新获取 即可,它会警告你,不过点了没事,且会为你生成一个AppID。然后就是选择开发使用的vue版本,按实际选择即可,其它的貌似可以随便填(如果只是做打包测试的话)。

3. 导出uni-app项目供打包使用

        项目代码在自己手机上测试运行成功后,我们需要把uni-app的项目导出。点击 HBuilder X上方的 发行-->原生App-本地打包-->生成本地打包App资源 即可。如果是第一次点击,可能会提示你装什么东西,按提示的来,同意安装就可以了。

         导出成功后,HBuilder X 下方的控制台会告诉你导出路径。至此,HBuilder X 的任务完成。

 4. 下载Android离线SDK

         Android离线SDK 下载地址:Android离线SDK 

         这个sdk可能不止用来打包apk,但目前我只是用来打包apk。

 5. 将HBuilder X导出的文件夹移动到离线SDK中

        将刚才 HBuilder X 导出的以AppID命名的文件夹(www文件夹的上一级)整个移动到离线SDK的 HBuilder-Integrate-AS\simpleDemo\src\main\assets\apps 路径下,该路径下默认会有一个叫 __UNI__A 的文件夹,这个直接删除,我们用不到。

 6. Android Studio 导入SDK中的示例项目

        如果第一次安装 Android Studio,安装过程中会提示你缺啥好像,记不太清了,直接cancel那个提示,然后跟着引导一步步安装就行了,安装结束后,好像也没什么问题。

        接着导入离线SDK中的 HBuilder-Integrate-AS 文件夹到 Android Studio 中。注意:文件路径中不要出现中文!否则会报错!

7. 修改dcloud_control.xml 中的 appid

        接下来,别纠结截图中我 Android Studio 的文件结构为什么你不一样,截图中有些文件夹或者路径好像被隐藏了,这不重要,我只是来打包的。

        找到 assets/data 下的 dcloud_control.xml 文件,点开它,将文件中appid的值,改成 HBuilder X 中生成的appid。appid记不住没关系,还记得第5步中让你移动的那个文件夹吗,它的文件名就是appid

8. 生成Android证书签名

        这一步我参考了别人的文章,所以不多讲了,按他的步骤做(jdk环境变量的配置虽然他文章里写了,小白最好还是看这个:jdk环境变量配置),记下生成证书的文件路径、证书的SHA1安全码、证书的alias(别名)以及设置的两个密码(怕忘记,两个密码设一样的),后续步骤会用得到。参考网址(生成Android证书签名)。

9. 生成appkey

        前往 DCLOUD 的开发者中心(网址:开发者中心),如果按照我的步骤做,那在第2步 HBuilder X 中生成appid后,就能在开发者中心我的应用中看到这条应用,点击应用名称会跳转到该条应用的管理页面。

         点击上方的 离线打包Key管理 按钮,进入生成appkey的菜单。我的这个菜单是已经生成appkey的,所以会和你第一次点进来有所不同,不用担心。

        选择平台:我们选择Android,因为我们这次是打包apk。

        Android包名:包名不能随便写,否则安装apk打开后会报错!它的值在离线SDK的 \HBuilder-Integrate-AS\simpleDemo\src\main\AndroidManifest.xml 中,没改过的话应该跟我一样,是 com.android.simple

        Android证书签名SHA1:第8步中让你记下的SHA1安全码。

        这些填完后,点确认还是啥的,应该就可以生成appkey了。

10. 在 AndroidManifest.xml 中配置appKey

        回到 Android Studio ,在 AndroidManifest.xml 中配置appKey

11. 打包apk

        现在万事俱备,只剩打包了,点击 Android Studio 上方的 Build-->Generate Signed Bundle / APK...

         弹出打包窗口,选择 APK,然后点击 Next

        点击 Choose existing...,选择第8步让你记下的证书存放路径,Key store path 就会自动填充,Key store password、Key alias、key password,这三项也在第8步中设置。如果两个password记不住了,那就按第8步的教程重新生成一个证书吧。Remember passwords 根据自己需要吧(小白还是勾吧,记住密码)。全部填完后点击下方 Next 

         最后就是选择导出路径,然后选择 release,然后点击下方 Finish

         导出成功后,Android Studio 下方的 Build 控制台会提示 BUILD SUCCESSFUL 。

        然后就可以在导出路劲的release文件夹里找到打包好的apk文件了,截图里的是默认导出路径,你可以在release的时候选择你的导出路径。

         然后在手机上安装刚才的apk并打开,如果正常打开,那基本就成功了。

        我在摸索的时候,打包成功后,安装到手机,打开app的时候提示appkey不存在或配置错误,后来发现是第9步生成appkey的时候,包名写错了,一定要和 AndroidManifest.xml 文件中的包名一样。

         更多进阶的内容,等我摸索完再发文章,多多点赞,感谢支持!

有关uni-app项目打包成apk(本地打包篇)的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  5. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  6. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  7. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  8. ruby-on-rails - 如何重命名或移动 Rails 的 README_FOR_APP - 2

    当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?

  9. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  10. ruby - 使用 postgres.app 在 rvm 下要求 pg 时出错 - 2

    我正在使用Postgres.app在OSX(10.8.3)上。我已经修改了我的PATH,以便应用程序的bin文件夹位于所有其他文件夹之前。Rammy:~phrogz$whichpg_config/Applications/Postgres.app/Contents/MacOS/bin/pg_config我已经安装了rvm并且可以毫无错误地安装pggem,但是当我需要它时我得到一个错误:Rammy:~phrogz$gem-v1.8.25Rammy:~phrogz$geminstallpgFetching:pg-0.15.1.gem(100%)Buildingnativeextension

随机推荐