android 引入其他类库导致的各种坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 引入其他类库导致的各种坑相关的知识,希望对你有一定的参考价值。

参考技术A more than one file was found with os independent path androidsupportmultidexversion.txt
因为项目新引入的类库里面有androidx.multidex:multidex:2.0.0包和项目中 com.android.support:multidex:1.0.3冲突。
在网上翻来翻去,说是在manifest文件中application节点下添加
tools:replace="android:appComponentFactory"
android:appComponentFactory="any string"这两句
又有了新的错误,多处重复包体版本错误。说是在gradle.properties文件整天价这两句话
android.enableR8.libraries=false
android.enableR8=false
android.useAndroidX=true
android.enableJetifier=true
最后还是各种报错,提示androidx库与现有的冲突。
使用命令:gradlew :app:dependencies 查看哪些包冲突
其实这个是因为androidx与android support库不能兼容导致的问题。
最后的解决方案就是 https://www.jianshu.com/p/f7a7a8765294?tdsourcetag=s_pctim_aiomsg ,将项目构建成androidx库兼容。
把兼容的文件改完,以为一切搞定。结果,又报错Invoke customs are only supported starting with 0 --min api 26,这个就在app的build.gradle文件中android下面添加
android
compileOptions
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8

Unity 发布到IOS,Android的各种坑

Unity 发布到IOS的注意事项1.开发环境
MAC环境:Xcode环境 7.2.1
Unity环境:Unity5.3
2.基本说明
首先,我说一下,这是我在对Unity发布到IOS的实际使用中,总结出来的经验!如果你想一次就发布成功,如果你想少走弯路,请仔细看我的说明。因为坑比较多!
由于Unity发布到IOS,是以Xcode工程的形式发布到MAC中,所以,在发布的时候需要注意以下几点:
1. 发布的工程,需要以真机进行调试
(我发布的时候,选择发布unity到模拟器版本,发布后无法用模拟器运行)
2. Unity发布真机:Build Settings->Player Settings->Other Settings->SDKVersion 选择真机(不知道是哪个,可以有道翻译一下)
3. Build Settings->Player Settings->Other Settings->ScriptingBackend 选择IL2CPP支持64位
4. Build Settings->Player Settings->Other Settings->TargetDevice(这个如果只支持Iphone就选择只有Iphone,如果支持Ipad,则发布到Itunes的时候,需要提交Ipad的相关信息如ipad截图等。否则无法上线)
5. Build Settings->Player Settings->OtherSettings->Optmization->Api Compatibility Level 如果使用了文件一系列的操作,选择.NET 2.0
6. Build Settings->Player Settings->Company Name 与Product Name的名字不要胡写,审核不通过不要抱怨!!!!
7. Build Settings->Player Settings->Other Settings->BundleIdentifier不要胡写,审核不通过不要抱怨!!!!
8. 发布前,注意需要把ICON与Splash Image设置好。要不发布后,还得重新发布,很麻烦。(Build Settings->Player Settings->Default Icon也要设置好)
发布到IOS中后,是一个Xcode工程!
现在,发布完成后,我们需要注意:
1. 这个程序只有真机可以调试。(如果发布为模拟器版本,那么在模拟器下应该是无法运行的)
2. 如果发布为模拟器版本,则该工程无法在真机上运行!
3. 如果没有开发者账号的童鞋,此刻可以百度(Xcode7 无证书真机调试)按照其中的方法,真机调试Unity程序
4. 如果有开发者账号的童鞋,可以在苹果开发者平台,导出真机调试证书进行真机调试
证书有很多,需要注意:
真机调试证书 (下载证书的时候,需要把测试设备的UDID加入进去)
沙盒测试证书 (该证书沙盒测试测试成功,至于是否可以提交审核上线,没测试)
发布证书(该证书用于上线)
其中每个证书都不一样,需要注意的就是,一个证书,请在自己电脑下申请一个钥匙串再上传生成证书。不要一个钥匙串生成很多证书。
如何生成证书,以及如何使用,百度一下具体的操作。这里只讲坑!!!!
坑1:有些童鞋的证书,生成后,下载到电脑里就是过期的,那么请点击一下系统跟证书,其中有一个系统证书是过期的,这是因为苹果在2016年2月份以后,需要所有的设备都支持64位系统,所以,如果你的电脑只有一个这个过期的证书,那么百度这个证书名字,下载新的证书。 如果你电脑有两个相同的证书,一个过期,一个没过期,那么直接删除那个过期的证书。这个证书的名字是:apple worldwide developer relations vertification authority
坑2:程序写完,测试完成,上传到APP Story的时候,使用 XCODE上传工程,则,显示上传成功,其实根本就没有上传成功
解决方案:使用Application Loader 打包IPA后上传。(具体方法度娘)
坑3:Unity不要使用prime31 storekit 破解版的内购插件!
原因:因为这个插件,现在网上最新的也就是2014年的。 那时候,苹果还不要求你的程序必须都支持64位系统。所以,如果你使用这个插件,沙盒测试是可以测试成功的,但是你就是提交不上去。!! 使用64位编译器编译,这个插件怎么折腾 也无法编译过去。除非你是土豪,70美金买这个付费版。那我没话说。
这里我推荐一个苹果内购插件:免费的,而且可以用。
具体下载链接:http://pan.baidu.com/s/1pLUXLGn
使用方法:将AppStore预置件拖入到场景中,在你要购买的按钮上绑定BuyBtn脚本
Iap ID 输入你内购的ID(在ITunes中添加的id) ObjName (购买成功后通知的物体名)
Fun Name(购买成功要通知的方法) 其实这就是一个SendMessage
看到这里,你还要注意:
发布到Xcode后,使用这个插件还是无法编译通过? 为什么呢 因为这个插件是使用的手动ARC释放,不是使用苹果的自动ARC释放,所以,你需要在Xcode中设置这个插件中的类为不使用ARC释放
这里需要注意:只对3个文件不使用ARC 如果你对整个工程都不使用ARC,那么,这个程序直接崩溃
在Xcode中 选择项目的Tagets->选中BuildPhases,在Complie Sources中选择SKProduct LocalizedPrice 与InAppPurchaseManager双击他们,在后方输入-fno-objc-arc(如果找不到这个文件可以手动将这两个文件添加进Complie Sources,或者直接编译,不成功后,这里就出现这两个文件了)

