1. 程式人生 > >解決因第三方sdk,unity打包出來的apk在android 5.0以下向量圖相容問題的崩潰

解決因第三方sdk,unity打包出來的apk在android 5.0以下向量圖相容問題的崩潰

android一直以來,對往下低版本的相容做的就不好,而且工具流沒事還總變,搞起來真的是讓人禿頭
android 5.0 以後開始能使用向量圖功能了,也就是Android Vector,但是5.0以下沒這個功能呀,所以你在編譯的時候,需要增加一個編譯引數和靜態宣告來相容這個問題。
一般這個步驟是在 android studio 下面完成的,對於開發純粹的 android 專案來說,沒什麼難度,都有比較完善的解決方案。
舉例:
https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88
https://blog.csdn.net/u010335298/article/details/51840805

隨便找找就有,但是在unity裡這個問題可能就比較複雜了。
首先我們就要更改unity的BuildSystem,因為只有這樣,我們才能像android studio 一樣,使用gradle進行編譯。
這一步還是比較簡單的
這裡寫圖片描述
在playsetting裡可以直接進行切換,還有一定要選上 Gradle Template,有了這個模板,我們才能加上我們的編譯指令。
開啟模板,根據上面的文章+入我們的指令,有一點需要注意。

這裡寫圖片描述

這個標籤如果讓unity自動生成的話,它會將StreamingAssets下我們所有的資源都給+上來,這對於本地資源多的工程可能是個災難,因為這個地方看gradle原始碼,是有長度限制的,引數不能超過255個,但是好在這裡是可以用字尾名進行過濾的,所以我們可以不依賴unity,而對這裡進行手工編輯。

以上方法就可以應對大部分的第三方sdk匯入了,但是偏偏就有一些一般手段應對不了的sdk存在,就比如說我需要接入的 helpshift。
瞭解這個東西的同學肯定知道,它提供的sdk一般是這種樣子的

這裡寫圖片描述

這種東西,在unity的Internal模式下沒問題,是可以直接編譯的,但是換到 gradle下就不行了,如果是正常的android studio下沒有問題,但是unity下,helpshift的這個android子工程,是引用不到主工程底下的支援庫的包的,而且現在android支援庫的包都打包成了aar,這個東西不像以前的jar可以用路徑引用(所以有時候純自動的東西也有它不好的地方)。

最後我們將需要的支援庫,放進工程裡就ok了,26版本之後的支援庫,將不會下載到本機的android sdk目錄下了,只能是通過聯網獲得。這裡提供個網站,你可以在上面下載到自己需要的aar庫。

注意:helpshift 打包成 aar 之後,就只能用 gradle 模式進行打包了,Internal模式就徹底廢了,因為它的aar中沒有class.jar檔案,所以Internal是無法通過的(沒打成aar時它也沒有那個jar包)

相關推薦

解決第三方sdkunity打包出來的apk在android 5.0以下向量相容問題的崩潰

android一直以來,對往下低版本的相容做的就不好,而且工具流沒事還總變,搞起來真的是讓人禿頭 android 5.0 以後開始能使用向量圖功能了,也就是Android Vector,但是5.0以下沒這個功能呀,所以你在編譯的時候,需要增加一個編譯引數和靜態

FFmpeg總結(十三)用ffmpeg基於nginx實現直播功能不用第三方SDK自研推流拉流

直播app實現流程 1.採集 2.濾鏡處理 3.編碼 4.推流 5.CDN分發 6.拉流 7.解碼 8.播放 9.聊天互動 影象格式: public static final int DEPTH16 = 11444022

解決iOS第三方SDK與本地靜態庫之間重複的symbols問題

之前發表過一個第三方SDK之間重複symbols的問題,這次其中一個衝突物件換成了本地函式,因為引入的第三方(不用看,高德地圖就是你!)封裝時沒有將其特殊符號封裝起來,導致連結時產生符號重複,如下圖所示: 這裡有兩個重複的symbols,分別是_unz_c

1月28日周日更新ruby到2.5.0rvm更新。

一課 比較 全棧 body 安裝 auto 文檔 code post 在學習Array的方法的時候,發現文檔concat方法可以進行多個數組的添加,而我的不行,猜測是ruby版本沒有更新。 查詢2.31ruby版本的concat方法,果然和2.5版本的不一樣。 於是準備更

R3.4.0安裝包時報錯“需要TRUE/FALSE值的地方不可以用缺少值”需升級到R3.5.0

解決 地方 時報 bubuko 安裝 als 報錯 lse http 錯誤: 解決方案: 升級R3.5.0後,解決: R3.4.0安裝包時報錯“需要TRUE/FALSE值的地方不可以用缺少值”,需升級到R3.5.0

解決Android 5.0以下出現 java.lang.NoClassDefFoundError,找不到類

