美文网首页ionic2实战ionic3开发集锦ionic2
ionic2实战-签名android App/android打包

ionic2实战-签名android App/android打包

作者: 昵称已被使用_ | 来源:发表于2017-03-30 23:09 被阅读3280次

    为什么要签名app

    • android app那么多,要给app一个唯一身份,有了这个唯一身份才能上传到app商店中
    • 升级应用时若包名一致但签名不一致,APP也会安装失败
    • 所以正式版app都要签名,还有许多我不知道的原因......

    注意

    • 打包前先检查你的app id,起一个不会和别人重复的名字.很多人还在使用io.ionic.starter,请赶紧改了.一般命名是com.公司英文名称.应用英文名称

    制作签名文件(.keystore文件)

    • 使用如下命令生成签名文件
      keytool -genkey -v -keystore 你起的名字.keystore -alias 你起的别名 -keyalg RSA -validity 10000
      生成签名(.keystore)文件的过程
    生成的.keystore文件

    使用签名文件

    • 把上一部生成的签名文件复制到app根目录下
    • 然后在app根目录下创建一个名字为release-signing.properties的文件,这个文件的内容如下
    storeFile=E://work_space//jianshu//ionic2_tabs//ionic2_tabs.keystore
    keyAlias=ionic2_tabs
    storePassword=ionic2_tabs
    keyPassword=ionic2_tabs
    

    打包正式版app(release版)

    • 把上一部创建的release-signing.properties文件复制到./platforms/android根目录下

    找不到./platforms/android目录?执行命令cordova platform add android

    • 最后执行ionic cordova build android -releaseionic cordova build android --prod --release生成正式版app

    真正的上线的版本都要使用--prod参数,这会压缩app,使app体积变小,启动更快.缺点是这个参数打包很慢,我这里大概需要5到10分钟

    最后

    其实release-signing.properties.keystore文件放到项目根目录是为了方便使用和好写此教程.

    相关文章

      网友评论

      • 海货:来支持一下你
      • A丶暗月晶瑙:大佬请问下 我打包签名之后安装完 打开报 INVALID_USER_KEY 错误 怎么解决
        昵称已被使用_:你的高德地图定位release key要用本文讲的keystore文件生成,你在高德地图控制台编辑你现在的key看看去
      • A丶暗月晶瑙:大佬请问下 我打包签名之后安装完 打开报 INVALID_USER_KEY 错误 怎么解决
      • shen1996:大神 我不小心把key给删了 有什么办法找回吗:scream: :scream:
        昵称已被使用_:@shen1996 重新生成
      • bf9710eb5572:我的打包完了,用模拟器打开白屏,而且jiguang提示:包名与AppKey不匹配,是怎么回事
      • Steven2619:大佬你好,,我安装你的导航插件添加平台的时候失败了,不知道是什么原因
        Installing "com.kit.cordova.amaplocation" for android

        Installing "com.kit.cordova.amapnavigation" for android
        Failed to install 'com.kit.cordova.amapnavigation': Error: ENOENT: no such file or directory, open 'E:\project\MSPT\platforms\android\AndroidManifest.xml'
        at Object.fs.openSync (fs.js:646:18)
        at Object.fs.readFileSync (fs.js:551:33)
        at Object.parseElementtreeSync (E:\project\MSPT\platforms\android\cordova\node_modules\cordova-common\src\util\xml-helpers.js:180:27)
        at new AndroidManifest (E:\project\MSPT\platforms\android\cordova\lib\AndroidManifest.js:29:20)
        at AndroidProject.getPackageName (E:\project\MSPT\platforms\android\cordova\lib\AndroidProject.js:99:12)
        at Api.addPlugin (E:\project\MSPT\platforms\android\cordova\Api.js:223:57)
        at handleInstall (C:\Users\Steven Song\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\install.js:594:10)
        at C:\Users\Steven Song\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\plugman\install.js:357:28
        at _fulfilled (C:\Users\Steven Song\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\node_modules\q\q.js:787:54)
        at self.promiseDispatch.done (C:\Users\Steven Song\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\node_modules\q\q.js:816:30)

        (node:2864) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: ENOENT: no such file or directory, open 'E:\project\MSPT\platforms\android\AndroidManifest.xml'
        (node:2864) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
        Steven2619:这是我的ionic项目环境 @IONIC/cli-utils : 1.19.0
        ionic (Ionic CLI) : 3.19.0

        global packages:

        cordova (Cordova CLI) : 8.0.0

        local packages:

        @IONIC/app-scripts : 3.1.6
        Cordova Platforms : android 7.0.0
        Ionic Framework : ionic-angular 3.9.2

        System:

        Node : v8.9.4
        npm : 5.5.1
        OS : Windows 10
      • 清丶虹:博主你好,release-signing.properties中keystore的绝对路径,mac电脑我路径这样/Users/wdg/Documents/payos-ionic/nana.keystore是不是找不到呀,打包后总是未签名版的。
        清丶虹:@小军617 :有道理:joy:
        昵称已被使用_:@清丶虹 没在mac上打包过android:sob:
      • 差不多先生_2517:* What went wrong:
        Execution failed for task ':packageRelease'.
        > com.android.ide.common.signing.KeytoolException: Failed to read key xiyunapp from store "E:\qqDemo\yunAppDubug\xiyunapp.keystore": No key with alias 'xiyunapp' found in keystore E:\qqDemo\yunAppDubug\xiyunapp.keystore

        * Try:
        Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
        Error: cmd: Command failed with exit code 1 Error output:
        FAILURE: Build failed with an exception.

        * What went wrong:
        Execution failed for task ':packageRelease'.
        > com.android.ide.common.signing.KeytoolException: Failed to read key xiyunapp from store "E:\qqDemo\yunAppDubug\xiyunapp.keystore": No key with alias 'xiyunapp' found in keystore E:\qqDemo\yunAppDubug\xiyunapp.keystore

        * Try:
        Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

        [ERROR] An error occurred while running cordova build android --release (exit code 1). 我的报这个错误 = =:sob:
        差不多先生_2517:@小军617 可以了:relaxed:
        昵称已被使用_:No key with alias 'xiyunapp' found
        你重新生成一个吧,注意你的release-signing.properties中的路径,别名别写错了
      • 娶个村姑当老婆:军哥 建议您关于xml 文件的那个app id 问题也添加到这里 这样 读者看到会更清晰 添加平台后会有APP名字 和包名 您也可以截图看看 信息对应的是您说的哪个哦
        差不多先生_2517:请问报这个错误怎么解决
        * What went wrong:
        Execution failed for task ':packageRelease'.
        > com.android.ide.common.signing.KeytoolException: Failed to read key xiyunapp from store "E:\qqDemo\yunAppDubug\xiyunapp.keystore": No key with alias 'xiyunapp' found in keystore E:\qqDemo\yunAppDubug\xiyunapp.keystore

        * Try:
        Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
        Error: cmd: Command failed with exit code 1 Error output:
        FAILURE: Build failed with an exception.

        * What went wrong:
        Execution failed for task ':packageRelease'.
        > com.android.ide.common.signing.KeytoolException: Failed to read key xiyunapp from store "E:\qqDemo\yunAppDubug\xiyunapp.keystore": No key with alias 'xiyunapp' found in keystore E:\qqDemo\yunAppDubug\xiyunapp.keystore

        * Try:
        Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

        [ERROR] An error occurred while running cordova build android --release (exit code 1).
        昵称已被使用_:@娶个村姑当老婆 已加,你看是不是你说的意思.
      • 会飞的tiger:你好,我觉得你打包方式有点问题,你这样生成的签名文件对应的安全码SHA1是调试版本的,生成正式版的签名文件的命令好像是是 keytool -genkey -v -keystore name.jks -alias name -keyalg RSA -keysize 2048 -validity 10000 (name.jks 和name 是自定义名字)
        会飞的tiger:搞错了。。。。,jks是as开发的签名文件,也是最新的一种方式,KeyStore是Eclipse开发Android的时候最早的签名文件,
        会飞的tiger:正式版的签名文件后缀是 .jks
      • 娶个村姑当老婆:想问一下您 这个storeFile=E://work_space//jianshu//ionic2_tabs//ionic2_tabs.keystore 既然是keystore的绝对路径 为什么要带双斜杠 还有就是 是不是就是当前盘符下项目目录 (我的是这样E:\my_project\lappfront\lappfront.keystore)
        差不多先生_2517:@小军617 博主大大早上好,我试了,报错了,错误代码是:yum: :* What went wrong:
        Execution failed for task ':packageRelease'.
        > com.android.ide.common.signing.KeytoolException: Failed to read key xiyunapp from store "E:\qqDemo\yunAppDubug\xiyunapp.keystore": No key with alias 'xiyunapp' found in keystore E:\qqDemo\yunAppDubug\xiyunapp.keystore

        * Try:
        Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
        Error: cmd: Command failed with exit code 1 Error output:
        FAILURE: Build failed with an exception.

        * What went wrong:
        Execution failed for task ':packageRelease'.
        > com.android.ide.common.signing.KeytoolException: Failed to read key xiyunapp from store "E:\qqDemo\yunAppDubug\xiyunapp.keystore": No key with alias 'xiyunapp' found in keystore E:\qqDemo\yunAppDubug\xiyunapp.keystore

        * Try:
        Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

        [ERROR] An error occurred while running cordova build android --release (exit code 1).
        昵称已被使用_:@差不多先生_2517 试一试不是就知道了..
        差不多先生_2517:我也想问这个 = =
      • 205ca1079ffa:我按照这个你的方法,已经生成了android-release.apk,但是安装的时候提示“签名不一致,该应用可能已被恶意纂改”,请问这是为什么?
        205ca1079ffa:@娶个村姑当老婆 在config.xml配置文件里面,widget那一栏的id,改成唯一标识
        娶个村姑当老婆:@写代码要精致 请问如何修改你说的那个APP ID 我这也出现了这个问题
        205ca1079ffa:根据楼主的提议,修改了APP ID,已经解决问题,非常感谢!
      • Jianshu9527:分享的文章超级实用,向你学习
      • 娶个村姑当老婆:你好 我这边打包一直报错 不知道为什么 可以教一教我么
        Jianshu9527:按照教程一步步来,很欢迎技术交流哈
      • 云峰yf:我发布之后提示我和NG的官方应用冲突了,好像就是说签名冲突了,请问怎么解决?
        昵称已被使用_::wink: 不可能吧
      • notweek:每打包一次正式版app都要一个正式签名吗?
        昵称已被使用_:每次打包正式版前只需要把release-signing.properties文件复制到./platforms/android根目录下

      本文标题:ionic2实战-签名android App/android打包

      本文链接:https://www.haomeiwen.com/subject/ayapottx.html