1、Android鎖屏后接收不到推送消息:
(1)精置、在權(quán)限中加入
<uses-permission android:name="android.permission.WAKE_LOCK"/>
(2)计寇、在MainActivity中導(dǎo)入import android.view.Window;
import android.view.WindowManager;
之后在onCreate
方法中加入這段代碼:
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED //鎖屏狀態(tài)下顯示
? ? ? ? | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD //解鎖
? ? ? ? | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);//打開(kāi)屏幕
2、運(yùn)行iOS在xcode 10 出現(xiàn) :-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、Androidx和Android support庫(kù)共存問(wèn)題解決(報(bào)錯(cuò)v4.support)
解決方案一 轉(zhuǎn)換成Androidx
1狼讨、將build tools更新到3.2.0贝淤,gradle更新到4.6,依賴庫(kù)統(tǒng)一更新到28.0.0政供,這一步非常重要播聪,否則會(huì)導(dǎo)致第二步不能完全轉(zhuǎn)換成功朽基。修改完成后,可以看到依賴庫(kù)都是28.0.0的
2离陶、選擇工程右鍵→Refactor→Migrate to Androidx...
3稼虎、選中所有需要重命名的目錄,執(zhí)行Do Refactor
4招刨、可以發(fā)現(xiàn)已經(jīng)看不到support庫(kù)了霎俩,運(yùn)行成功安裝app。
解決方案二 轉(zhuǎn)換成Android Support
1沉眶、查看那些庫(kù)依賴了Androidx打却,執(zhí)行g(shù)radlew :app:dependencies(Mac下是:./gradlew :app:dependencies)
2、我這里發(fā)現(xiàn)是第三方庫(kù)implementation 'com.github.chrisbanes:PhotoView:latest.release'引用了Androidx,最新版本是2.2.0中引用了Androidx谎倔。
之后可以更改這個(gè)庫(kù)到之前版本:
implementation 'com.github.chrisbanes:PhotoView:2.1.4’
然后可以發(fā)現(xiàn)看不到androidx庫(kù)了柳击,運(yùn)行成功安裝app。
依賴庫(kù)的時(shí)候片习,盡量不要使用latest.release捌肴,而使用具體的版本。
不會(huì)因?yàn)橐蕾噹?kù)更新藕咏,引起兼容問(wèn)題状知;
減少每次去查找最新版本,可以節(jié)省編譯時(shí)間孽查。
4饥悴、react-native修改android 類的包(package)名
假設(shè)包名為com.exease.etd.objective,以下地方需要修改卦碾。?
首先是兩個(gè)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?
之后是兩個(gè)打包腳本洲胖。?
android/app/BUCK济榨,修改兩個(gè)package的值package = 'com.exease.etd.objective',?
android/app/build.gradle其中的applicationID,改為applicationId "com.exease.etd.objective"?
修改完成后绿映,命令行進(jìn)入android目錄擒滑,執(zhí)行./gradlew clean清除緩存即可(windows上是gradlew.bat)?
至此差不多修改完成,能夠打包出正確包名的apk叉弦。不過(guò)在開(kāi)發(fā)過(guò)程中丐一,如果需要自動(dòng)link原生模塊,會(huì)導(dǎo)致命令出錯(cuò)無(wú)法link成功淹冰。所以還是建議按照java的規(guī)范把java文件放入包名匹配的目錄中库车。?
把a(bǔ)ndroid/app/src/main/java/com/PROJECT_NAME/MainActivity.java和/MainApplication.java兩個(gè)文件移入新創(chuàng)建的目錄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自動(dòng)打包:http://www.reibang.com/p/7cc48d56a7ac
fastlane插件安裝:https://blog.csdn.net/kuangdacaikuang/article/details/80446028
6洋满、查看Android項(xiàng)目中三方庫(kù)的依賴關(guān)系:
./gradlew app:dependencies
如果提示沒(méi)有權(quán)限
-bash: ./gradlew: Permission denied
執(zhí)行以下命令即可:
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'))
未完珍坊,持續(xù)增加中牺勾。。阵漏。