java - 将 phonegap 的 R.java 导入我的插件?

标签 java android cordova r.java-file

我正在尝试制作一个 phonegap 插件来打开一个 Activity 以通过 android 的 videoView 播放视频(因为让我们面对它 android 的 webview 无法播放 html 视频)。我的一切正常,但我必须将 phonegap 包中的 R.java 包含到我的包中,以便我的插件工作/构建并消除“R 无法解析为变量”错误。

我的插件在 https://github.com/mikeRead/videoview如果你读到“重要!”部分你可以找到我必须做些什么来解决 R... 问题。

基本上用户必须将我的插件中的导入语句更改为他们的 phonegap 包名称,因此 R.id 和 R.layout 可以工作。

我是一名 Web 开发人员,目前还不是 Android 或手机差距编码人员,因此欢迎提供任何帮助/提示(除了 eclipse 修复)

谢谢!

最佳答案

您问题中描述的问题可以通过添加 after_plugin_install 来解决。 hook到你的插件。我已经编写了一个钩子(Hook)来修改我的名为 SketchActivity.java 的 Activity 。如下所示。根据需要将包名称更改为您的插件。

#!/usr/bin/env node
/*
A hook to add R.java to the draw activiy in Android platform.
*/


var fs = require('fs');
var path = require('path');

var rootdir = process.argv[2];

function replace_string_in_file(filename, to_replace, replace_with) {
    var data = fs.readFileSync(filename, 'utf8');
    var result = data.replace(to_replace, replace_with);
    fs.writeFileSync(filename, result, 'utf8');
}

var target = "stage";
if (process.env.TARGET) {
    target = process.env.TARGET;
}

    var ourconfigfile = path.join( "plugins", "android.json");
    var configobj = JSON.parse(fs.readFileSync(ourconfigfile, 'utf8'));
  // Add java files where you want to add R.java imports in the following array

    var filestoreplace = [
        "platforms/android/src/in/co/geekninja/plugin/SketchActivity.java"
    ];
    filestoreplace.forEach(function(val, index, array) {
        if (fs.existsSync(val)) {
          console.log("Android platform available !");
          //Getting the package name from the android.json file,replace with your plugin's id
          var packageName = configobj.installed_plugins["in.co.geekninja.Draw"]["PACKAGE_NAME"];
          console.log("With the package name: "+packageName);
          console.log("Adding import for R.java");
            replace_string_in_file(val,"package in.co.geekninja.plugin;","package in.co.geekninja.plugin;\n\nimport "+packageName+".R;");

        } else {
            console.log("No android platform found! :(");
        }
    });

把它放在/hooks/after_plugin_install/里面插件中的目录 并在您的 <platform name="android"> ... </platform> 之间添加以下行标签:

<hook type="after_plugin_install" src="hooks/after_plugin_install/hook-add-r-import.js" />

每次有人使用 cordova plugin add 添加插件时,代码都会执行命令并写入 R.java在包声明下方导入

关于java - 将 phonegap 的 R.java 导入我的插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24227029/

相关文章:

java - 如何计算用户从 5 个组合框中选择的项目的总成本

java - 带纹理的 VBO,没有弃用的功能

Android通过单击按钮更改Imageview

java - CollapsingToolbarLayout 海拔不工作和锚定 FloatingActionButton 不返回

android - startForeground() 导致 Cordova 出现问题

android - 使用 Cordova 检测 Android 设备上的来电

java - 校对本地化 ASC 代表什么?

c# - Java 和 C# 中的内存管理有何不同?

android - 将图像上传到 Amazon S3

ios - 在iOS下使用InAppBrowser打开本地文件不起作用