ReactNative生成签名APK

作者: SpikeKing | 来源:发表于2015-11-23 16:39 被阅读474次

    ReactNative项目最终要面向市场, 生成签名的Apk应用程序, 并发布到各大市场. 官网已经提供了参考, 非常简单, 现在啰嗦几句.

    1. 去掉开发模式

    修改主页入口, setUseDeveloperSupport(false), 去掉开发者支持功能.

            mReactInstanceManager = ReactInstanceManager.builder()
                    .setApplication(getApplication())
                    .setBundleAssetName("index.android.bundle")
                    .setJSMainModuleName("index.android")
                    .addPackage(new MainReactPackage())
                    .setUseDeveloperSupport(false)
                    .setInitialLifecycleState(LifecycleState.RESUMED)
                    .build();
    

    2. Gradle

    Gradle是生成Apk的工具, 配置签名和Proguard.

    android {
        ...
        signingConfigs {
            release {
                storeFile file('key/SpringRainKey')
                storePassword 'chunyu'
                keyAlias 'chunyu'
                keyPassword 'chunyu'
            }
        }
    
        buildTypes {
            release {
                signingConfig signingConfigs.release
                minifyEnabled true  // Set this to true to enable Proguard
                proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    
            }
        }
    }
    

    设置签名signingConfigs: 存储文件(storeFile)位置, 存储密码(storePassword), key别名(keyAlias), key密码(keyPassword).

    生成Release包模式.

    signingConfig signingConfigs.release
    

    启用Proguard.

    minifyEnabled true
    

    注意signingConfigs需要在buildTypes后面, 否则找不到方法.

    3. Proguard内容

    这个官方文档没有提到, 不配置会报错.

    java.lang.NoSuchMethodError: no static or non-static method "Lcom/facebook/react/bridge/ReadableNativeArray;.getType(I)Lcom/facebook/react/bridge/ReadableType;"
    

    proguard-rules.pro中, 保留React的所有代码, 添加在最后.

    # 禁止混淆react
    -keep public class com.facebook.react.** {
      public protected *;
    }
    

    4. 执行

    android文件夹内执行

    ./gradlew installRelease
    
    命令

    即可生成Release包, 并安装入手机, 最终包的位置.

    ./android/app/build/outputs/apk/app-release.apk
    

    参考

    ReactNative项目开发模式已经很成熟了, 我们可以把开发完的项目, 通过以上方式, 生成最终线上的包进行发布.

    OK, Enjoy it!

    相关文章

      网友评论

      本文标题:ReactNative生成签名APK

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