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



我正试图使一个phonegap插件打开一个活动,通过android的videoView播放视频(因为让我们面对它android的webview不能播放html视频)。我得到了一切工作,但我必须包括从phonegap的包R.java到我的插件工作/构建和消除"R不能被解决为一个变量"的错误。

我的插件是在https://github.com/mikeRead/videoview,如果你读"重要!"部分,你可以找到我要做什么来修复R…问题。

基本上,用户必须将我的插件中的import语句更改为他们的phonegap包名,这样R.id和r.g layout就可以工作了。

我是一名web开发人员,到目前为止还不是android或手机gap编码器,所以任何关于这方面的帮助/提示(除了eclipse修复)都是欢迎的

谢谢!

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

#!/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;nnimport "+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导入时,代码将被执行

最新更新