内购测试:
坑1:一定要填写好银行信息,才能内购测试,否则,无法测试 银行信息需要咨询银行你的联行号!
坑2:你的信用卡 包括你购买开发者账号,在中国,必须是双币种信用卡,全币种的不能付费与收款
坑3:内购添加沙盒测试账号!(土豪请无视)
发布注意:
隐私政策网址:百度文库找一篇然后输入连接就可以
公司网址:填写你个人博客的地址就可以
UnityADS广告:
这东西吧,你添加进来以后,就不好删了,如果添加后,输入好在unity中的ID就可以了 发布的时候,把测试按钮点击false

Unity 发布到Android的注意事项开发环境
Unity端 Unity5.3
Android端 eclipse
广告SDK:百度广告SDK
总体说明
首先,我说一下,这是我在对Unity发布到android的实际使用中,总结出来的经验!如果你想一次就发布成功,如果你想少走弯路,请仔细看我的说明。因为坑比较多!
由于Unity发布到andorid如果你不接广告,那么直接发布就可以,如果你要接其他SDK或者是广告,那么需要以google android project方式发布成android工程:
1. Build Settings->Player Settings->Other Settings->ScriptingBackend 选择Monox
2. Build Settings->Player Settings->OtherSettings->Optmization->Api Compatibility Level 如果使用了文件一系列的操作,选择.NET 2.0
3. Build Settings->Player Settings->Company Name 与Product Name的名字不要胡写,审核不通过不要抱怨.
4. Build Settings->Player Settings->Other Settings->BundleIdentifier不要胡写,审核不通过不要抱怨.
5. 发布前,注意需要把ICON与Splash Image设置好。要不发布后,还得重新发布,很麻烦。(Build Settings->Player Settings->Default Icon也要设置好)
6. Build Settings->Player Settings->PublishingSettings->Keystore设置好,不设置的话是debug模式,很多平台无法发布。当然,也可以在eclipse中进行包签名
7. 64为的unity好像无法设置Splash Image 当然也有可能是我机器的问题
8. 广告啊,付费什么的,不要使用第三方 unity包.(因为第三方包,打包的时候,包名与你的工程名称并不对应,你发布后,icon与splash也会无法显示,这个你需要修改AndroidManifest .xml的设置,有很大可能SDK中的功能也无法使用)
Eclipse中的坑
1.Android SDK与Andorid开发插件的版本需要一致.
如果不一致,你新建的工程,src中与res-> layout中没有文件(百度下载一致的工程文件也可以,不过需要注意不要太旧,要不与unity发布的SDK版本不对应)
2.Unity调用Android的包, 你写了一个SDK想让Unity调用,需要注意的是:打成Jar包的时候,只打src 与res文件夹! 因为5.0以后版本的unity 如果你全打包,那么会有很多.classes文件,unity是无法编译通过的
3.android的包名需要与Unity中的一致.
4.android-support-v4 需要与sdk中的一致,否则eclipse无法编译通过
5. 注意第三方SDK:
这点需要特别说明,我第一次调用百度SDK的时候,广告都介入完毕,怎么都调用不出来。起初我还怀疑是UnityPlayerActivity修改了Activity的方法,所以无法调用。后来仔细观察,发现百度的Demo中,将显示广告的方法写在了 Print Log方法中,特别的坑。所以大家需要注意!
6. 360平台你必须使用它的广告SDK,而且还不能带其他广告的SDK.包括ADS,ADS关闭很麻烦,需要删除编译器中的ads模块 unity也是坑
7. Unity有可能出毛病,有时候,你总发布,总发布不过去,你重启下unity就能发布过去。很坑.

 











































































以上是关于android 引入其他类库导致的各种坑的主要内容,如果未能解决你的问题,请参考以下文章

Hutool 国产工具类库

Android将Library上传到jcenter超简单完整步骤以及遇到的各种坑

Thinkphp 5 怎么在控制器引入thinkphp\vendor 的第三方扩展

android studio 引入第三方类库jar包

TP5 中引入第三方类库

Thinkphp引入第三方类库常见问题