本文參考自:http://www.jianshu.com/p/8b4f711da0bb 問題的主要原因:方法數超65536限制。 由於實際開發當中的需求不斷變更,開源框架越來越多,大多都用第三方SDK,導致方法數很容易超出65536限制。出現錯誤java.lang.NoClassDe

Android app實現自更新和安裝許可權檢測適配Android6.0以下和Android6.0和Android7.0和Android8.0總結篇

首先下載問檔案需要在AndroidManifest.xml裡新增SD卡讀寫許可權,下面兩個許可權:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <us

CardView解決5.0以下出現padding問題

app:cardBackgroundColor="@color/white" app:cardMaxElevation="0px" app:cardElevation="0dp" app:cardUseCompatPadding="false"

Maven中指定預設的JDK版本(若不指定則預設的為5.0

maven中jdk的配置分為全域性配置和區域性配置兩種方式。   全域性配置    全域性配置是指在${MAVEN_HOME}\conf\settings.xml中進行配置,注${MAVEN_HOME}指的是maven的安裝目錄。例如,要配置jdk1.8,開啟settings

Android studio 出現java.lang.NoClassDefFoundError錯誤的一種解決方案 5.0以下機型無法執行應用報錯

在重構中,添加了一些第三方類庫,使得整個Android程式的方法數超出了65535,這個時候打包時應該出現下面這個錯誤 Process: com.youzhiapp.cityonhand, PID: 13155 java.lang.NoClassDefFoundError:

小米紅米手機android 6.0以下 許可權管理

紅米小米等手機在android6.0以下加了許可權管理,用android自身帶的checkpermisson方法時,永遠返回true,因此在獲取許可權為true時,加入判斷錄音許可權: Log.e("MainActivity", "onPermissionGranted");

解決Android 5.0以下出現 java.lang.NoClassDefFoundError

作者:時之沙問題的主要原因:方法數超65536限制。測試6.0手機沒問題,4.4上面就有問題了。導致出現以上錯誤崩潰。解決方法:一、配置build.gradle android { compileSdkVersion 25 buildToolsVersion

【故障公告】部落格站點再次出現故障最終回退 .NET 5.0 恢復正常

自從部落格系統升級 .NET 5.0 之後遇到的詭異故障(一、二、三、四),今天它又出現了,就在前天剛剛故障之後, 就在昨天 .NET 5.0 正式版剛剛釋出之後,出現了。 今天晚上(11月12日)我們在 19:30 左右進行了一次釋出,釋出後特地進行了觀察,當時沒有出現故障,滿以為這次釋出相安無事,但後來還

Unity 下整合第三方原生 SDK以極光廠商通道為例

Unity中整合三方SDK有兩種方式: Unity 專案開發中時常有整合 Android 第三方 SDK 的需求,比如接入第三方推送,分享等功能。而第三方 SDK 的整合文件提到的往往是基於原生 Android 專案整合。 第一種 匯出 gradle 專案進行整合 匯出 gradle 專案的方式可以直接

Unity中加入第三方庫(如FB SDK)後打包異常:targetSdkVersion='23'> but library uses targetSdkVersion='25'

Unity中加入第三方庫(如FB SDK)後編APK時出現異常: Warning: [Temp\StagingArea\AndroidManifest-main.xml:12,D:\h5\UnityProjects\Test\AARTest\Temp\StagingArea

Unity第三方SDK時遇到的坑

log over err you tail 官方 銀聯 string 渲染 1、大部分SDK的方法需要在線程中執行,一般會放在主線程裏執行,安卓中主線程一般用於UI渲染。 this.runOnUiThread(new Runnable() {

Python 在 Windows 下安裝第三方報 Python 未註冊的問題解決

fix another clas gpo necessary sof 安裝 soft war 保存一些代碼為 reg.py,運行之即可。 #/usr/bin/env python # -*- coding: utf-8 -*- import sys

Unity 使用C/C++ 跨平臺終極解決方式(PCiOSAndroid以及支持C/C++的平臺)

log initial ava open tis called 文章 sharp strong PC的事實上根本不用說,畢竟C#和C++交互的文章已經夠多了,當然我

Unity 使用C/C++ 跨平臺終極解決方案(PCiOSAndroid以及支持C/C++的平臺)

細節 -h comment 個人 tle lan source 多說 sharp https://blog.csdn.net/fg5823820/article/details/47865741 PC的其實根本不用說,畢竟C#和C++交互的文章已經夠多了,當然我自認為經過幾

unity配置Android SDK並構建導出apk格式

編寫 com setting 完成 格式 ces .org edit http 1.點擊 Edit --> preferences出現如圖界面 2.在Android中SDK選項中放入Android SDK;JDK選項中放入Java JDK。(下載地址:ht