美文网首页
RN开发常见问题以及解决方法(不断更新中...)

RN开发常见问题以及解决方法(不断更新中...)

作者: LiteDeveloper | 来源:发表于2019-07-29 16:55 被阅读0次

    1、Android锁屏后接收不到推送消息:

    (1)、在权限中加入

    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    (2)、在MainActivity中导入import android.view.Window;

    import android.view.WindowManager;

    之后在onCreate

    方法中加入这段代码:

    final Window win = getWindow();

    win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED //锁屏状态下显示

            | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD //解锁

            | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);//打开屏幕

    2、运行iOSxcode 10 出现 :-1: Multiple commands produce '/Users/.../Library/Developer/Xcode/DerivedData/.../Build...

    方法一、删除info.plist文件

    方法二、File->Workspaces Settings->Per-user Workspaces Settings下面选择Build System的Legacy Build System选择即可

    3、AndroidxAndroid support库共存问题解决(报错v4.support

    解决方案一 转换成Androidx

    1、将build tools更新到3.2.0gradle更新到4.6,依赖库统一更新到28.0.0,这一步非常重要,否则会导致第二步不能完全转换成功。修改完成后,可以看到依赖库都是28.0.0的

    2、选择工程右键→Refactor→Migrate to Androidx...

    3、选中所有需要重命名的目录,执行Do Refactor

    4、可以发现已经看不到support库了,运行成功安装app。

    解决方案二 转换成Android Support

    1、查看那些库依赖了Androidx,执行gradlew :app:dependencies(Mac下是:./gradlew :app:dependencies)

    2、我这里发现是第三方库implementation 'com.github.chrisbanes:PhotoView:latest.release'引用了Androidx,最新版本是2.2.0中引用了Androidx。

    之后可以更改这个库到之前版本:

    implementation 'com.github.chrisbanes:PhotoView:2.1.4’

    然后可以发现看不到androidx库了,运行成功安装app。

    依赖库的时候,尽量不要使用latest.release,而使用具体的版本。

    不会因为依赖库更新,引起兼容问题;

    减少每次去查找最新版本,可以节省编译时间。

    4、react-native修改android 类的包(package)名

    假设包名为com.exease.etd.objective,以下地方需要修改。 

    首先是两个java文件:android/app/src/main/java/com/PROJECT_NAME/MainActivity.java和/MainApplication.java,修改第一行为package com.exease.etd.objective; 

    然后是安卓的描述文件android/app/src/main/AndroidManifest.xml,第二行把package的至改为com.exease.etd.objective 

    之后是两个打包脚本。 

    android/app/BUCK,修改两个package的值package = 'com.exease.etd.objective', 

    android/app/build.gradle其中的applicationID,改为applicationId "com.exease.etd.objective" 

    修改完成后,命令行进入android目录,执行./gradlew clean清除缓存即可(windows上是gradlew.bat) 

    至此差不多修改完成,能够打包出正确包名的apk。不过在开发过程中,如果需要自动link原生模块,会导致命令出错无法link成功。所以还是建议按照java的规范把java文件放入包名匹配的目录中。 

    把android/app/src/main/java/com/PROJECT_NAME/MainActivity.java和/MainApplication.java两个文件移入新创建的目录android/app/src/main/java/com/exease/etd/objective/里面,就能够愉快的react-native link了。

    5、配置fastlane

    (1)In the terminal type cd ~/ to go to your home folder

    (2)Type touch .bash_profile to create your new empty file

    (3)Type open -e .bash_profile to open the file

    (4)Enter export PATH="$HOME/.fastlane/bin:$PATH" and save

    (5)Restart terminal(not sure needed?)

    fastlane自动打包:https://www.jianshu.com/p/7cc48d56a7ac

    fastlane插件安装:https://blog.csdn.net/kuangdacaikuang/article/details/80446028

    6、查看Android项目中三方库的依赖关系:

    ./gradlew app:dependencies

    如果提示没有权限

    -bash: ./gradlew: Permission denied

    执行以下命令即可:

    chmod +x gradlew

    7、使用react-native run-ios找不到iPhone X模拟器

    if (!version.startsWith('iOS') && !version.startsWith('tvOS'))更改为

    if(!version.startsWith('com.apple.CoreSimulator.SimRuntime.iOS')&& !version.startsWith('com.apple.CoreSimulator.SimRuntime.tvOS'))

    未完,持续增加中。。。

    相关文章

      网友评论

          本文标题:RN开发常见问题以及解决方法(不断更新中...)

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