ld: '/Users/xxx/Library/Developer/Xcode/DerivedData/Runner/Build/Intermediates.noindex/ArchiveIntermediates/Runner/BuildProductsPath/Release-iphoneos/xxx/xxx.framework/xxx' does not contain bitcode . You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.
成都創(chuàng)新互聯(lián)公司主營(yíng)貴溪網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP軟件開(kāi)發(fā),貴溪h5成都小程序開(kāi)發(fā)搭建,貴溪網(wǎng)站營(yíng)銷推廣歡迎貴溪等地區(qū)企業(yè)咨詢
可能你的問(wèn)題描述有點(diǎn)不同, 不過(guò)也是因?yàn)椴寮?kù)沒(méi)有使用 bitcode
這時(shí)你項(xiàng)目打包時(shí), 上面也不能使用 bitcode
再加上下面這個(gè):
這個(gè)問(wèn)題就解決了
??最近在學(xué)習(xí)Flutter開(kāi)發(fā),在一次配置環(huán)境的過(guò)程中遇到了一個(gè)比較尷尬的坑,不過(guò)最終還是把這個(gè)坑給填掉了,再此進(jìn)行一些分享,希望后來(lái)者遇到同樣的問(wèn)題時(shí)可以輕松的解決。
??從下圖中可以看出,前面幾條 flutter doctor 命令執(zhí)行的時(shí)候總是未響應(yīng),通過(guò)各種方式執(zhí)行都是一樣的結(jié)果,但是dart命令是能夠正常執(zhí)行。起初還以為是環(huán)境變量配置的有問(wèn)題,但是后來(lái)把環(huán)境變量改了又改,并且把flutter包換了又換,但是現(xiàn)象一直未得到解決。
??遇到這種難題第一時(shí)間想到的便是百度,但是各種關(guān)鍵詞搜索了一番之后,竟然沒(méi)有找到一篇關(guān)于這種現(xiàn)象的解決方案,大部分都是flutter命令使用教程,如用 flutter doctor 去查看環(huán)境是否配置完成,或者通過(guò) flutter doctor --android-licenses 命令去接受Android SDK的一些協(xié)議許可。
??后來(lái),又嘗試了必應(yīng)和Google搜索,也無(wú)果之后,放棄了通過(guò)網(wǎng)絡(luò)尋求幫助解決的方法。
??由于只有flutter的命令執(zhí)行的時(shí)候無(wú)響應(yīng),所以起初認(rèn)為是程序包有問(wèn)題。于是通過(guò)再次解壓程序壓縮包和配置環(huán)境變量之后,問(wèn)題仍然存在。
??隨后,判斷了不是程序包的問(wèn)題之后開(kāi)始去監(jiān)控應(yīng)用進(jìn)程的變化。
??到這里,可以猜到很可能是由于git導(dǎo)致的問(wèn)題,但是先前安裝過(guò)flutter都沒(méi)有問(wèn)題,這一次重裝系統(tǒng)之后就突然有問(wèn)題了。所以就嘗試著把git軟件給刪除并重新安裝,然后奇跡的發(fā)現(xiàn)了 flutter doctor 命令可以正常執(zhí)行了。
??于是又倒退回去復(fù)現(xiàn)了一下問(wèn)題,發(fā)現(xiàn)是安裝git的時(shí)候選項(xiàng)選的有問(wèn)題導(dǎo)致了和flutter沖突。
??如下圖,選擇了 Use Window's default console window 的選項(xiàng)來(lái)安裝git軟件之后,git bash是直接用的window的命令窗口來(lái)執(zhí)行命令。正是因?yàn)檫x中了這個(gè)選項(xiàng)所以導(dǎo)致flutter命令無(wú)響應(yīng)的問(wèn)題。
??所以如果你出現(xiàn)了和我一樣的問(wèn)題可以嘗試重新安裝git軟件,并在這一步選擇 Use MinTTY 的選項(xiàng)來(lái)安裝。
??經(jīng)過(guò)不斷的試錯(cuò),終于將這個(gè)問(wèn)題解決了,flutter命令也可以正常執(zhí)行了。如圖,通過(guò)VSCode開(kāi)發(fā)工具可以正常的執(zhí)行 flutter create hello_flutter 創(chuàng)建新的flutter項(xiàng)目。
??遇到問(wèn)題要大膽試錯(cuò),只要不斷的嘗試就會(huì)離問(wèn)題的起因更近,最后找到解決問(wèn)題的辦法。如果你的flutter遇到了相同的問(wèn)題而又不是由于git導(dǎo)致的話,也可以通過(guò)類似的方式不斷試錯(cuò)并找到最終的解決方案。也歡迎各位同行可以在評(píng)論里分享自己解決問(wèn)題的方法。
??樂(lè)于分享,共同進(jìn)步。
1、升級(jí)依賴的插件版本pubspec.yaml(包括example),pub get 解決依賴沖突
2、pubspec.yaml所在路徑下執(zhí)行 dart pub upgrade --null-safety 檢查是否所在flutter工程依賴庫(kù)是否都升級(jí)到了空安全版本
example示例需要進(jìn)入example路徑下檢查
1、List默認(rèn)構(gòu)造方法刪除,改用[];
main.dart文件main方法第一行增加CustomFlutterBinding();
2、flutter clean,刪除所有 pubspec.lock文件 ,pub get
3、FutureOr報(bào)錯(cuò)引入頭文件、import 'dart:async';
4、屬性用優(yōu)先用late 或者 ?聲明,在確定不為空情況才用!
import 'dart:xxx'; 引入Dart標(biāo)準(zhǔn)庫(kù)
import 'xxx/xxx.dart'; 引入相對(duì)路徑的Dart文件
import 'package:xxx/xxx.dart'; 引入Pub倉(cāng)庫(kù)pub.dev(或者pub.flutter-io.cn)中的第三方庫(kù)
import 'package:project/xxx/xxx.dart'; 引入自定義的dart文件
import 'xxx' show compute1,compute2 只導(dǎo)入compute1,compute2
import 'xxx' hide compute3 除了compute都引入
import 'xxx' as compute4 將庫(kù)重命名,當(dāng)有名字沖突時(shí)
library compute5; 定義庫(kù)名稱
part of compute6; 表示文件屬于某個(gè)庫(kù)
文件導(dǎo)入順序(從上到下依次)
dart sdk 內(nèi)的庫(kù)
flutter內(nèi)的庫(kù)
第三方庫(kù)
自己的庫(kù)(文件)
相對(duì)路徑引用
命名規(guī)范:
文件夾:小寫 下劃線 lowercase_with_underscores
文件:小寫 下劃線 lowercase_with_underscores
類名:大寫開(kāi)頭的駝峰命名法 UpperCamelCase
變量名:小寫開(kāi)頭的駝峰命名法 lowerCamelCase
常量:小寫開(kāi)頭的駝峰命名法 lowerCamelCase
首字母縮寫詞長(zhǎng)度不超過(guò)兩個(gè)字母的,首字母大寫,比如 HttpRequest
長(zhǎng)度兩個(gè)字母的首字母縮寫詞可完全大寫,比如 IOStream , DBUtils
但單個(gè)單詞縮寫仍然僅首字母大寫,比如 Id
Flutter可以算是當(dāng)下最火熱的新技術(shù)之一,我現(xiàn)在所在團(tuán)隊(duì)也準(zhǔn)備將Flutter技術(shù)應(yīng)用到線上工程中。
關(guān)于混合工程,官方文檔其實(shí)寫的已經(jīng)比較清楚了,按著文檔走一般問(wèn)題不大,
但是有一點(diǎn)值得注意的是,F(xiàn)lutter工程引入的庫(kù)的gradle的 buildTypes 要與原工程保持一致,如果不一致需要手工添加。
進(jìn)入正題,現(xiàn)在Flutter官方默認(rèn)只提供armeabi-v7a、arm64-v8a、x86和x86-64,其中x86和x86-64是為模擬器準(zhǔn)備的。目前我們使用的SDK大部分只使用了armeabi架構(gòu),直接使用我們會(huì)遇見(jiàn)找不到 libflutter.so,libapp.so 的情況,所以我們需要對(duì)FlutterSDK做一定的改造。
首先我們要了解下Flutter編譯產(chǎn)物,因?yàn)椴煌姹井a(chǎn)物是不同的,這里我們只針對(duì)Flutter 1.9.1-hotfixes來(lái)說(shuō)。除了資源文件之外,F(xiàn)lutter打包會(huì)生成兩個(gè)非常重要的so庫(kù),他們分別是 libflutter.so,libapp.so 。其中 libflutter.so 是Flutter的SDK產(chǎn)物而 libapp.so 正是我們編寫的dart文件的產(chǎn)物。默認(rèn)情況下,這兩個(gè)文件都會(huì)出現(xiàn)在armeabi-v7a中,因此我們要作出對(duì)應(yīng)的改造。
libflutter.so 位于FlutterSDK中,這里順帶提一句,除了這對(duì)不同CPU架構(gòu),它還分為Debug版和Release版,它們的區(qū)別在于Debug是為JIT編譯方式打造的,體積較大而Release是為AOT編譯方式打造的,體積很小。對(duì) libflutter.so 的改造,只要將其移動(dòng)文件路徑即可,運(yùn)行以下腳本即可,此腳本來(lái)自美團(tuán)分享的Flutter文章。
移動(dòng)完了 libflutter.so 之后我們打包發(fā)現(xiàn), libapp.so 仍然會(huì)出現(xiàn)在armeabi-v7a中,所以第二部我們就是移動(dòng) libapp.so 。這個(gè)需要更改 flutter.gradle ,我們?cè)?flutter.gradle 的45行可以看到如下定義,它定義了我們的環(huán)境。
在524行我們可以看到,abiValue的取值就是根據(jù)上述定義值。
所以結(jié)論很簡(jiǎn)單,只要將
private static final String ARCH_ARM32 = "armeabi-v7a";
改為
private static final String ARCH_ARM32 = "armeabi";
就可以完成對(duì)與 libflutter.so 的移動(dòng)。
前期工作我們都做好了,打成aar就非常簡(jiǎn)單了
直接使用 flutter build aar --target-platform android-arm
打出來(lái)后可以解壓檢查下 libflutter.so,libapp.so 是否都在armeabi文件夾下即可。
說(shuō)完了armeabi適配問(wèn)題,這里下說(shuō)下有關(guān)于有關(guān)于FlutterBoost的接入。這個(gè)東西接入有兩點(diǎn)要注意。
在主app內(nèi)加上即可,常規(guī)操作,強(qiáng)制統(tǒng)一support包的版本號(hào)
注釋flutter.gradle第655行。因?yàn)榫幾g過(guò)程中,會(huì)去初始化插件項(xiàng)目的buildType下面的debug配置,而插件項(xiàng)目下并未配置debug,導(dǎo)致報(bào)錯(cuò)。
如果發(fā)現(xiàn)文章中有錯(cuò)誤或者有更好的解決方案歡迎指正留言,當(dāng)然如果本篇文章幫助你解決了問(wèn)題,也不要吝嗇你的感謝。謝謝各位。
需要在命令行操作
但是我查出來(lái)的并沒(méi)有我的包名
6.成功了,現(xiàn)在在安裝APP,就ok了
新聞標(biāo)題:flutter包沖突,flutter 包
轉(zhuǎn)載注明:http://aaarwkj.com/article26/dsieecg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、微信公眾號(hào)、網(wǎng)站收錄、定制網(wǎng)站、小程序開(kāi)發(fā)、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)