技术经验谈 技术经验谈
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

hss01248

一号线程序员
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 编译和自动化

    • gradle基础
    • gradle-task
    • appbundle打包的自动化
    • cmake vs gradle
    • cmake入门
    • gradle依赖管理
    • gradle加速之拉取依赖的加速
    • gradle远程脚本
    • maven
    • 多module时自动发布所有lib
    • 将react native打包成一个aar
      • 如何上传:
        • 或者用命令上传:mvn deploy
        • 第一步:在settings.xml中配置私服用户信息,要与上文的id相符合
      • 然后命令行上传:
        • 参数说明:
        • 一个参数都不能少
      • 上传后:
      • 如果使用code push,还需要在app.gradle中增加;
      • 疑问: assets能够打进aar中吗?
      • 1 端口映射
      • 2 运行 Packager
      • 3 使用chrome tools看js日志
      • 4 或者使用单独的debug工具:
  • 异常上报和监测

  • SDK封装方法论
  • 结构化文档一键转代码的实践-埋点-翻译-java api注释
  • 防御式编程例子1-颜色解析工具的处理
  • 工程方法
  • 编译和自动化
hss01248
2020-08-11
目录

将react native打包成一个aar

# 如何将react native打包成一个aar

# rn打包bundle

npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/com/your-company-name/app-package-name/src/main/assets/index.android.bundle --assets-dest android/com/your-company-name/app-package-name/src/main/res/
或
npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output index.android.bundle --assets-dest android/
1
2
3

一句话总结: 本地文件夹方式的maven依赖改成远程maven仓库依赖,同时rn的打包产物bundle文件放到子module的assets目录下.

# 首先 ,如何在现有Android项目中引入 react native:

https://reactnative.cn/docs/integration-with-existing-apps

开发模式为在本地../node_modules/里寻找react-native依赖和webkit的依赖

image-20200522141821916

image-20200522142101859

image-20200522142239812

其实就是在本地整了这两个maven仓库而已

image-20200522143520961

如此依赖,项目要编译成功,需要始终有本地的文件夹,主要是aar和porm文件,

是否可以将本地文件夹中的react-native依赖和webkit的依赖放到远程呢?当然是可以的

把相关的依赖发布到远程就可以了,私服nexus,或者maven center

目前,react-native已经有人发布到了maven center: 直接拿来用就行了

https://mvnrepository.com/artifact/com.walmartlabs.ern/react-native

webkit/chrome没有人发布. 好像是npm管理的. maven拉不到.

webkit/chrome 内核的pom文件里没有依赖其他的,也可以直接aar放到libs中.

,但比较麻烦,还是放到远程(nexus)比较方便

https://www.cnblogs.com/aimqqroad-13/p/8514274.html

image-20200522144235753

# 那么,最终形态是:

image-20200527200612573

主工程里:

image-20200522144315828

# 如何上传:

nmp管理变成maven管理:

用管理员账户登录nexus,手动上传aar和porm

# 或者用命令上传:mvn deploy

https://blog.csdn.net/chenaini119/article/details/52764543

http://maven.apache.org/plugins/maven-deploy-plugin/usage.html

#

https://www.jianshu.com/p/2ef1642b769b

# 第一步:在settings.xml中配置私服用户信息,要与上文的id相符合

  <servers>
      <server>
        <id>releases</id>
        <username>android-jinchuang</username>
        <password>jinchuang</password>
      </server>
      <server>
        <id>snapshots</id>
        <username>android-jinchuang</username>
        <password>jinchuang</password>
      </server>
  </servers>
1
2
3
4
5
6
7
8
9
10
11
12

# 然后命令行上传:

mvn deploy:deploy-file -DgroupId=org.webkit -DartifactId=android-jsc -Dversion=r245459 -Dfile=android-jsc-r245459.aar -Durl=https://git.xxxx.com:8856/repository/maven-releases/ -X -DrepositoryId=releases -DpomFile=android-jsc-r245459.pom

# 参数说明:

mvn deploy:deploy-file

-DgroupId=com.alibaba.csp //groupId

-DartifactId=sentinel-annotation-aspectj // artifactId

-Dversion=1.2-SNAPSHOT //version

-Dfile=g:\sentinel-annotation-aspectj-1.4.0.jar //jar包路径及jar包文件名

-Dpackageing=jar //上传文件的格式

-DpomFile=pom.xml //重点在这, 必须单独上传jar中的pom.xml

-DrepositoryId=user-thirdparty //连接maven私服的登录名及密码, 在maven > setting.xml 中配置好的

-Durl=http://IP:8081/nexus/content/repositories/snapshots/ //上传的私服路径及目录

# 一个参数都不能少

如果少了 -DrepositoryId,则无法读取setting.xml里相应id的用户名密码,会401

如果少了-DpomFile,则会自动使用空的pom,少了原来pom中相关依赖

# 上传后:

企业微信截图_79326649-d0ae-4f8c-a4e3-6bb6117a8c64

作者:WarrriorKing 链接:https://www.jianshu.com/p/2ef1642b769b 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

# 如果使用code push,还需要在app.gradle中增加;

gradle.projectsEvaluated {
    android.buildTypes.each {
        // to prevent incorrect long value restoration from strings.xml we need to wrap it with double quotes
        // https://github.com/Microsoft/cordova-plugin-code-push/issues/264
        it.resValue 'string', "CODE_PUSH_APK_BUILD_TIME",
                String.format("\"%d\"", System.currentTimeMillis())
    }
}
1
2
3
4
5
6
7
8

# 疑问: assets能够打进aar中吗?

可以的:

image-20200528103924470

# 启动调试

https://reactnative.cn/docs/integration-with-existing-apps

# 1 端口映射

adb reverse tcp:8081 tcp:8081

# 2 运行 Packager

运行应用首先需要启动开发服务器(Packager)。你只需在项目根目录中执行以下命令即可:

$ yarn start
1

# 3 使用chrome tools看js日志

http://localhost:8081/debugger-ui

https://reactnative.cn/docs/debugging

# 4 或者使用单独的debug工具:

npm install -g react-devtools

安装完成后在命令行中执行react-devtools即可启动此工具:

react-devtools
1

# 发布到binary:

https://juejin.im/post/5858cc37570c35006916b718

各种包管理

![image-20200616104526150](/Users/hss/Library/Application Support/typora-user-images/image-20200616104526150.png)

编辑 (opens new window)
上次更新: 2022/08/25, 20:20:31
多module时自动发布所有lib
sentry异常上报和统计系统

← 多module时自动发布所有lib sentry异常上报和统计系统→

最近更新
01
截图后的自动压缩工具
12-27
02
图片视频文件根据exif批量重命名
12-27
03
chatgpt图片识别描述功能
02-20
更多文章>
Theme by Vdoing | Copyright © 2020-2025 | 粤ICP备20041795号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式