提交 Android build 后出现 Flurry CN1Lib 错误

Flurry CN1Lib error after submitting Android build

我收到错误“原因:org.gradle.process.internal.ExecException:进程 'command '/home/ec2-user/jdk1.8.0_45/bin/java” “在提交 Android 构建请求时以非零退出值 2 完成。

我怀疑它与 Flurry CN1Lib

有关
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':transformClassesWithDexForRelease'.

Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.android.dx.command.Main with arguments {--dex --verbose --force-jumbo --num-threads=4 --output 

Flurry cn1lib 需要更新以使用较新的 Android API 级别 28 作为我们当前的默认位置。从长远来看,这是正确的做法。

作为短期补丁,您可以定义:android.playServicesVersion=8.3.0 在构建提示中解决此问题。请注意,这可能会影响您的应用程序的功能,例如定位服务支持等。

好吧,我终于设法解决了这个问题。我只对让分析位起作用感兴趣,但我相信广告也应该起作用。这是我的做法:

  1. Cloned/downloaded 来自 GitHub 的当前 CN1Flurry 项目 https://github.com/chen-fishbein/flurry-codenameone。这使我能够访问源文件并将其用作参考。
  2. 按原样将项目导入我的 Netbeans 会带来一些 'resolve project' 问题,所以我继续创建一个名称和 package/class 结构与 CN1Flurry 相似的新项目,然后复制 classes 从旧项目到新项目。
  3. 打开 FlurryNative class 并删除 onPageView()setLogEvents()setCrashReportingEnabled(),因为当前不支持这些乱舞 Android SDK。完成后,右键单击 FlurryNative class 并选择 'Generate Native Access'。这将允许您在项目的 'native' 文件夹中为 Android、iOS、Windows 等创建本机实现。

  4. Chen的项目使用Flurry SDKs 5.3.0版本,推荐SDK版本为12.1.0。从您的 Flurry 门户网站的 'Admin' 部分下载最新的 aar 文件,并将它们复制到 'android' 文件夹。对我来说,这些是 flurryAds_12.1.0.aarflurryAnalytics_12.1.0.aar

  5. 切换到您的 Netbeans 项目的 Files 视图并打开 FlurryNativeImpl class。您可以从 Chen 的项目中复制大部分实现,您唯一需要更改的是 initFlurry() 方法 - new FlurryAgent.Builder().build(AndroidNativeUtil.getActivity(), apiKey); Flurry 在新 SDK 中的初始化方式不同 - https://developer.yahoo.com/flurry/docs/integrateflurry/android/

  6. 就是这样。切换回 'Projects' 视图,然后清理并构建您的 CN1Flurry 项目以生成 .cn1lib 文件,然后您可以将其添加到 'libs' 文件夹中的 UI 项目。记得刷新cn1Libs文件

最后,将以下构建提示添加到您的 UI 项目中:

android.min_sdk_version=16
android.multidex=true
android.xapplication=\<activity android:name="com.flurry.android.FlurryFullscreenTakeoverActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"> \</activity>

Chen 建议添加大量其他构建提示,但我发现它们对我的情况没有用。

仍在学习 GitHub 的工作原理;一旦我感到舒服,就会提出拉取请求。同时,您可以在此处获取整个项目 - https://drive.google.com/open?id=1GGygaVelmMhMUX9Deik9W72hXkw_detG